remove Dish of the Nation from design spec, scoring config
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
## Goal
|
## 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 |
|
| `reconnect` | roomCode, sessionId | Reconnecting |
|
||||||
| `advance_act` | — | Host advances to next act |
|
| `advance_act` | — | Host advances to next act |
|
||||||
| `end_room` | — | Host ends the party |
|
| `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 |
|
| `submit_prediction` | winner, top3[], nulPoints | Player submits predictions |
|
||||||
| `open_jury_vote` | countryCode | Host opens voting for a country |
|
| `open_jury_vote` | countryCode | Host opens voting for a country |
|
||||||
| `close_jury_vote` | — | Host closes current voting window |
|
| `close_jury_vote` | — | Host closes current voting window |
|
||||||
| `submit_jury_vote` | countryCode, rating (1-12) | Player rates an act |
|
| `submit_jury_vote` | countryCode, rating (1-12) | Player rates an act |
|
||||||
| `tap_bingo_square` | tropeId | Player taps a bingo square |
|
| `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 |
|
| `start_quiz` | — | Host starts quiz round |
|
||||||
| `next_question` | — | Host advances to next question |
|
| `next_question` | — | Host advances to next question |
|
||||||
| `buzz_quiz` | — | Player buzzes in |
|
| `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 |
|
| `jury_reveal` | "12 points go to..." data | Dramatic reveal on display |
|
||||||
| `bingo_update` | playerId, square tapped | Someone taps a square |
|
| `bingo_update` | playerId, square tapped | Someone taps a square |
|
||||||
| `bingo_announced` | playerId, displayName | Someone got bingo |
|
| `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_question` | question, options, difficulty | Next quiz question shown |
|
||||||
| `quiz_buzz` | playerId, displayName | Someone buzzed |
|
| `quiz_buzz` | playerId, displayName | Someone buzzed |
|
||||||
| `quiz_result` | playerId, correct, points | Answer judged |
|
| `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.
|
- Scores are hidden until the final leaderboard reveal in Act 3.
|
||||||
- Country selection from the hardcoded ESC 2026 lineup.
|
- 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)
|
### Live Jury Voting (Act 2)
|
||||||
|
|
||||||
- Host taps "Open Voting" after each country's performance.
|
- Host taps "Open Voting" after each country's performance.
|
||||||
@@ -189,7 +178,7 @@ JSON messages with a `type` field discriminator.
|
|||||||
|
|
||||||
### Shared Leaderboard
|
### 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.
|
- 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.
|
- 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.
|
- 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_easy": 5,
|
||||||
"quiz_medium": 10,
|
"quiz_medium": 10,
|
||||||
"quiz_hard": 15,
|
"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)
|
- `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)
|
- `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**
|
**quiz_rounds**
|
||||||
- `id` (uuid, PK)
|
- `id` (uuid, PK)
|
||||||
- `room_id` (FK → rooms)
|
- `room_id` (FK → rooms)
|
||||||
|
|||||||
@@ -7,6 +7,5 @@
|
|||||||
"bingo_full_bonus": 10,
|
"bingo_full_bonus": 10,
|
||||||
"quiz_easy": 5,
|
"quiz_easy": 5,
|
||||||
"quiz_medium": 10,
|
"quiz_medium": 10,
|
||||||
"quiz_hard": 15,
|
"quiz_hard": 15
|
||||||
"dish_correct": 5
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user