Skip to main content

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.toml with PEP 621 metadata
  • src/ package layout
  • tests/ for pytest
  • examples/ 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


Download files

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

Source Distribution

dashing_boards-0.1.0.tar.gz (36.3 kB view details)

Uploaded Source

Built Distribution

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

dashing_boards-0.1.0-py3-none-any.whl (47.8 kB view details)

Uploaded Python 3

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

Hashes for dashing_boards-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a91ddb1950012a0db46659d3c388abd127419df79e0cd69010367a293674085b
MD5 9450c00c98c58d08fcc9afd7105b3a30
BLAKE2b-256 e7a50fc4026ac695d3383727e47e06401298027846bdd754b89623c99453518f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dashing_boards-0.1.0.tar.gz:

Publisher: publish.yaml on albinpansell/dashing-boards

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for dashing_boards-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 449fd934a1542f7331d0bbf4863d84b10367c051a2b0c8b464d0efb047570458
MD5 c87c2dd76fd6215e64cabfca4ce80af3
BLAKE2b-256 56b1cb67d6221642c98c2d4f8b1209b4d66392dea235d0e5061cd5ef823804e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for dashing_boards-0.1.0-py3-none-any.whl:

Publisher: publish.yaml on albinpansell/dashing-boards

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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