Demo Mode Quick Start Guide
What is Demo Mode?
Demo mode allows the Baselinr Quality Studio backend to run without a database by serving pre-generated data from JSON files. Perfect for demos, testing, and Cloudflare Pages deployment.
Quick Start
1. Enable Demo Mode
export DEMO_MODE=true
2. Start the Server
cd dashboard/backend
uvicorn main:app --reload --port 8000
3. Verify Demo Mode
curl http://localhost:8000/
Response should show:
{
"status": "healthy",
"service": "Baselinr Dashboard API",
"version": "2.0.0",
"mode": "demo"
}
4. Get Demo Info
curl http://localhost:8000/api/demo/info
Features
✅ What Works in Demo Mode
- All Data Endpoints: runs, tables, drift, validation, metrics
- Filtering: warehouse, schema, table, status, dates, severity
- Sorting: any field, ascending/descending
- Pagination: offset/limit with total counts
- Detail Views: run details, table metrics, drift details
- Aggregations: dashboard metrics, summaries, trends
- Performance: <5ms response times
❌ What's Disabled in Demo Mode
- RCA Routes: Requires direct database access
- Chat Routes: Requires database engine
- Write Operations: Demo is read-only
Environment Variables
| Variable | Values | Default | Description |
|---|---|---|---|
DEMO_MODE | true, false | false | Enable demo mode |
API Endpoints
Health Check
GET /
Returns mode indicator.
Demo Info
GET /api/demo/info
Returns demo metadata and statistics (only in demo mode).
All Data Endpoints
Same as database mode:
GET /api/runsGET /api/tablesGET /api/drift/alertsGET /api/drift/summaryGET /api/validation/summaryGET /api/validation/resultsGET /api/metrics/dashboard- And more...
Examples
Get Recent Runs
curl "http://localhost:8000/api/runs?limit=10&sort_order=desc"
Filter by Warehouse
curl "http://localhost:8000/api/runs?warehouse=snowflake&limit=20"
Get Drift Alerts
curl "http://localhost:8000/api/drift/alerts?severity=high&limit=10"
Get Dashboard Metrics
curl "http://localhost:8000/api/metrics/dashboard"
Get Tables
curl "http://localhost:8000/api/tables?limit=50"
Switching Modes
Switch to Demo Mode
export DEMO_MODE=true
uvicorn main:app --reload
Switch to Database Mode
unset DEMO_MODE
# or
export DEMO_MODE=false
uvicorn main:app --reload
Data
Demo Data Location
dashboard/backend/demo_data/
├── runs.json (120 runs)
├── metrics.json (582 metrics)
├── drift_events.json (54 events)
├── tables.json (95 tables)
├── validation_results.json (156 results)
├── lineage.json (16 nodes, 14 edges)
└── metadata.json (generation info)
Regenerate Demo Data
cd dashboard/backend
python generate_demo_data.py
This will create fresh demo data with new random values.
Testing
Run Integration Tests
python test_demo_mode_integration.py
Run Unit Tests
pytest test_demo_data_service.py -v
Run Benchmarks
python benchmark_demo_service.py
Troubleshooting
Demo Mode Not Working
Check environment variable:
echo $DEMO_MODE
# Should output: true
Check logs:
INFO: Starting in DEMO MODE - using DemoDataService
Endpoints Returning Errors
Verify demo data exists:
ls dashboard/backend/demo_data/
# Should show 7 JSON files
Regenerate if needed:
python generate_demo_data.py
Performance Issues
Demo mode should be very fast (<5ms). If slow:
- Check if files are on slow storage
- Verify JSON files aren't corrupted
- Try regenerating demo data
Deployment
Cloudflare Pages
Set environment variable in Pages settings:
DEMO_MODE=true
Docker
ENV DEMO_MODE=true
Heroku
heroku config:set DEMO_MODE=true
Performance
Demo Mode:
- Initialization: 4.5ms
- Average query: 0.59ms
- Max query: 4.5ms
Database Mode (for comparison):
- Initialization: 50-100ms
- Average query: 50-200ms
- Max query: 500ms+
Demo mode is 10-40x faster!
Support
For issues or questions:
- Check
DEMO_DATA_SERVICE_README.mdfor detailed docs - Run integration tests to verify setup
- Check logs for error messages
See Also
- DEMO_DATA_SERVICE_README.md - Detailed service documentation
- PHASE3_COMPLETE.md - Integration details
- demo_data/README.md - Data structure documentation