Skip to main content

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​

VariableValuesDefaultDescription
DEMO_MODEtrue, falsefalseEnable 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/runs
  • GET /api/tables
  • GET /api/drift/alerts
  • GET /api/drift/summary
  • GET /api/validation/summary
  • GET /api/validation/results
  • GET /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:

  1. Check DEMO_DATA_SERVICE_README.md for detailed docs
  2. Run integration tests to verify setup
  3. Check logs for error messages

See Also​