feat: add interactive reactions and flag guessing #5

Merged
TimCane merged 4 commits from feat/reactions-answering into main 2026-06-18 11:53:32 +01:00
TimCane commented 2026-06-18 11:52:36 +01:00 (Migrated from github.com)

Summary

  • three views over one in-memory session: / (audience phones), /display (projector, mints a 3-letter join code), /presenter (controls the deck, shows speaker notes)
  • realtime over SSE (/api/events) down, POST routes (join/guess/react/control) up
  • presenter-driven lifecycle: advance opens guessing, reveal scores it; guesses lock on submit, flat 1 point
  • 4-option multiple choice with similar-flag distractors ranked by shared colours/features
  • ambient emoji reactions float across the display; live vote distribution + leaderboard
  • curated 20-flag deck with backfilled speaker notes; new optional notes schema field

Test plan

  • pnpm check (0 errors), pnpm build (server output via node adapter)
  • drove a full round against the built server: join, advance, guess (lock enforced), react, reveal, reset
  • verified live SSE frames (state + reaction), wrong-code rejection, and new code on reset
  • / , /display, /presenter all serve 200; display SSR shows the live code
## Summary - three views over one in-memory session: `/` (audience phones), `/display` (projector, mints a 3-letter join code), `/presenter` (controls the deck, shows speaker notes) - realtime over SSE (`/api/events`) down, POST routes (join/guess/react/control) up - presenter-driven lifecycle: advance opens guessing, reveal scores it; guesses lock on submit, flat 1 point - 4-option multiple choice with similar-flag distractors ranked by shared colours/features - ambient emoji reactions float across the display; live vote distribution + leaderboard - curated 20-flag deck with backfilled speaker notes; new optional `notes` schema field ## Test plan - pnpm check (0 errors), pnpm build (server output via node adapter) - drove a full round against the built server: join, advance, guess (lock enforced), react, reveal, reset - verified live SSE frames (state + reaction), wrong-code rejection, and new code on reset - / , /display, /presenter all serve 200; display SSR shows the live code
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
TJC/thisisapresentationonflags.lol!5
No description provided.