PlotPress
PlotPress is a self-hosted, markdown-first dashboard framework. Every dashboard is a folder of plain .md and .yaml files; nothing more. Charts render with Observable Plot, the frontend is Astro with islands for interactivity, and a single Go binary serves the data behind a group-scoped authorization layer.
Most BI tools store dashboards in a database, behind a UI editor. That makes them hard to review, hard to diff, hard to template, and hard to take with you. PlotPress treats a dashboard the way you’d treat any other piece of code: a folder in git, reviewed in a pull request, deployed by Flux or kubectl apply.
Pillars
Section titled “Pillars”| Pillar | What it means |
|---|---|
| Markdown-first | Prose, headings, tables, and Plot blocks live together in .md. The dashboard reads like documentation because it is documentation. |
| One folder per dashboard | Everything a dashboard needs — content, queries, config — sits in a single folder. Nothing is implicit. |
| Server-trusted SQL | Queries are named YAML in the dashboard folder. The browser never sees raw SQL or a connection string; it sees a query name and parameters. |
| Group-scoped data sources | Connections are declared centrally and bound to user groups. A dashboard can only run a query against a connection its viewer is allowed to use. |
| Self-hosted by default | Single Go binary + SQLite. Deploy with docker run or the Helm chart. Postgres support is on the roadmap when multi-replica becomes a need. |
Stack at a glance
Section titled “Stack at a glance”| Layer | Choice | Notes |
|---|---|---|
| Frontend | Astro + Observable Plot | Static-rendered pages with Plot in client islands; near-zero JS on read-only views. |
| Backend | Go | Single static binary; HTTP API for query execution and auth. |
| Metadata store | SQLite (default) | Users, groups, sessions, audit log. Postgres planned. |
| Data sources | Pluggable | Postgres, MySQL, ClickHouse, DuckDB, SQLite. Each connection is opt-in per group. |
| Deployment | Docker / Helm | Single image; chart shipped from this repo. |
Where to next
Section titled “Where to next”- Concepts → Architecture — how the pieces fit together.
- Concepts → Authorization — users, groups, connections.
- Authoring → Dashboard folder layout — the convention this whole tool is built around.
- Reference →
dashboard.yaml— every field you can set. - Deployment → Docker and Helm — how to run it.