Problem
A cricket club fundraising night needs an entertaining projector stage, live card donations from the room and a ledger that reconciles to the dollar at the end of the night, all run by one moderator on venue hardware.
System boundary
A Next.js platform for the Newcomb and District Cricket Club: an animated race stage, a QR donation flow through Stripe Checkout, a parimutuel tote board and a moderator console. Real money exists only as donations with no return; the fun bets use free play chips with no cash payout, which keeps the night a fundraiser rather than a wagering product.
Architecture
A DOM-free race engine draws the finishing order with a seeded Fisher-Yates shuffle, so every lane wins with probability exactly one in the field size and a printed seed can be replayed to verify any result. Stripe is the ledger and there is no database: the stage polls paid checkout sessions, and cash entries, results and backups live in the moderator's localStorage.
Constraints and decisions
- 01Donations can never influence a result: the draw reads only the seed and the field size, and the tote board shows what the room has backed with deliberately no house margin.
- 02One codebase ships two shapes: a server build with the Stripe routes, and a static GitHub Pages build that strips them and degrades to cash-and-chips with the status shown on stage.
Verification
Strict TypeScript and ESLint, a moderator-facing verify-draw panel that replays any printed seed against the recorded finishing order, and a deploy workflow that fails unless the published site responds and actually serves the game.
Current readiness
Version 3.0.0 with working deployment paths for a Node host and for GitHub Pages. Card donations switch on only when a Stripe key is configured in the deployment environment; without one the platform runs cash-and-chips only and says so on screen.
Evidence boundary
This record does not claim real-money betting, wagering or gambling capability: backing a snail is a donation with no return and play chips have no cash value. No live event, attendance or takings figures are claimed.