AyoubBenziza
f82c7d9700
feat(web): bomb countdown, copyable room code, persistent score cards
...
- Countdown: under 10s it ramps into a "bomb" — white→red color and an
escalating scale/wiggle pulse (faster & wider as it nears 0) via Framer Motion
- RoomCode: click-to-copy the room code with visual feedback
- PlayerCards: always-on score HUD during the game (cards per player,
animated reorder, crown on the leader) so scores are tracked continuously
instead of only appearing at reveal
- quiz view: drop the reveal-only scoreboard (now covered by PlayerCards)
- add framer-motion dependency
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:56:57 +02:00
AyoubBenziza
5cc9113b8c
feat(quiz): quiz game mode end-to-end (server mode + playable client UI)
...
Server:
- quiz mode (GameRound): in-memory FR question bank (mcq + truefalse),
per-room anti-repeat, first-vote lock, score = base + speed bonus ∝ time
left; registered via registerRound, loaded at startup
- shared: typed quiz payloads (QuizQuestionPayload / reveal truth / result)
- tests: quiz scoring, vote lock, bounds, reveal (bun test)
Client:
- room store handles round:start / voteAck / reveal / game:end
- RoomPage dispatches by status: lobby (host start controls) → quiz view
(question, countdown, vote, reveal + scoreboard) → game-end view
- replaces standalone lobby page
Roadmap V1 step 4. Verified end-to-end over the wire (start→vote→reveal→
score→next round→game:end, no answer leaked, anti-repeat works).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:43:17 +02:00
eb7e9a20d1
Merge pull request 'feat(server): generic game engine — GameRound interface + orchestration loop' ( #3 ) from feature/game-engine into dev
...
Reviewed-on: #3
2026-06-08 13:30:48 +00:00
AyoubBenziza
9ed3b8a4cb
feat(server): generic game engine — GameRound interface + orchestration loop
...
- game/round.ts: GameRound contract (start/submitAnswer/reveal/score) +
RoundContext + RoomGameController (decouples room from engine)
- game/registry.ts: register/createRound — adding a mode = one registerRound
- game/engine.ts: server-authoritative orchestration. Per round:
start → broadcast round:start → wait (timer OR all eligible voted) →
reveal → apply score deltas → score:update; then game:end. DJ counts as
eligible voter; round ends on first condition met.
- handlers: game:start (host-only, validates rounds/modes) + round:vote
wired to the engine
- shared: add game:start client event
- engine.test.ts: covers both end conditions + voteAck (bun test)
- turbo/root: add test task
Roadmap V1 step 3. No UI yet — concrete quiz mode + client come in step 4.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:29:49 +02:00
7dca1a5da7
Merge pull request 'feat(server,web): first real-time cycle — room create/join + lobby' ( #2 ) from feature/realtime-room-cycle into dev
...
Reviewed-on: #2
2026-06-08 13:21:48 +00:00
AyoubBenziza
29faa18731
feat(server,web): first real-time cycle — room create/join + lobby
...
Server (@nerdware/server):
- RoomManager: in-memory rooms (Map), code generation, create/join,
disconnect handling, public snapshot projection (no secrets)
- Socket.IO handlers: room:create / room:join with typed acks,
room:state broadcast on every change, lobby:updateSettings (host-only),
player:left on disconnect
Web (web):
- typed Socket.IO client + Zustand store mirroring room:state
- wouter routing: home (create/join) + minimal lobby (live player list)
- @nerdware/shared wired into the client
Roadmap V1 step 2. Verified end-to-end (create/join/broadcast/disconnect).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:16:26 +02:00
2139696f3f
Merge pull request 'feat(shared,server): scaffold @nerdware/shared types + Fastify/Socket.IO server' ( #1 ) from feature/shared-and-server into dev
...
Reviewed-on: #1
2026-06-08 12:59:53 +00:00
AyoubBenziza
56115b5a9f
feat(shared,server): scaffold @nerdware/shared types + Fastify/Socket.IO server
...
- packages/shared (@nerdware/shared): domain model (Room, Player, Settings,
Round, votes, scores) + fully typed Socket.IO events, consumed as source
- apps/server (@nerdware/server): Fastify boot + /health, typed Socket.IO
attached to the HTTP server, env config, graceful shutdown
- gitignore: allow .env.example to be committed
Roadmap V1 step 1. Room logic (room:create/join) comes next.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 14:55:52 +02:00
AyoubBenziza
ad13eb4e68
chore: initial scaffold (Turborepo + Vite/React + shadcn)
2026-06-08 14:24:04 +02:00
AyoubBenziza
e7b2f46e81
feat: initial commit
2026-06-07 18:45:52 +02:00