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
- 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
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
Server Mode¶
Full-featured analytics platform with:
- PostgreSQL data sources
- User authentication (OAuth)
- Multi-tenant isolation
- Dashboard CRUD API
- Saved queries
Quick Links¶
- Getting Started - Installation and first dashboard
- Dashboard Builder - Visual editor guide
- Cube.js Integration - Semantic data layer
- AI Features - LLM-powered generation
- 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 │
│ Cube.js queries │ 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