Skip to main content

Demo Provisioning Platform

Tracking document for issue #281 — see the pull request description for full requirements.

Quick Start

Local (with dev.sh running)

# Start simulator with auto-provisioning
bazel run //tools/simulator:simulator -- \
-Dsim.auto-provision=true \
-Dsim.demo-org-name="Acme Mart" \
-Dsim.demo-store-name="Main Street Store"

GCP Demo VM

# Spin up a demo environment
./tools/demo/demo.sh up acme --org-name "Acme Mart" --store-name "Main Street Store"

# Check status
./tools/demo/demo.sh status acme

# Tear down
./tools/demo/demo.sh down acme

# List all demos
./tools/demo/demo.sh list

Simulator Config Properties

PropertyDefaultDescription
sim.management-api.urlhttp://localhost:8082Management API base URL
sim.admin-firebase-token(auto)Admin tenant Firebase token
sim.admin-firebase-tenant-idadmin-tenant-localAdmin tenant ID
sim.admin-firebase-emailsupport@peakpos.coAdmin tenant email
sim.admin-firebase-passwordadmin123Admin tenant password
sim.auto-provisionfalseAuto-provision on startup
sim.demo-org-nameCustom org name for demo
sim.demo-store-nameCustom store name for demo

Architecture

The simulator authenticates to two Firebase tenants:

  • user-tenant-local — for merchant-api calls (products, customers, shifts, etc.)
  • admin-tenant-local — for management-api calls (org, store, terminal provisioning)

The provisioning flow:

  1. Sign in to both Firebase tenants (auto via emulator)
  2. Find or create org via management-api
  3. Find or create store
  4. Find or create terminal
  5. Create superadmin
  6. Verify merchant-api auth via /api/v1/auth/me
  7. Update simulator config with provisioned IDs
  8. Proceed to seed data and live simulation