Données et persistance
Le site n'est pas uniquement statique ; il gère du contenu dynamique via Prisma ORM.
Schéma (prisma/schema.prisma)
1. Article de blog (BlogPost)
Pour garder la liberté éditoriale sans abonnement à un CMS headless, nous avons construit un CMS simple.
slug: Identifiant d'URL unique.content: Contenu Markdown ou HTML.featured_image: URL vers le bucket.
2. Contacts (Contact)
Chaque envoi du formulaire de contact est :
- Enregistré en base pour redondance.
- Envoyé par email via SMTP.
Migration de la base
Nous utilisons un pattern Docker dédié pour les migrations. Dans docker-compose.yml, un service éphémère migrate (construit depuis le même Dockerfile, ex. target builder) s'exécute avant le démarrage de l'app web.
services:
migrate:
build:
context: .
dockerfile: Dockerfile
target: builder
command: ["npx", "prisma", "db", "push"]
restart: "no"
web:
depends_on:
migrate:
condition: service_completed_successfully