A dataflow-driven dashboard builder for Panel. Define reusable components with typed input/output ports, wire them together visually, and persist layouts to SQLite.
- Component registry with the
@registerdecorator for metadata-driven discovery - Typed ports with automatic introspection from
param.outputdecorators and Viewer params - Dataflow engine with cycle detection, type checking, single-source-per-input validation, and runtime error reporting
- SQLite persistence for dashboard layouts, edges, and tile configurations
- CLI (
flowdash serve) to launch a project directory as a full dashboard app
pip install panel-flowdashCreate a project directory with component modules:
my_project/
Analytics/
selector.py
chart.py
Define components with typed ports:
# Analytics/selector.py
from panel_flowdash import register
@register(component=True, provides=[{"key": "company", "type": "str"}])
def app(config):
import panel_material_ui as pmui
return pmui.Select(name="Company", options=["ACME", "Globex"])# Analytics/chart.py
from panel_flowdash import register
@register(component=True, requires=[{"key": "company", "type": "str"}])
def app(config):
import panel as pn
return pn.pane.Markdown(f"# Chart for {config.get('company', '...')}")Serve it:
flowdash serve my_project/Components can also be Panel Viewer subclasses. Ports are introspected automatically from params and @param.output decorators:
import param
import panel as pn
from panel_flowdash import register
@register(component=True)
class StockFilter(pn.viewable.Viewer):
ticker = param.String(default="AAPL")
@param.output(param.DataFrame)
def filtered_data(self):
...
def __panel__(self):
return pn.widgets.TextInput.from_param(self.param.ticker)flowdash serve <project-dir> [options]| Option | Description |
|---|---|
--port |
Port to serve on (default: 5006) |
--db-path |
SQLite database path (default: <project-dir>/dashboards.db) |
--title |
Browser tab title |
--dev |
Enable autoreload |
--admin |
Enable Panel admin interface |
Run flowdash serve --help for the full list.
git clone https://github.com/panel-extensions/panel-flowdash
cd panel-flowdash
pip install -e ".[dev]"
pytest testsContributions are welcome! Please fork the repository, create a feature branch, and open a pull request.