Skip to content

panel-extensions/panel-flowdash

Repository files navigation

panel-flowdash

CI conda-forge pypi-version python-version

A dataflow-driven dashboard builder for Panel. Define reusable components with typed input/output ports, wire them together visually, and persist layouts to SQLite.

Features

  • Component registry with the @register decorator for metadata-driven discovery
  • Typed ports with automatic introspection from param.output decorators 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

Installation

pip install panel-flowdash

Quickstart

Create 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/

Using Viewer classes

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)

CLI

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.

Development

git clone https://github.com/panel-extensions/panel-flowdash
cd panel-flowdash
pip install -e ".[dev]"
pytest tests

Contributing

Contributions are welcome! Please fork the repository, create a feature branch, and open a pull request.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages