nerdware/apps/server/package.json
AyoubBenziza 0619c02cdf feat(quiz): image_reveal format (progressive blur) end-to-end
Server:
- quiz-round handles image_reveal like a text-answer format (tolerant match
  on acceptedAnswers), exposing imageUrl in the round payload; degressive
  scoring comes for free from the existing speed bonus (earlier = blurrier =
  more points)
- repo includes image_reveal in the pool (requires imageUrl + acceptedAnswers)
- back-office: image upload (@fastify/multipart) saved to UPLOADS_DIR and
  served statically on /uploads (@fastify/static); create supports image_reveal
- env: UPLOADS_DIR; gitignore uploads/

Client:
- admin form: "Image à deviner" — upload + preview + accepted answers
- in-game: ImageReveal shows the image with a time-cadenced decreasing blur
  (synced via server timestamps) + text input; reveal shows the clear image
  and the answer

shared: QuizQuestionPayload.imageUrl

Verified against real server+DB: upload (url), static serve (200), create
(201), validation (400).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 21:41:34 +02:00

40 lines
1 KiB
JSON

{
"name": "@nerdware/server",
"version": "0.0.1",
"type": "module",
"private": true,
"scripts": {
"dev": "bun --watch src/index.ts",
"start": "bun src/index.ts",
"test": "bun test",
"build": "bun build ./src/index.ts --target bun --outdir dist",
"lint": "eslint",
"format": "prettier --write \"**/*.ts\"",
"typecheck": "tsc --noEmit",
"db:generate": "drizzle-kit generate",
"db:migrate": "bun src/db/migrate.ts",
"db:seed": "bun src/db/seed.ts",
"db:studio": "drizzle-kit studio"
},
"dependencies": {
"@fastify/cors": "^11",
"@fastify/multipart": "^10.0.0",
"@fastify/static": "^9.1.3",
"@nerdware/shared": "workspace:*",
"drizzle-orm": "^0.45",
"fastify": "^5",
"postgres": "^3.4",
"socket.io": "^4.8.1"
},
"devDependencies": {
"@eslint/js": "^10",
"@types/bun": "latest",
"@types/node": "^24",
"drizzle-kit": "^0.31",
"eslint": "^10",
"globals": "^17",
"pino-pretty": "^13",
"typescript": "~6",
"typescript-eslint": "^8"
}
}