Files
game-scoreboard/package.json
T
joshuaandClaude Opus 5.5 2702491096 Phase 7: judges — links, phone page, open link, judged control room
- Setup: nominate judges, copy personal links, QR codes (generated on
  demand in the browser), revoke/restore, and an open-link toggle.
- GET /api/judge/[token] returns only that judge's own scores; PUT
  .../scores runs every check from ARCHITECTURE.md in checkJudgeWrite
  (pure, unit-tested) after one parallel lookup, plus a rate limit.
- /j/[token]: mobile cards per team, spotlight pinned first, autosave
  with per-card status, read-only when locked/done, link-off when revoked.
- /jo/[token]: name form -> personal link, remembered in localStorage so
  a re-scan doesn't create a second judge.
- Control room: averages with on-request overrides, judge progress
  matrix, per-judge breakdown, spotlight select and lock toggle.
- usePendingEdits shares the optimistic autosave logic between the admin
  grid and the judge page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 15:29:33 +02:00

40 lines
1014 B
JSON

{
"name": "game-night-live",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint",
"test": "vitest run",
"test:watch": "vitest",
"check:rls": "node --env-file=.env.local scripts/check-rls.mjs",
"gen:types": "node --env-file=.env.local scripts/gen-types.mjs",
"test:coverage": "vitest run --coverage"
},
"dependencies": {
"@supabase/ssr": "^0.12.7",
"@supabase/supabase-js": "^2.117.2",
"next": "16.3.8",
"qrcode": "^1.5.4",
"react": "19.2.8",
"react-dom": "19.2.8",
"server-only": "^0.0.1",
"zod": "^4.6.5"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/node": "^22",
"@types/qrcode": "^1.5.6",
"@types/react": "^19",
"@types/react-dom": "^19",
"@vitest/coverage-v8": "^5.0.3",
"eslint": "^9",
"eslint-config-next": "16.3.8",
"tailwindcss": "^4",
"typescript": "^5",
"vitest": "^5.0.3"
}
}