Headless CRUD Admin Over Your Database
The BifrostQL desktop app (the Desktop Navigator) is a headless CRUD admin over your database. Point it at a connection string and you get browse, search, edit, and report surfaces without writing a screen. Every pane reads the live schema at runtime, so a new column shows up on the next connect and your codebase stays free of scaffolded UI.
The workbench blends three familiar tools over your existing database:
- Access parity — saved queries from the visual designer, forms with subforms, and tabular reports.
- DBeaver parity — a CodeMirror SQL editor with schema autocomplete, a read-only ER diagram, and export everywhere.
- BI slice — a chart panel, a pivot UI, dashboards, and server-backed grid grouping.
Two foundations everything sits on
Section titled “Two foundations everything sits on”Server-side analytics. Every total, series value, pivot cell, and group header comes from a server query — the aggregate and pivot GraphQL surfaces — never from summing a fetched page in the browser. This keeps results correct on large tables and keeps tenant-isolation and soft-delete filters in force.
Saved objects. Queries, forms, reports, and dashboards persist through the
unified saved-object store — a dedicated
/_saved-objects pipeline, separate from schema metadata and from the
app-metadata overlay.
Every workbench data path routes through the editor’s useFetcher() /
QueryTransport seam, so the HTTP ↔ binary transport toggle covers all of them.
End-to-end: from a table to a dashboard
Section titled “End-to-end: from a table to a dashboard”A minimal round-trip against a sample sales database, using the panes in order:
- Design a query. In the visual query builder, pick
orders, joincustomers, choose columns and a filter, and save it as a saved query namedOpen orders. - Build a form. Point the form runner
at
orders, add anorder_linessubform bound by the foreign key, and enter or edit records with child rows. - Define a report. Create a report
over
Open ordersgrouped byregionwith asum(amount)subtotal band and grand total; print or export it. - Chart it. Click Visualize on the grid (or open the
chart panel) to bar-chart
sum(amount)byregion— the chart issues a server aggregate query, not a client sum. - Assemble a dashboard. Drop the chart, two count cards, and a table tile onto a dashboard; save it; reopen it — every tile restores and refetches its own data.
Each artifact you save is a saved object you can reopen, rename, or delete.