A JSON-first dashboard framework that starts simple with static hosting (GitHub Pages) and grows into a full Metabase-like analytics platform with an AI-powered visual builder.
- π¨ Visual Dashboard Builder - Drag-and-drop dashboard editor optimized for LLM agents
- π JSON Dashboard IR - Non-polymorphic, AI-friendly dashboard definitions
- π Cube.js Semantic Layer - Business-friendly queries with pre-built relationships
- β‘ Static or Dynamic - Start with static file hosting, graduate to PostgreSQL
- ποΈ Multi-Database Support - Connect to PostgreSQL, MySQL, and more via plugin providers
- π’ Multi-tenant - Row Level Security (RLS) for tenant isolation
- π SSO Authentication - GitHub and Google OAuth support
- π ChartIR Integration - Uses echartify for charts
- π¦ Dashboard Templates - Publish and sell reusable dashboard templates
- πͺ Publisher System - Organizations can become publishers with creator roles
- β Template Licensing - Seat-based licensing for purchased templates
- π Version Control - Template versioning with auto-update options
- πΌοΈ Preview & Screenshots - Gallery views for template discovery
- π Dual-Mode Auth - Simple role hierarchy or SpiceDB for fine-grained control
- π€ Publisher Roles - Owner, Admin, Creator, Reviewer hierarchies
- π₯ Consumer Roles - Owner, Admin, Editor, Viewer hierarchies
- π― Resource Permissions - Granular control over dashboards, queries, alerts, integrations
The fastest way to create dashboards:
# Build the React dashboard builder
cd builder && npm install && npm run build && cd ..
# Start the server
go run ./cmd/dashforge-server serve --port 8080
# Open the builder
open http://localhost:8080/builder/Open viewer/index.html in a browser with a dashboard URL:
cd dashforge
python3 -m http.server 8080
# Open http://localhost:8080/viewer/?dashboard=../examples/compliance-dashboard.json# Build the server
go build -o dashforge-server ./cmd/dashforge-server
# Run with PostgreSQL
export DATABASE_URL="postgres://user:pass@localhost:5432/dashforge?sslmode=disable"
export JWT_SECRET="your-secret-key"
./dashforge-server serve --port 8080 --auto-migrateFull documentation is available at docs/:
- Getting Started
- Dashboard Builder - Visual drag-and-drop editor
- Dashboard IR Reference
- Data Sources - Database connections & providers
- Cube.js Integration - Semantic data layer
- AI Features - LLM-powered dashboard generation
- Server Configuration
- Authentication
- Multi-tenancy
- API Reference
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Dashforge β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β builder/ Visual dashboard builder (React) β
β βββ src/components/ Canvas, widgets, chart builder β
β βββ src/ai/ AI generation schemas & prompts β
β βββ src/api/ Dashforge & Cube.js clients β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β cube/ Cube.js semantic layer β
β βββ model/cubes/ Data models (YAML) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β cmd/dashforge/ Static CLI (validate, convert) β
β cmd/dashforge-server/ Full server with API β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β dashboardir/ Dashboard JSON schema & types β
β viewer/ Embedded static HTML/JS viewer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β datasource/ Plugin-style data source providers β
β βββ providers/ PostgreSQL, MySQL implementations β
β βββ manager.go Connection pool management β
β βββ query.go Query execution engine β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β internal/server/ β
β βββ api/ REST API handlers β
β βββ auth/ JWT + OAuth (GitHub, Google) β
β βββ db/ PostgreSQL with Ent ORM β
β βββ middleware/ Tenant context, logging β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β ent/ Ent schema & generated code β
β βββ schema/ User, Dashboard, Tenant, etc. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The visual builder provides a Metabase-style drag-and-drop interface:
- Widget Palette - Drag charts, metrics, tables, and text onto the canvas
- 12-Column Grid - Responsive layout with snap-to-grid positioning
- Chart Builder - Visual configuration for line, bar, pie, scatter, and area charts
- Query Builder - Connect to Cube.js for semantic queries
- AI Integration - Generate widgets and dashboards from natural language
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Dashboard Builder UI β
β (React + TypeScript + react-grid-layout) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β β Widget β β Canvas β β Properties Panel β β
β β Palette β β (Grid) β β βββ Chart Builder β β
β β βββ Chart β β β β βββ Query Builder β β
β β βββ Metric β β [Widget] β β βββ Style Editor β β
β β βββ Table β β [Widget] β β β β
β β βββ Text β β [Widget] β β β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
"id": "sales-dashboard",
"title": "Sales Overview",
"layout": { "type": "grid", "columns": 12, "rowHeight": 80 },
"dataSources": [
{
"id": "sales",
"type": "postgres",
"query": "SELECT date, SUM(amount) as total FROM sales GROUP BY date"
}
],
"widgets": [
{
"id": "revenue-chart",
"type": "chart",
"position": { "x": 0, "y": 0, "w": 8, "h": 4 },
"dataSourceId": "sales",
"config": {
"geometry": "line",
"encodings": { "x": "date", "y": "total" },
"style": { "smooth": true, "showLegend": true }
}
}
]
}# Build all binaries
go build ./...
# Build the dashboard builder
cd builder && npm install && npm run build && cd ..
# Run tests
go test -v ./...
# Lint
golangci-lint run
# Generate Ent code (after schema changes)
go generate ./ent
# Start Cube.js (optional, for semantic queries)
cd cube && npm install && npm run devVisualize compliance reports from pipelineconductor:
# Generate compliance data
pipelineconductor check --users plexusone --languages Go -o data/compliance.json
# View in dashboard
open viewer/index.html?dashboard=examples/compliance-dashboard.json
# Or use the visual builder
open http://localhost:8080/builder/MIT