node package manager

lilypad

lilypad

CircleCI JavaScript Style Guide

Project Structure

Lilypad Apps and Ecosystem

因为我们要做闭环,要做生态

Deployment

The build is on DockerHub

docker pull mada/lilypad

and also on DaoCloud:

docker pull daocloud.io/madadata/lilypad

Concepts

.
└── Group
  └── Board
      └── Card
          ├── ChartCard
          ├── MetricCard
          └── SortingTableCard
  • Group: a collections of Board -> sections in Domo, page in Domo.
  • Board: a placeholder for collections of Card -> sub-page in Domo.
  • Card: a displaying unit. -> card in Domo.

Naming Conventions

  • Card: Name${CardName}

How to Start

development

  1. Webpack first
  2. start all the docker services
  • export aws env variables
export AWS_SECRET_ACCESS_KEY='any_value_is_ok'
export AWS_ACCESS_KEY_ID='any_value_is_ok'
  • export douban env variables
export CALLBACK_URL_PREFIX='http://127.0.0.1:3000/third-party/callback'
export DOUBAN_CLIENT_ID='douban client id'
export DOUBAN_CLIENT_SECRET='douban client secret'
  • login docker first (your docker user id should in mada), ask for permission if not so
  • run lilypad_start.sh
./lilypad_start.sh
# in case the final cmd in lilypad_start.sh failed, just run it again a few seconds later. 
 
yarn
 
npm run build
  1. start lilypad
npm start

app development

make sure you have followed the instructions in development section. Then just do

./lilypad_app_start.sh

production

In production, fake-leancloud-auth are replaced by real leancloud service. Therefore, you have to provide leancloud appId and appKey through environment variables -

npm run build
LEANCLOUD_APP_ID=your_app_id LEANCLOUD_APP_KEY=your_app_key npm run start:prod

docker build

Environment Variables

name description example
LEANCLOUD_APP_KEY app key of LeanCloud app wm03Mel0UCyNr2rkjd2OVmjW
LEANCLOUD_APP_ID app id of LeanCloud app khFeY6fqCpsEvb4kI4RAJ7HU-gzGzoHsz
LEANCLOUD_URL LeanCloud url https://api.leancloud.cn
TURBINE_URL turbine url http://turbine:8080
BEETLE_URL beetle url http://beetle:8080
REDIS_URL redis url redis://redis:6379
docker build -t lilypad .
docker run -d -p 3000:3000 \
  -e LEANCLOUD_APP_KEY=YOUR_LEANCLOUD_APP_KEY \
  -e LEANCLOUD_APP_ID=YOUR_LEANCLOUD_APP_ID \
  lilypad

API

Mount Point

All api services provided will be mounted on /api. Only request with valid basic authorization field is allowed.

  • /card

    • GET: query list of cards
    • POST: create single card
      • body: graphQL
  • /card/:id

    • GET: query single card
    • POST: update single card // not implemented yet
  • /board

    • GET: query list of boards
    • POST: create single board
      • body: graphQL
  • /board/:id

    • GET: query single board
    • POST: create single board
      • body: graphQL
  • /data-set

    • GET: query list of datasets
    • POST: create single dataset
      • body: graphQL
  • /data-set/:id

    • GET: query single dataset
  • /account

    • GET: query list of accounts
    • POST: create single account
      • body: graphQL
  • /account/:id

    • GET: query single account
    • POST: update single account // not implemented yet
  • /data

    • POST: upload csv data
      • query: dataSetIds[, type]
      • form: multiparty-formdata
    • GET: query data by data accessor or sql
      • query: type, (dataAccessor | query)
  • /etl/sync

    • GET: sync dataset
  • /connectors

    • GET: query list of connectors
  • /:connector/tables

    • GET: query list of tables
  • /version

    • GET: query versions of backend services