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>
30 lines
642 B
Plaintext
30 lines
642 B
Plaintext
# ---- Requis ----
|
|
DATABASE_URL="file:./prisma/dev.db"
|
|
JWT_SECRET="change-me-please-use-at-least-32-characters"
|
|
OPENAI_API_KEY="sk-..."
|
|
|
|
# ---- Serveur ----
|
|
PORT=3000
|
|
LOG_LEVEL=info
|
|
CORS_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
|
|
FRONTEND_URL=http://localhost:5173
|
|
|
|
# ---- IA ----
|
|
OPENAI_TEXT_MODEL=gpt-4o-mini
|
|
ENABLE_IMAGE_GENERATION=true
|
|
|
|
# ---- Stripe (optionnel) ----
|
|
STRIPE_SECRET_KEY=
|
|
|
|
# ---- MinIO (optionnel — fallback local sinon) ----
|
|
MINIO_ENDPOINT=
|
|
MINIO_PORT=9000
|
|
MINIO_USE_SSL=false
|
|
MINIO_ACCESS_KEY=
|
|
MINIO_SECRET_KEY=
|
|
MINIO_BUCKET=freedge
|
|
MINIO_ALLOW_SELF_SIGNED=false
|
|
|
|
# ---- Email (optionnel) ----
|
|
RESEND_API_KEY=
|