Skip to main content

dash-init

Project generator for Plotly Dash: one command to a running app.

pip install dash-init
dash-init create my-dashboard
cd my-dashboard
pip install -r requirements.txt     # or: uv sync
python app.py                       # or: uv run app.py

You get a working, current Dash app with a callback, a chart, an assets/ folder, a README, requirements.txt + pyproject.toml, and a .gitignore. Not a throwaway "hello world" example, but the structure you'd have written yourself.

my-dashboard/
├── app.py              # layout + callback, exposes server for deployment
├── assets/
│   └── custom.css      # custom styling
├── requirements.txt    # dependencies
├── pyproject.toml      # project metadata and dependencies
├── README.md           # how to run and deploy it
└── .gitignore

Every generated project includes a README with steps to deploy it (Plotly Cloud, any Python host, or Docker with --docker).

Generated projects target Python 3.11+ and pin current versions: dash>=4.4.1, pandas>=3.0.5, dash-bootstrap-components>=2.0.4 (bootstrap template). The dash-init tool itself runs on Python 3.9+ and has no dependencies.

Usage

dash-init create <name>                      create a project from the default (minimal) template
dash-init create .                           scaffold into the current directory (see below)
dash-init create <name> -t <template>        choose a built-in or hub template
dash-init create <name> -t gh:owner/repo/sub/dir[@ref]
                                            pull any directory on GitHub as a template
dash-init create <name> --docker             also generate a Dockerfile + .dockerignore (alias: --dockerfile)
dash-init templates                          list everything available
dash-init --version

Into an existing project

dash-init create . scaffolds into the current directory instead of making a new one. It never overwrites a file you already have, and it plays nicely with uv:

mkdir my-dashboard && cd my-dashboard
uv init
uvx dash-init create .

If a pyproject.toml is already present, dash-init leaves it alone and runs uv add "dash>=4.4.1" ... for you, so your file keeps its formatting and the dependencies land in uv.lock and your venv. Pass --no-install to print the command instead of running it. Without uv on your PATH, the commands to run are printed either way.

create <name> refuses to overwrite a non-empty directory and never installs anything: it writes files and prints the next steps. Only create . with an existing pyproject.toml runs uv add (announced first, skippable with --no-install).

Built-in templates

Name What you get
minimal Single-file app with one callback (default)
multipage Dash Pages app: app.py shell + auto-routed pages/ directory
bootstrap Sidebar + KPI cards layout with dash-bootstrap-components
csv Charts data/sample.csv; swap in your own file

These ship inside the package and need no network. Every one is generated and smoke-run in CI against current Dash.

Add --docker to any of them for a ready-to-build Dockerfile + .dockerignore (docker build -t my-dashboard . && docker run -p 8050:8050 my-dashboard).

Templates from dash-templates-hub

Full admin dashboards from budescode/dash-templates-hub are available by name and downloaded when you run create:

Name What you get
admin-dashboard General-purpose admin dashboard (light, modern)
kiaalap Education-management dashboard, 50+ pages (light, indigo)
nalika Analytics-focused dashboard (dark, professional)
purity-ui Purity UI admin dashboard port
dash-init create school -t kiaalap

What happens:

  • Only that template's files are fetched: no git clone, no full-repo tarball. Repo clutter (screenshots, notebooks, caches, lockfiles) is dropped.
  • The project name is set in pyproject.toml; a pyproject.toml (from requirements.txt) and a .gitignore are generated if the template lacks them.
  • The hub is pinned to a specific commit in src/dash_init/registry.json, and CI fetches and checks every entry, so a change in the hub cannot silently break create.
  • A failed download leaves nothing behind. Errors say whether you're offline, the path doesn't exist, or you hit GitHub's rate limit (set GITHUB_TOKEN to raise it).

Any GitHub directory works the same way, un-curated:

dash-init create demo -t gh:someone/repo/examples/my-app@v2.1

Why trust it

  • Tested against current Dash. Every template is generated and booted in CI, weekly, so if Dash breaks something you see a red build here, not in your terminal.
  • Never touches your environment. It writes files and tells you what to run. No pip install on your behalf.
  • Zero dependencies. Pure standard library, so installing it can't conflict with anything.

Roadmap

  • deploy subcommand
  • --dir option to create the project outside the current directory
  • Turn an existing app into a template (dash-init create --from-project)
  • More templates

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Connect

Prior art & credit

The template-directory approach follows the archived dash-tools by Andrew Hossack (MIT). No code was reused, but the idea that a template should be a plain folder anyone can contribute to comes from there.

License

MIT

Download files

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

Source Distribution

dash_init-0.2.0.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dash_init-0.2.0-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

File details

Details for the file dash_init-0.2.0.tar.gz.

File metadata

  • Download URL: dash_init-0.2.0.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.2

File hashes

Hashes for dash_init-0.2.0.tar.gz
Algorithm Hash digest
SHA256 62261bea72444bdae79a6107c7be1a7e6bb4e9e2a52cb2df5a855189472c4e87
MD5 e66e165c4711bdb639aefd87719a3410
BLAKE2b-256 23e1d1160891a37249c1f900fa08a1338e105da8444fac4e81330316b4f1f55a

See more details on using hashes here.

File details

Details for the file dash_init-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dash_init-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.2

File hashes

Hashes for dash_init-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ce5a98c3adc8176d6d22dbb9ea2fb75c70bc886ecd79c67379b767329d98b06
MD5 19ab3f5f2e15c8a011a69165719e83aa
BLAKE2b-256 eaa8c288524080ad1a775db5292a7f3799e44dc2176218bc7ca4e5cf44ec73e7

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.1

2 files

0.3.0

2 files

This release

0.2.0 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page