DashForge¶
A JSON-first dashboard framework that starts simple with static hosting and grows into a full Metabase-like analytics platform with an AI-powered visual builder.
Why DashForge?¶
- Visual Dashboard Builder - Drag-and-drop editor optimized for both humans and LLM agents
- Saved Questions - Metabase-style GrokifyQL questions that can be run, formatted, exported, and reused across dashboards
- JSON IR First - Dashboards are defined in a non-polymorphic, AI-friendly JSON format that's easy to generate, validate, and version control
- Cube.js Semantic Layer - Business-friendly queries with pre-built relationships and AI context
- Static to Dynamic - Start with static file hosting (GitHub Pages), graduate to a full PostgreSQL-backed server when you need it
- Multi-tenant Ready - Built-in Row Level Security for SaaS deployments
- SSO Authentication - GitHub and Google OAuth out of the box
- ChartIR Integration - Uses echartify for declarative chart definitions
Three Modes of Operation¶
Builder Mode¶
Visual drag-and-drop dashboard creation:
- 12-column responsive grid layout
- Widget palette with charts, metrics, tables, and text
- Real-time chart preview with ECharts
- Cube.js query builder for semantic queries
- AI-powered widget generation from natural language
- Question builder with formatted SQL display, edit mode, results preview, CSV/XLSX export, and field value browsing
cd builder && npm install && npm run build && cd ..
./dashforge-server serve --port 8080
open http://localhost:8080/builder/
Static Mode¶
Perfect for:
- Documentation sites
- GitHub Pages hosting
- Simple data visualization
- No backend required
The viewer includes a light/dark theme toggle in the header (persisted via localStorage, defaulting to the OS's prefers-color-scheme) and formats numeric values — including a "currency" metric format — to at most 2 decimal places in tooltips, axis labels, and metric tiles.
Server Mode¶
Full-featured analytics platform with:
- PostgreSQL data sources
- User authentication (OAuth)
- Multi-tenant isolation
- Dashboard CRUD API
- Saved Questions
- Optional OmniAgent marketplace integration for reusable analytics agents
Quick Links¶
- Getting Started - Installation and first dashboard
- Dashboard Builder - Visual editor guide
- Cube.js Integration - Semantic data layer
- AI Features - LLM-powered generation
- Agent Integration - OmniAgent marketplace boundary and DashForge capabilities
- Dashboard IR - JSON schema reference
- Server Configuration - Running the server
- API Reference - REST API documentation
Architecture Overview¶
┌──────────────────────────────────────────────────────────────────┐
│ DashForge │
├──────────────────────────────────────────────────────────────────┤
│ Builder Mode │ Static Mode │ Server Mode │
│ ──────────── │ ─────────── │ ─────────── │
│ /builder/ │ viewer/ │ dashforge-server │
│ React + TypeScript │ index.html │ PostgreSQL + Ent │
│ Questions + dashboards │ JSON files │ OAuth │
│ AI generation │ GitHub Pages │ Multi-tenant RLS │
├──────────────────────────────────────────────────────────────────┤
│ Dashboard IR (JSON) │
│ ChartIR (echartify) │
│ Cube.js Semantic Layer │
└──────────────────────────────────────────────────────────────────┘
AI-First Design¶
DashForge is designed from the ground up to work seamlessly with LLM agents:
- Non-polymorphic JSON - Dashboard IR uses flat structures without
oneOf/anyOf, making it easy for AI to generate valid configurations - Semantic context - Cube.js provides business-friendly names like "revenue" and "customer_count" instead of raw column names
- Validated generation - JSON Schema validation ensures AI-generated output is always valid
- Dual rendering - Same ChartIR spec works in the dashboard builder and chatbot responses