feat(web): add minimal playable quiz at /play

- Add Vite proxy for /api → localhost:3000 (no CORS needed in dev)
- Create /play route with hardcoded game settings (en→it, nouns, easy)
- Three-phase state machine: loading → playing → finished
- Show prompt, optional gloss, and 4 answer buttons per question
- Submit answers to /api/v1/game/answer, show correct/wrong feedback
- Manual Next button to advance after answering
- Score screen on completion
- Add selectedOptionId to AnswerResult schema (discovered during
  frontend work that the result needs to be self-contained for
  rendering feedback without separate client state)

Intentionally unstyled — component extraction and polish come next.
This commit is contained in:
lila 2026-04-11 12:56:03 +02:00
parent 075a691849
commit ea33b7fcc8
6 changed files with 151 additions and 3 deletions

View file

@ -52,6 +52,7 @@ export const AnswerResultSchema = z.object({
questionId: z.uuid(),
isCorrect: z.boolean(),
correctOptionId: z.number().int().min(0).max(3),
selectedOptionId: z.number().int().min(0).max(3),
});
export type AnswerResult = z.infer<typeof AnswerResultSchema>;