Declarative YAML-based compiler for data visualization dashboards. Write your dashboard once, compile to Streamlit, Plotly, Observable Plot, Apache Superset, Vega-Lite, or Grafana.
Project description
DashML
A declarative language for data visualization dashboards that compiles to multiple platforms.
Write your dashboard spec once in .dashml format, then compile it to Streamlit, Plotly, Observable Plot, Apache Superset, Vega-Lite, or Grafana.
Install
pip install dashml-lang
Or with uv for an isolated tool install:
uv tool install dashml-lang
The CLI command is dashml (the distribution name dashml-lang only matters at install time).
Quick Start
The repo includes a ready-to-build example at examples/startup_funding.dashml — a 4-page, 20-chart dashboard against real startup funding data. Clone the repo or copy those two files to try it.
# Generate a Streamlit app
dashml build examples/startup_funding.dashml --target streamlit --output app_dir
streamlit run app_dir/app.py
# Generate a standalone Plotly HTML dashboard
dashml build examples/startup_funding.dashml --target plotly --output dashboard_dir
# Generate an Observable Plot HTML dashboard
dashml build examples/startup_funding.dashml --target observable --output dashboard_dir
# Generate a Vega-Lite JSON specification
dashml build examples/startup_funding.dashml --target vegalite --output dashboard_dir
# Generate a Grafana dashboard JSON
dashml build examples/startup_funding.dashml --target grafana --output dashboard_dir
# Create a dashboard directly in Apache Superset
dashml build examples/startup_funding.dashml --target superset \
--superset-user admin --superset-password admin
For Streamlit, you'll also need the runtime extras:
pip install 'dashml-lang[streamlit]'
dashml list shows all available transformers; dashml --help shows full CLI options.
Database credentials
For SQL or BigQuery data sources, the generated artifact reads connection
parameters from environment variables at runtime — never from baked-in literals.
The generator emits .env.example, .gitignore, and SECRETS.md next to the
generated app.py. Copy .env.example to .env, fill in the values, and run.
The same artifact directory is safe to commit to a public repository.
dashml build dashboard.dashml --target plotly --output app_dir
cd app_dir
cp .env.example .env # edit .env, set DASHML_DB_PASSWORD etc.
python app.py # reads from env (or .env via python-dotenv)
See SECRETS.md in any generated SQL/BigQuery artifact for the full list of
environment variables and recommended deployment patterns (Docker, Kubernetes,
systemd, CI/CD, GCP Workload Identity).
Example spec
version: "1.0"
title: "Sales Dashboard"
style: "dracula"
data:
type: csv
path: sales.csv
charts:
- id: "sales_by_country"
type: "bar"
title: "Sales by Country"
x: "country"
y: "sales"
agg: "sum"
sort: "y"
sort_order: "desc"
limit: 10
Documentation
- Architecture — system design, compiler pipeline, type system
- Testing — running the test suite
- Quick start notes — extra command snippets
Key Concepts
- Compiler, not runtime — DashML generates standalone code; it never loads or touches your data
- Credentials never baked — generated SQL/BigQuery artifacts read database credentials from environment variables at runtime; safe to version-control
- 12 chart types — bar, line, scatter, pie, area, histogram, stacked_bar, grouped_bar, bubble, heatmap, box, geo
- 3 data sources — CSV, SQL (PostgreSQL/MySQL/SQLite), Google BigQuery
- 6 backends — Streamlit, Plotly, Observable Plot, Apache Superset, Vega-Lite, Grafana
- 6 built-in themes — Dracula, Nord, Gruvbox, Monokai, One Dark, Solarized Light
Authors
- Dawid Olejniczak
- Szymon Nowaczyk
License
MIT
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dashml_lang-0.1.3.tar.gz.
File metadata
- Download URL: dashml_lang-0.1.3.tar.gz
- Upload date:
- Size: 136.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d7b3cc30667cd4d69a99152c3c49415cfb40a33180e4f22a2d9f8596336c79f
|
|
| MD5 |
55a7df360b7bf8001b077ff3d72096ca
|
|
| BLAKE2b-256 |
c5e430d145fca61d66a0d9fbb88a30ebb8b1572083622fe62110d7e3efe5e06a
|
Provenance
The following attestation bundles were made for dashml_lang-0.1.3.tar.gz:
Publisher:
release.yml on dashml-dev/dashml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dashml_lang-0.1.3.tar.gz -
Subject digest:
4d7b3cc30667cd4d69a99152c3c49415cfb40a33180e4f22a2d9f8596336c79f - Sigstore transparency entry: 1526523921
- Sigstore integration time:
-
Permalink:
dashml-dev/dashml@2d8e05405f9e0f161461533d22f81fb42553af3a -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/dashml-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2d8e05405f9e0f161461533d22f81fb42553af3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file dashml_lang-0.1.3-py3-none-any.whl.
File metadata
- Download URL: dashml_lang-0.1.3-py3-none-any.whl
- Upload date:
- Size: 140.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92cc6284608d3ffc5cfbe556a19ad6591b0f2c9116e27c6228317532e2134325
|
|
| MD5 |
c588a8ebd1f3c42d1a160443e046ceb5
|
|
| BLAKE2b-256 |
de60bc2e0110eb9d04645dc61d01c09aed2ade7c888c65c58d069fcdcadb02a7
|
Provenance
The following attestation bundles were made for dashml_lang-0.1.3-py3-none-any.whl:
Publisher:
release.yml on dashml-dev/dashml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dashml_lang-0.1.3-py3-none-any.whl -
Subject digest:
92cc6284608d3ffc5cfbe556a19ad6591b0f2c9116e27c6228317532e2134325 - Sigstore transparency entry: 1526523990
- Sigstore integration time:
-
Permalink:
dashml-dev/dashml@2d8e05405f9e0f161461533d22f81fb42553af3a -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/dashml-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2d8e05405f9e0f161461533d22f81fb42553af3a -
Trigger Event:
push
-
Statement type: