A WarioWare Culture Quizz minigames to play with friends
Find a file
AyoubBenziza 98e06b8206 feat(blindtest): YouTube blindtest mode with neutral DJ + synced playback
Server:
- BlindtestRound (GameRound): neutral DJ pick (never the contributor),
  per-mode scoring (title_artist fuzzy / who_added / mixed), reveal exposes
  title/artist/submittedBy; contributor doesn't score on own track
- track submission: blindtest:submitTrack validates via YouTube oEmbed
  (exists + embeddable) and captures title/artist; per-player quota; dedup
- DJ media relay: media:control (DJ only) → media:sync broadcast (engine)
- per-room shuffled track pool; submissions count in room snapshot
- shared: blindtest payloads, gameType/tracksPerPlayer in settings
- tests: DJ neutrality, scoring per mode, fuzzy match, youtube id extraction

Client:
- YouTube IFrame player (hidden behind a spinning disc — audio only, no
  title leak), DJ transport (play/pause/restart), non-DJ follows media:sync
  with latency compensation
- lobby: game-type switch (Quiz/Blindtest), blindtest config + per-player
  track submission UI
- vote forms per mode; reveal card with title/artist/who-added

Roadmap V1 step 6 (highest technical risk). Server flow verified end-to-end
over the wire (submit→start→DJ relay→vote→reveal→score).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 13:02:28 +02:00
apps feat(blindtest): YouTube blindtest mode with neutral DJ + synced playback 2026-06-10 13:02:28 +02:00
packages feat(blindtest): YouTube blindtest mode with neutral DJ + synced playback 2026-06-10 13:02:28 +02:00
.gitignore feat(shared,server): scaffold @nerdware/shared types + Fastify/Socket.IO server 2026-06-08 14:55:52 +02:00
.npmrc feat: initial commit 2026-06-07 18:45:52 +02:00
.prettierignore feat: initial commit 2026-06-07 18:45:52 +02:00
.prettierrc feat: initial commit 2026-06-07 18:45:52 +02:00
ARCHITECTURE.md chore: initial scaffold (Turborepo + Vite/React + shadcn) 2026-06-08 14:24:04 +02:00
bun.lock feat(server): Drizzle + PostgreSQL schema + Open Trivia DB seed 2026-06-10 12:24:17 +02:00
CLAUDE.md chore: initial scaffold (Turborepo + Vite/React + shadcn) 2026-06-08 14:24:04 +02:00
docker-compose.yml feat(server): Drizzle + PostgreSQL schema + Open Trivia DB seed 2026-06-10 12:24:17 +02:00
package.json feat(server): generic game engine — GameRound interface + orchestration loop 2026-06-08 15:29:49 +02:00
README.md feat: initial commit 2026-06-07 18:45:52 +02:00
tsconfig.json feat: initial commit 2026-06-07 18:45:52 +02:00
turbo.json feat(server): generic game engine — GameRound interface + orchestration loop 2026-06-08 15:29:49 +02:00

shadcn/ui monorepo template

This is a Vite monorepo template with shadcn/ui.

Adding components

To add components to your app, run the following command at the root of your web app:

pnpm dlx shadcn@latest add button -c apps/web

This will place the ui components in the packages/ui/src/components directory.

Using components

To use the components in your app, import them from the ui package.

import { Button } from "@workspace/ui/components/button";