Skip to main content

A command-line tool for bootstrapping web applications based on the STRUDEL Design System

Project description

:warning: This library is in early-stage development. Check back soon for more updates!

STRUDEL Command-Line Interface (Beta)

The strudel-cli is a command-line tool for bootstrapping web applications based on the STRUDEL Design System.

How it Works

  1. Configure your app with a simple JSON configuration.
  2. Generate a base web app built with the STRUDEL stack and STRUDEL design system.
  3. Add task flows to your app using the STRUDEL task flow templates.
  4. Dive into the code and start customizing. After generating your app you are in full control.

The Stack

The strudel-cli generates your app using a pre-defined stack based on principles from the STRUDEL Design System.

User Quickstart

Prequisites

Node.js and NPM must be installed to run the web applications you generate with strudel-cli. To check if you already have Node.js and NPM installed, open a terminal and run:

node --version
npm --version

If both commands return a version number, you should be good to go. If not, you can download both tools together here: https://nodejs.org/en/download

Get Started

Install the STRUDEL CLI tool:

pip install strudel-cli

Create a config file based on the create-app config json:

my-app-config.json

{
  "name": "my-strudel-app",
  "appTitle": "My Science App"
}

Create a base app:

strudel create-app --config my-app-config.json

Create a config file for a new task flow based on one of the config examples:

my-taskflow-config.json

{
  "name": "my-taskflow",
  "template": "compare-data",
  "compareItem": "scenario",
  "compareItemPlural": "scenarios",
  "mainPageTitle": "Compare Data App",
  "mainPageDescription": "Description of this app section",
  "newItemPageTitle": "Compare Data App",
  "newItemPageDescription": "Description of this app section",
  "comparePageDescription": "Description of this app section"
}

Go to the root directory of your new app:

cd my-app

Add the task flow to your app:

strudel add-taskflow --config ../my-taskflow-config.json

Install dependencies and start your app.

npm install
npm start

Open http://localhost:3000 to view the app in the browser.

Didn't work? Make sure you have installed NPM and Node.JS.

Commands

strudel create-app

Creates the base scaffolding for a web app based on the STRUDEL design system.

strudel create-app <app-name> [OPTIONS]

Arguments

  • <app-name>: Name to use for the app's root directory (e.g. my-app). Must be a valid directory name. [required]

Options

  • --config, -c: JSON configuration file to use to build the base app. See CONFIGS.md for how to format this file. If not supplied, you will be prompted on the command-line to give configuration values.
  • --output-dir, -o: Path to the directory where the app should be created. Defaults to current directory.
  • --branch, -b: Branch in strudel-kit repo that should be used for the templates. Defaults to main. This option is primarily for use by contributors.

strudel add-taskflow

Adds a new task flow to an existing strudel app. Give the task flow a name and choose one of the strudel task flow templates to base your section on.

strudel add-taskflow <taskflow-name> --template <taskflow-template> [OPTIONS]

Arguments

  • <taskflow-name>: Name to use for the task flow's root directory (e.g. my-taskflow). Must be a valid directory name. [required]

Options

  • --template, -t: Name of the strudel task flow template to use to scaffold the task flow. [required]
    • Available options: compare-data, contribute-data, explore-data, monitor-activities, run-computation, search-data-repositories
  • --config, -c: JSON configuration file to use to build the task flow. See CONFIGS.md for how to format this file. If not supplied, you will be prompted on the command-line to give configuration values.
  • --output-dir, -o: Path to the directory where the task flow should be created. Defaults to src/apps.
  • --branch, -b: Branch in strudel-kit repo that should be used for the templates. Defaults to main. This option is primarily for use by contributors.

Developer Quickstart

Install

Clone the strudel-kit repo:

git clone git@github.com:strudel-science/strudel-kit.git

Navigate to the strudel-cli package of the strudel-kit repo:

cd strudel-kit/strudel-cli

(Recommended) Create a new conda environment or venv with python 3.9.6+ and activate it:

conda create strudel-env python=3.9
conda activate strudel-env

Install the package in editable mode:

pip install -e .

Run the strudel commands:

strudel create-app <app-name> [OPTIONS]

Testing

From the strudel-cli directory, run:

pytest

All the tests live in strudel-cli/tests

Publishing

1. Authenticate with PyPi

In order to publish, you will have to authenticate with pypi and your account must have permission to administer the strudel-cli package on pypi.

2. Build a distrubtable package

rm -rf dist && python -m build

This will generate .whl and .tar.gz files in the dist/ folder.

3. Upload to (Test)PyPi

python -m twine upload --repository pypi dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

strudel_cli-0.1.0.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

strudel_cli-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file strudel_cli-0.1.0.tar.gz.

File metadata

  • Download URL: strudel_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.6

File hashes

Hashes for strudel_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1b2261c001ef78ff1e8ce6e76381843725ab3bf04937a6b280effa8fa3c42e3f
MD5 a073f66cf63cf0ae03c891b0db6c04cc
BLAKE2b-256 3ba9e8d4f3f3564bafec48336d207b85330d96a58f702f0148e5edfed59ad3b5

See more details on using hashes here.

File details

Details for the file strudel_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: strudel_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.6

File hashes

Hashes for strudel_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dbb7d8bc29067209edb26f61de4f1ffe3fccf88400cca4f71797a5dfab7484b9
MD5 2adeff1b905a8e97aad2fd1bc457b6bd
BLAKE2b-256 03e5f7519785b17814c4b6f27e3891f70965f54107d242f7565d411e2786a659

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page