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.
Quick Start
# Generate a Streamlit app
python -m dashml_new.cli build dashboard.dashml --target streamlit --output app_dir
streamlit run app_dir/app.py
# Generate a standalone Plotly HTML dashboard
python -m dashml_new.cli build dashboard.dashml --target plotly --output dashboard.html
# Generate an Observable Plot HTML dashboard
python -m dashml_new.cli build dashboard.dashml --target observable --output dashboard.html
# Generate a Vega-Lite JSON specification
python -m dashml_new.cli build dashboard.dashml --target vegalite --output dashboard.json
# Generate a Grafana dashboard JSON
python -m dashml_new.cli build dashboard.dashml --target grafana --output dashboard.json
# Create a dashboard directly in Apache Superset
python -m dashml_new.cli build dashboard.dashml --target superset \
--superset-user admin --superset-password admin
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.
python -m dashml_new.cli 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
version: 0.1
title: "Sales Dashboard"
style: "styles/dracula.dmls"
data:
type: csv
path: "data/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
- User Guide - Full specification reference, chart types, CLI, themes
- Architecture - System design, compiler pipeline, type system
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.2.tar.gz.
File metadata
- Download URL: dashml_lang-0.1.2.tar.gz
- Upload date:
- Size: 135.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57e3f6eeacd5f8cfffa14d8e2c6fbc36d3390e045f8208a115d182d41d54914e
|
|
| MD5 |
4f92274b356b64f07b4ceabf81f28edd
|
|
| BLAKE2b-256 |
e72d14504570550ac7f0f70405fc1abd4dd517359829a91af680a5e028f035bd
|
Provenance
The following attestation bundles were made for dashml_lang-0.1.2.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.2.tar.gz -
Subject digest:
57e3f6eeacd5f8cfffa14d8e2c6fbc36d3390e045f8208a115d182d41d54914e - Sigstore transparency entry: 1526255748
- Sigstore integration time:
-
Permalink:
dashml-dev/dashml@f8d9f5e5084564459ba38a77e9cd9c7f533ba47d -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/dashml-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f8d9f5e5084564459ba38a77e9cd9c7f533ba47d -
Trigger Event:
push
-
Statement type:
File details
Details for the file dashml_lang-0.1.2-py3-none-any.whl.
File metadata
- Download URL: dashml_lang-0.1.2-py3-none-any.whl
- Upload date:
- Size: 137.7 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 |
9ff7b4a71d349aeb0cda3c206aa6d555259f2e9e019893bfe91463c690d98b62
|
|
| MD5 |
55143ce1b928a2a4408051948efaa9e6
|
|
| BLAKE2b-256 |
4d731430462f4bf69f7e26843e99efc89f06006c081034a5856b63aac1967aba
|
Provenance
The following attestation bundles were made for dashml_lang-0.1.2-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.2-py3-none-any.whl -
Subject digest:
9ff7b4a71d349aeb0cda3c206aa6d555259f2e9e019893bfe91463c690d98b62 - Sigstore transparency entry: 1526255893
- Sigstore integration time:
-
Permalink:
dashml-dev/dashml@f8d9f5e5084564459ba38a77e9cd9c7f533ba47d -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/dashml-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f8d9f5e5084564459ba38a77e9cd9c7f533ba47d -
Trigger Event:
push
-
Statement type: