Reusable UI components for Plotly Dash apps
Project description
dashing_boards
Reusable UI components for Plotly Dash apps, distributed as a Python package.
Goals
- Keep components Python-first and easy to integrate.
- Expose a stable API with minimal assumptions about app domain data.
Why this layout
This repository follows standard Python packaging guidance:
pyproject.tomlwith PEP 621 metadatasrc/package layouttests/for pytestexamples/for runnable demos- CI workflow for tests + build
Install
python3 -m pip install dashing-boards
For local development:
python3 -m pip install -e .[dev]
Quick usage
from dash import html
from dashing_boards import TreeTableAIO, make_app
rows = [
{"id": "root", "parent_id": None, "name": "Root", "cost": 0},
{"id": "a", "parent_id": "root", "name": "Child A", "cost": 10},
{"id": "b", "parent_id": "root", "name": "Child B", "cost": 20},
]
app = make_app(__name__)
app.layout = html.Div(
TreeTableAIO(
rows=rows,
editable=True,
aggregations={"cost": "sum"},
)
)
if __name__ == "__main__":
app.run(debug=True)
make_app is a thin wrapper over dash.Dash that pre-loads the Bootstrap
stylesheet and the SortableJS library (required by KanbanBoard). Use it
in new apps; plain Dash(__name__) also works if you wire those yourself.
Development
python3 -m ruff format --check .
python3 -m pytest
python3 -m build
Examples
Each file under examples/ is a runnable Dash app demonstrating a slice of
the library. all_components_demo.py mounts every component in one page —
use it to smoke-test that components coexist without callback collisions.
python3 examples/all_components_demo.py # every component, one page
python3 examples/binding_demo.py # StaticData + TextBox/TagList
python3 examples/file_source_demo.py # Table bound to a writable CSV
python3 examples/sql_source_demo.py # Table + BarChart on SQLite
python3 examples/diagram_demo.py # all Plotly chart kinds
python3 examples/graph_demo.py # Graph + Tree (cytoscape)
python3 examples/kanban_demo.py # drag-and-drop Kanban
python3 examples/tree_table_demo.py # read-only TreeTable
python3 examples/tree_table_edit_demo.py # editable TreeTable
Component catalog
| Category | Components |
|---|---|
| Basics | TextBox, TextField, Button, Toggle, Dropdown, DatePicker, TagList |
| Tables | Table, TreeTableAIO |
| Diagrams | Diagram, BarChart, LineChart, ScatterChart, PieChart, Histogram, BoxChart, Heatmap, Sankey, Treemap |
| Graphs / Trees | Graph, Tree |
| Kanban | KanbanBoard |
| Layout | Page, Grid, Tab, Tabs, Modal, Toast, Loading |
Data sources
StaticData— hardcoded Python value.CallableDataSource— value produced by an arbitrary callable.SqlDataSource— SQLAlchemy 2.x; works with SQLite, DuckDB, Postgres, etc.FileDataSource— CSV, TSV, JSON, JSONL, YAML, Parquet, Markdown, plain text. Optional live-watch (polls mtime). Opt-in atomic writes.HttpDataSource— thin REST wrapper (httpx or urllib).
All sources share the same Store-backed architecture: each exposes a dcc.Store with a pattern-matchable id, and every component bound to that source auto-updates via MATCH callbacks.
For contributors and agents
See AGENTS.md for a map of the repo, component/data-source conventions, the DataBoundComponent pattern, and common gotchas.
Project details
Release history Release notifications | RSS feed
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 dashing_boards-0.1.0.tar.gz.
File metadata
- Download URL: dashing_boards-0.1.0.tar.gz
- Upload date:
- Size: 36.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 |
a91ddb1950012a0db46659d3c388abd127419df79e0cd69010367a293674085b
|
|
| MD5 |
9450c00c98c58d08fcc9afd7105b3a30
|
|
| BLAKE2b-256 |
e7a50fc4026ac695d3383727e47e06401298027846bdd754b89623c99453518f
|
Provenance
The following attestation bundles were made for dashing_boards-0.1.0.tar.gz:
Publisher:
publish.yaml on albinpansell/dashing-boards
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dashing_boards-0.1.0.tar.gz -
Subject digest:
a91ddb1950012a0db46659d3c388abd127419df79e0cd69010367a293674085b - Sigstore transparency entry: 1364933798
- Sigstore integration time:
-
Permalink:
albinpansell/dashing-boards@3e4951706b669da38e72128bbc8717c4cab99578 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/albinpansell
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@3e4951706b669da38e72128bbc8717c4cab99578 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dashing_boards-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dashing_boards-0.1.0-py3-none-any.whl
- Upload date:
- Size: 47.8 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 |
449fd934a1542f7331d0bbf4863d84b10367c051a2b0c8b464d0efb047570458
|
|
| MD5 |
c87c2dd76fd6215e64cabfca4ce80af3
|
|
| BLAKE2b-256 |
56b1cb67d6221642c98c2d4f8b1209b4d66392dea235d0e5061cd5ef823804e7
|
Provenance
The following attestation bundles were made for dashing_boards-0.1.0-py3-none-any.whl:
Publisher:
publish.yaml on albinpansell/dashing-boards
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dashing_boards-0.1.0-py3-none-any.whl -
Subject digest:
449fd934a1542f7331d0bbf4863d84b10367c051a2b0c8b464d0efb047570458 - Sigstore transparency entry: 1364933817
- Sigstore integration time:
-
Permalink:
albinpansell/dashing-boards@3e4951706b669da38e72128bbc8717c4cab99578 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/albinpansell
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@3e4951706b669da38e72128bbc8717c4cab99578 -
Trigger Event:
push
-
Statement type: