Aller au contenu principal

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 :

  1. Enregistré en base pour redondance.
  2. 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