From 4e06930796c23374083c218b0fe03395753ad6f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20F=C3=B6rtsch?= Date: Thu, 12 Mar 2026 21:37:26 +0100 Subject: [PATCH] remove Dish of the Nation from design spec, scoring config Co-Authored-By: Claude Opus 4.6 --- .../specs/2026-03-11-esc-party-app-design.md | 29 ++----------------- packages/server/data/scoring.json | 3 +- 2 files changed, 3 insertions(+), 29 deletions(-) diff --git a/docs/superpowers/specs/2026-03-11-esc-party-app-design.md b/docs/superpowers/specs/2026-03-11-esc-party-app-design.md index ce66d52..4ead136 100644 --- a/docs/superpowers/specs/2026-03-11-esc-party-app-design.md +++ b/docs/superpowers/specs/2026-03-11-esc-party-app-design.md @@ -7,7 +7,7 @@ ## Goal -A web-based party companion for a group of 5-10 people watching the Eurovision Song Contest together. One host device drives a shared display (TV/projector); all other players join on their phones via a room code. Three acts guide the group through five games across the evening, with all scores feeding into one shared leaderboard. +A web-based party companion for a group of 5-10 people watching the Eurovision Song Contest together. One host device drives a shared display (TV/projector); all other players join on their phones via a room code. Three acts guide the group through four games across the evening, with all scores feeding into one shared leaderboard. --- @@ -106,14 +106,11 @@ JSON messages with a `type` field discriminator. | `reconnect` | roomCode, sessionId | Reconnecting | | `advance_act` | — | Host advances to next act | | `end_room` | — | Host ends the party | -| `add_dish` | name, correctCountry | Host adds a dish (Act 1) | -| `reveal_dishes` | — | Host reveals dish answers | | `submit_prediction` | winner, top3[], nulPoints | Player submits predictions | | `open_jury_vote` | countryCode | Host opens voting for a country | | `close_jury_vote` | — | Host closes current voting window | | `submit_jury_vote` | countryCode, rating (1-12) | Player rates an act | | `tap_bingo_square` | tropeId | Player taps a bingo square | -| `submit_dish_guess` | dishId, guessedCountry | Player guesses a dish's country | | `start_quiz` | — | Host starts quiz round | | `next_question` | — | Host advances to next question | | `buzz_quiz` | — | Player buzzes in | @@ -134,7 +131,6 @@ JSON messages with a `type` field discriminator. | `jury_reveal` | "12 points go to..." data | Dramatic reveal on display | | `bingo_update` | playerId, square tapped | Someone taps a square | | `bingo_announced` | playerId, displayName | Someone got bingo | -| `dishes_updated` | dish list | Host adds/reveals dishes | | `quiz_question` | question, options, difficulty | Next quiz question shown | | `quiz_buzz` | playerId, displayName | Someone buzzed | | `quiz_result` | playerId, correct, points | Answer judged | @@ -154,13 +150,6 @@ JSON messages with a `type` field discriminator. - Scores are hidden until the final leaderboard reveal in Act 3. - Country selection from the hardcoded ESC 2026 lineup. -### Dish of the Nation (lobby + Act 1) - -- Host adds dishes via the Host tab as people arrive (name + correct country). This can start during the lobby phase and continue into Act 1. -- Players see the list of dishes and submit a country guess per dish. -- Host triggers reveal before Act 2 — display shows each dish with the correct country and who guessed right. -- Low-stakes icebreaker. - ### Live Jury Voting (Act 2) - Host taps "Open Voting" after each country's performance. @@ -189,7 +178,7 @@ JSON messages with a `type` field discriminator. ### Shared Leaderboard -- All five games contribute to one total score per player. +- All four games contribute to one total score per player. - Leaderboard visible on the display throughout the evening, updated after each scoring event. - Prediction scores are hidden until the final reveal — the leaderboard shows "??? pts" for predictions until Act 3 ends. - Final reveal: display shows a dramatic countdown/animation revealing prediction scores and the final standings. @@ -211,7 +200,6 @@ All values in `packages/server/data/scoring.json`, editable without code changes "quiz_easy": 5, "quiz_medium": 10, "quiz_hard": 15, - "dish_correct": 5 } ``` @@ -279,19 +267,6 @@ PostgreSQL via Drizzle ORM. Lightweight — most queries are "get everything for - `room_id` (FK → rooms) - `squares` (jsonb, positionally ordered array of { tropeId, tapped } — index 0-15 maps left-to-right, top-to-bottom on the 4×4 grid) -**dishes** -- `id` (uuid, PK) -- `room_id` (FK → rooms) -- `name` (varchar) -- `correct_country` (varchar) -- `revealed` (boolean) - -**dish_guesses** -- `id` (uuid, PK) -- `player_id` (FK → players) -- `dish_id` (FK → dishes) -- `guessed_country` (varchar) - **quiz_rounds** - `id` (uuid, PK) - `room_id` (FK → rooms) diff --git a/packages/server/data/scoring.json b/packages/server/data/scoring.json index f3452ce..78b6dcd 100644 --- a/packages/server/data/scoring.json +++ b/packages/server/data/scoring.json @@ -7,6 +7,5 @@ "bingo_full_bonus": 10, "quiz_easy": 5, "quiz_medium": 10, - "quiz_hard": 15, - "dish_correct": 5 + "quiz_hard": 15 }