Backend: - Remove malicious crypto dep; use node:crypto - Add helmet + rate-limit (100 req/min) - CORS whitelist via CORS_ORIGINS env - Validate required env vars on boot (fail fast) - Health endpoint + clean shutdown (SIGINT/SIGTERM) - Multipart limits (15MB / 1 file) - Fix findUnique composite where bug (use findFirst) - Wrap JSON.parse(generatedRecipe) in try/catch - Isolate DALL-E best-effort; ENABLE_IMAGE_GENERATION toggle - Lazy MinIO client, safe TLS handling - Uniform fastify.hashPassword/comparePassword - Proper audio cleanup on delete - ESLint flat config, Prettier, .env.example, .editorconfig Frontend: - Delete 10 orphan/duplicate components - Remove orphan pages/recipe/, data/recipes.ts, root src/ - Fix /reset-password route order (was unreachable) - Remove unused ky dep Docs: - README rewritten to match real routes and env vars Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
41 lines
1.0 KiB
JSON
41 lines
1.0 KiB
JSON
{
|
|
"name": "recipe-app-backend",
|
|
"version": "1.0.0",
|
|
"description": "Backend pour application de recettes",
|
|
"main": "src/server.js",
|
|
"scripts": {
|
|
"start": "node src/server.js",
|
|
"dev": "nodemon src/server.js",
|
|
"migrate": "prisma migrate dev",
|
|
"studio": "prisma studio",
|
|
"lint": "eslint src",
|
|
"format": "prettier --write \"src/**/*.js\""
|
|
},
|
|
"dependencies": {
|
|
"@fastify/cors": "^8.5.0",
|
|
"@fastify/helmet": "^11.1.1",
|
|
"@fastify/jwt": "^7.0.0",
|
|
"@fastify/multipart": "^8.0.0",
|
|
"@fastify/rate-limit": "^9.1.0",
|
|
"@prisma/client": "^5.0.0",
|
|
"bcrypt": "^5.1.1",
|
|
"dotenv": "^16.3.1",
|
|
"fastify": "^4.19.0",
|
|
"fastify-plugin": "^4.5.0",
|
|
"google-auth-library": "^9.15.1",
|
|
"minio": "^8.0.5",
|
|
"nodemailer": "^6.10.0",
|
|
"openai": "^4.0.0",
|
|
"resend": "^4.1.2",
|
|
"stripe": "^12.12.0"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.21.0",
|
|
"eslint": "^9.21.0",
|
|
"globals": "^15.15.0",
|
|
"nodemon": "^3.0.1",
|
|
"prettier": "^3.3.0",
|
|
"prisma": "^5.0.0"
|
|
}
|
|
}
|