Mirrors the button on the settings page, for verifying a deployment from
the host before anyone signs in, and for watching the cache work.
Measured against the live service, which settles a question the spec had
guessed at: a short phrase takes between 4.6 and 10.7 seconds, because
the endpoint really does start a Claude Code process. The ten-second
timeout the spec assumed would have failed intermittently on exactly the
kind of message this shop writes. Thirty seconds stands.
Cached answers come back in 3 milliseconds, so the cache is worth
roughly three thousand times its complexity.
Quality checked on real phrasing: times and dates survive unchanged
("Ouverture retardée à 14:00" to "Delayed opening at 14:00 today"),
which is what the prompt asks for and what the screen needs.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012cSY9pVhZmJUKNN7wf1Myd
67 lines
1.8 KiB
JSON
67 lines
1.8 KiB
JSON
{
|
|
"name": "ita-ito-trmnl-admin",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"license": "UNLICENSED",
|
|
"engines": {
|
|
"node": ">=20.9"
|
|
},
|
|
"scripts": {
|
|
"dev": "next dev --port 3010",
|
|
"build": "next build",
|
|
"start": "next start --port ${PORT:-3010}",
|
|
"lint": "eslint . --max-warnings 0",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"coverage": "vitest run --coverage",
|
|
"seed": "tsx prisma/seed.ts",
|
|
"screen:preview": "tsx scripts/preview.ts",
|
|
"brand": "tsx scripts/brand.ts",
|
|
"e2e": "playwright test",
|
|
"holidays:sync": "tsx scripts/sync-holidays.ts",
|
|
"translate:test": "tsx scripts/test-translation.ts"
|
|
},
|
|
"dependencies": {
|
|
"@fontsource-variable/inter": "^5.3.0",
|
|
"@fontsource-variable/source-serif-4": "^5.3.0",
|
|
"@prisma/adapter-pg": "^7.10.0",
|
|
"@prisma/client": "^7.10.0",
|
|
"@resvg/resvg-js": "^2.6.2",
|
|
"date-fns": "^4.4.0",
|
|
"date-fns-tz": "^3.2.0",
|
|
"dotenv": "^18.0.1",
|
|
"next": "^16.3.5",
|
|
"next-auth": "^5.0.0-beta.32",
|
|
"node-cron": "^4.6.0",
|
|
"pg": "^8.23.0",
|
|
"react": "^19.3.0",
|
|
"react-dom": "^19.3.0",
|
|
"satori": "^0.33.4",
|
|
"zod": "^4.6.5"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.5",
|
|
"@fontsource/inter": "^5.3.0",
|
|
"@fontsource/source-serif-4": "^5.3.0",
|
|
"@tailwindcss/postcss": "^4.3.3",
|
|
"@types/node": "^26.6.2",
|
|
"@types/node-cron": "^3.0.11",
|
|
"@types/pg": "^8.23.1",
|
|
"@types/react": "^19.3.0",
|
|
"@types/react-dom": "^19.3.0",
|
|
"@vitest/coverage-v8": "^4.1.11",
|
|
"eslint": "^9.39.5",
|
|
"eslint-config-next": "^16.3.5",
|
|
"msw": "^2.15.0",
|
|
"postcss": "^8.5.28",
|
|
"prisma": "^7.10.0",
|
|
"sharp": "^0.35.4",
|
|
"tailwindcss": "^4.3.3",
|
|
"tsx": "^4.23.15",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.70.0",
|
|
"vitest": "^4.1.11"
|
|
}
|
|
}
|