-
Notifications
You must be signed in to change notification settings - Fork 0
Demo Scripts
Owner(s): CrowdPM team | Last updated: 2026-03-08 | Status: Production
This page provides presentation-ready demo flows that also function as acceptance checks. The most important principle is that the main demo should be reproducible without requiring physical node hardware.
Demonstrate that a contributor can run the platform locally, sign in, trigger a seeded device flow, ingest PM2.5 data, and see the results on the map.
- local env files are configured;
-
functions/.secret.localexists; -
pnpm devis running; - frontend loads successfully;
- tester can sign in with the local auth user.
- Open the app at
http://localhost:5173. - Sign in with the local emulator user.
- Go to the User Dashboard tab.
- Click Run Smoke Test.
- Observe that the UI seeds
device-123and drives the pairing/activation flow. - Observe that an access token is minted and a measurement payload is submitted.
- Switch to or inspect the Map tab.
- Confirm the map auto-selects the seeded device, renders the resulting path, and exposes time-based playback state.
- Open the Emulator UI at
http://localhost:4000for backend verification if needed.
- app loads locally without manual cloud-only dependencies;
- smoke test completes without a hardware device;
- ingest creates retained raw data and processed records;
- batch metadata is visible;
- map shows the route and timeline-driven playback behavior.
- Storage contains the ingest artifact under the expected ingest path;
- Firestore contains device/batch/measurement records;
- Functions logs show ingest and processing activity.
Demonstrate that the backend is alive before or during a longer presentation.
Run from another terminal:
curl http://127.0.0.1:5001/demo-crowdpm/us-central1/crowdpmApi/health- returns
{ "ok": true }; - confirms the Fastify HTTPS API is available through the emulator.
Demonstrate that an already-registered device can submit ingest again without re-running the full demo UI flow.
Use the repository’s device-emulator workflow after a successful pairing run.
Example pattern documented in the repo README:
pnpm device:pair -- --mode ingest --device-id <device-id> --key ./emu-key.json --api http://localhost:5001/demo-crowdpm/us-central1/crowdpmApi- existing device credentials can be re-used for follow-up ingest;
- new batch data appears in the backend;
- owner/map views update accordingly.
Demonstrate a hosted version of the platform after code review and successful deployment to the shared demo Firebase project.
- demo deploy completed successfully;
- required runtime secrets are configured;
- Firestore and Storage are provisioned in the demo project;
- the hosted app is reachable.
- Show the hosted landing/app shell.
- Explain the role separation: public vs owner vs moderator/admin.
- Walk through either a pre-seeded data view or a controlled ingest path.
- Show the map, batch visibility, and moderation-aware framing.
- If relevant, mention the same core flow is reproducible locally with emulators.
Before any graded or stakeholder-facing demo:
- verify branch/commit being shown;
- verify correct Firebase project/environment;
- verify secrets and env values are set;
- verify the smoke test works if it will be used live;
- prepare a fallback path using already-seeded data;
- prepare one short backend sanity command (
/health) in case UI troubleshooting is needed.
- missing
functions/.secret.locallocally; - wrong
VITE_API_BASEtarget; - wrong Firebase project alias during hosted deployment;
- Firestore or Storage not provisioned in a new demo project;
- outdated docs or stale local state from previous runs.
The cleanest short narrative is:
- secure onboarding;
- durable ingest;
- processed/queryable data;
- moderated/public separation;
- map-based exploration.
That tells the story of the platform more clearly than focusing only on UI screens.
Owner: CrowdPM Team
Last updated: 2026-03-08
Status: Production
Single sources of truth (links only)
- Production Website: crowdpmplatform.web.app
- Requirements doc: Requirements Doc
- Design doc: Design Doc
- Project board: Project board
- CI dashboard: CI Dashboard
- Release artifacts: Release Artifacts
- Repo: GitHub