Demo Walkthrough
This doc describes a click path through every workflow on staging (Site address provided separately), for demonstrating the current application using synthetic data.
Setup and Technical Details
It uses the demo data from supabase/seed-data/projects.json and the fixtures in
supabase/seed.sql. Every date is relative to the last reset, so the data
never looks stale, and a reset puts everything back.
To prepare, you need to reset the data to the starting point, then utilize the demo accounts listed below with a password, also provided separately.
npm run demo:reset -- --staging
This command needs .env.staging.local complete and asks you to type the project ref
before dropping anything. What it runs and which variables it reads are
under Reset staging in Environments (in the repo docs).
Reset again after a demo if anyone will click through it next.
Accounts
Every demo account signs in at /login with the password in
DEMO_PASSWORD. Share it out of band, never in the repo or an issue.
| Who | Role | Use for | |
|---|---|---|---|
| Morgan Reyes | demo.morgan@example.test |
staff | screening, publishing, decisions, payouts |
| Priya Natarajan | demo.priya@example.test |
staff | reviewer: scoring |
| Dan Okafor | demo.dan@example.test |
staff | reviewer |
| Lena Fischer | demo.lena@example.test |
staff | reviewer |
| Eva Lindqvist | demo.eva@example.test |
educator | applying; a completed grant with all its follow-up |
| Omar Haddad | demo.omar@example.test |
educator | follow-up on a paid-out grant; a returned application |
Donors need no account. The fixture accounts in seed.sql
(staff@example.com and so on) have no password on staging and can’t sign
in.
Click path
Sign out between roles (the avatar menu, top right).
Each section has a recording, made with npm run demo:record against a
local reset of the same seed, so it shows what staging shows after a
reset. Re-run it after a UI change; the clips are in videos/. Click a
picture to play its clip.
Educator applies (Eva)
- My Projects shows Eva’s applications at every stage: a completed Enrichment Grant, a draft, and a Fund-A-Teacher project open for donations with its progress.
- Start an Application → Enrichment Grant. Fill in the details, the
five narrative sections (word counts are guidance only), and upload a
budget (any PDF;
supabase/seed-data/files/budget.pdfworks). - Review → Submit. The confirmation names the open cycle (Spring 2027).
- Open Hydroponic Garden Lab: the status timeline, who acted at each step, the award, and the follow-up files (receipt, two photos, final report), which download.
Staff screens and publishes (Morgan)
- Dashboard shows what needs attention.
- Applications → Graphic Novel Classroom Library (submitted) → Begin screening.
- School Garden Tools (in screening) → Publish to Fund-A-Teacher. It now appears on the public Browse Projects page.
- Coding Robots for Grade 6 shows a return for revision, with the feedback the educator sees.
Reviewer scores (Priya)
- Scoring lists the Winter 2026 cycle’s applications, which are in their scoring window.
- Open Coding with Microbits and score it against the rubric, or Recuse myself with a reason.
Review meeting and decisions (Morgan)
- Grant Cycles → Spring 2026 Cycle: a recorded cycle, with awards in full and in part, declines (one withheld from publication), a return and a withdrawal, all within the $7,500 pool.
- Fall 2026 Cycle → Meeting: its meeting date has passed. Applications are ranked by score against the pool. Set a proposed outcome for each (award in full or in part, decline, return for revision) and Save; proposals can change until Record decisions records them all in one step. It refuses while Community Garden Expansion is still only submitted: screen it and send it to committee review under Applications, then come back and record.
Donor gives (signed out)
- Browse Projects → search or filter → open Tabletop Art Easels.
- Donate as a guest, with a name and email. The checkout is the stub processor’s page: Approve payment completes it, Decline payment shows a failed payment.
- The thank-you page, and the project’s progress bar has moved.
- As Morgan, Outbox shows the donor’s receipt, unsent (see the limits below).
Staff closes donations, pays out, completes (Morgan, then Omar)
- Applications → Tabletop Art Easels → Close to donations.
- Payouts → Record a payment: check or transfer, payee, reference. Tick Final payment to move it to disbursed. Paying out more than was received is refused. A payout can be marked cleared, or voided with a reason.
- As Omar, open Mobile Makerspace Carts (disbursed) and upload a final
report (
supabase/seed-data/files/final-report.pdfworks). - As Morgan, open it again → Mark complete.
Tracking (Morgan)
Tracking shows each cycle’s pool against what it allocated, then every application’s requested, allocated, raised and disbursed amounts and its follow-up documents, filterable by track, status and cycle.
Known limits
- No email. Staging has no SMTP, so invites, educator self-registration and password reset links never arrive. Use the demo accounts. Every notification the portal would send is listed in Outbox instead.
- No real payments. The checkout is a stub that stands in for NeonPay (ADR 0034). No card is asked for and no money moves.
- No donor accounts. Donors give as guests; giving history and tax summaries are out of scope for the POC.
- Placeholder files. The follow-up documents and photos are generated placeholders, not real receipts.
- AI-generated project pictures. Each project’s photo was made from its
name and summary (
npm run demo:images); none is a real NCEF classroom. They reach staging only whenseed-demo-usersruns on a machine that has them inpublic/demo/; without them projects show a plain gradient. - Shared data. Anyone signed in on staging changes the same database. Reset before a demo that needs a known starting point.