User Stories
Host
- I want to create a wine test by adding wines, so that each wine becomes a round with 4 questions (color, country, grape variety, vintage year) that I fill in with a correct answer and 3 distractors.
- I want a generated 4-digit code for my session so participants can join easily without accounts.
- I want a Host Dashboard so I can control the pace of the game:
- Start opens the lobby; starting the first round closes it.
- Pause / Resume freezes and restores the question timer (remaining time is preserved on resume).
- Reveal Answer manually closes the current question and highlights the correct option for all participants.
- Next advances to the next question, or — after the last question of a wine — shows the round leaderboard and then moves to the next wine.
- End terminates the session and pushes everyone to the final leaderboard.
- I want to see which participants have submitted an answer (not what they answered) so I know when everyone is done and I can reveal early.
Participant
- I want to join a session by entering a 4-digit code so I can participate without creating an account.
- I want to be assigned a generated pseudonym automatically so I don't have to think of a name.
- I want to answer multiple-choice questions within a 60-second window, knowing my first tap is final.
- I want to see the correct answer highlighted after the host reveals it, along with my points for that question.
- I want to see the leaderboard after all questions of each wine are completed, so I can track my standing throughout the game.
- I want to see a final leaderboard when the host ends the session, which stays on screen until I close the tab.
Edge cases & constraints
- No new players can join after the session starts (first round begins) or once 10 players are connected.
- Pseudonyms are unique within a session and generated by the app — no custom names.
- Participants who disconnect cannot rejoin; their score is frozen and they remain on the leaderboard.
- If the host closes the browser, the session ends and participants see a "session ended" message — it cannot be resumed.
- Participants who don't answer before the timer expires receive 0 points for that question; no other penalty.