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 any PostgreSQL, MySQL/Dolt, or SQLite database through configuration alone via the built-in generic
sqlconnector, or register custom plugin providers for application-specific stores - β Saved Questions - Metabase-style read-only GrokifyQL questions with formatting, syntax highlighting, field value browsing, CSV/XLSX export, and dashboard reuse
- π€ Agent-Ready Analytics - Integrates with OmniAgent marketplace primitives while DashForge owns query, field-value, and dashboard capabilities
- π Secret References - Analytics source credentials should use OmniVault/VaultGuard references instead of raw DSNs in catalog storage, with OmniVault SQL store as the encrypted-in-DB fallback
- π’ 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
- π§ Analytics Policy - SystemForge/SpiceDB-backed GrokifyQL policy for dataset and field permissions
- π€ 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.jsonThe viewer has a light/dark theme toggle (top-right, persisted via localStorage) and caps numeric display in tooltips, axis labels, and metric tiles to 2 decimal places.
# Build the server
go build -o dashforge-server ./cmd/dashforge-server
# Run with Dolt (local default β connects to a dolt sql-server, creating the
# database if needed; matches the local dolt sql-server ecosystem pattern)
./dashforge-server serve --port 8080 --auto-migrate \
--db-url 'mysql://root@127.0.0.1:13307/dashforge'
# Or with PostgreSQL (required for Row Level Security / --enable-rls)
export DATABASE_URL="postgres://user:pass@localhost:5432/dashforge?sslmode=disable"
export JWT_SECRET="your-secret-key"
./dashforge-server serve --port 8080 --auto-migrateDashForge connects to multiple analytics sources at once, like Metabase. Sources
are added at runtime β via the Data sources panel in the Question builder
(/builder/?mode=questions) or the API β and persist across restarts. Only an
OmniVault secret reference is stored, never a raw DSN:
# The core engine ships one built-in connector, "sql" β any Postgres,
# MySQL/Dolt, or SQLite database becomes a source through configuration
# alone. Additional connectors (like "roadmap-app" below) are registered by
# the consuming application binary.
export DASHFORGE_WAREHOUSE_DSN='root:@tcp(127.0.0.1:13307)/warehouse'
./dashforge-server serve --address 127.0.0.1:13319
# One-time: register the source (or use the builder UI)
curl -X POST http://127.0.0.1:13319/api/v1/analytics/sources \
-H 'Content-Type: application/json' \
-d '{"id":"warehouse","name":"Warehouse","connector":"sql",
"dsnRef":"env://DASHFORGE_WAREHOUSE_DSN","enabled":true}'See Analytics Catalog for the catalog model, management API, and credential policy.
Full documentation is available at docs/:
- Getting Started
- Dashboard Builder - Visual drag-and-drop editor
- Dashboard IR Reference
- Data Sources - Database connections & providers
- Analytics Catalog - Queryable sources, datasets, fields, and Questions
- Analytics Authorization - GrokifyQL policy with SystemForge and SpiceDB
- Agent Integration - OmniAgent marketplace boundary and DashForge analytics capabilities
- 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 β
β βββ analytics/ Queryable source catalog and providers β
β βββ 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
- Question Builder - Create saved GrokifyQL Questions, browse field values, run results, export CSV/XLSX, and reuse Questions as dashboard widgets
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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