nerdware/apps/web/src/App.tsx
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

19 lines
544 B
TypeScript

import { Route, Switch } from "wouter"
import { HomePage } from "@/pages/home"
import { RoomPage } from "@/pages/room"
export function App() {
return (
<Switch>
<Route path="/" component={HomePage} />
<Route path="/room/:code">
{(params) => <RoomPage code={params.code.toUpperCase()} />}
</Route>
<Route>
<div className="flex min-h-svh items-center justify-center p-6">
<p className="text-muted-foreground text-sm">Page introuvable.</p>
</div>
</Route>
</Switch>
)
}