Documentation — Newsletter

Photo de header, création d’articles et archivage des numéros. Gérez le contenu de votre newsletter depuis l’interface ou l’API.

Le module Newsletter fait partie de l’application Next.js. Il permet de configurer une image d’en-tête (URL), de créer et éditer des articles (titre, contenu, extrait, date de publication) et de archiver les articles ou numéros. Les données sont stockées en base PostgreSQL (Prisma).

Fonctionnalités

  • Photo de header : paramétrage via /modules/newsletter/parametres. Une URL d’image est enregistrée et peut être réutilisée pour l’affichage de la newsletter.
  • Articles : titre, contenu (texte), extrait optionnel, date de publication optionnelle. Chaque article est lié à l’utilisateur connecté (auteur).
  • Archivage : chaque article peut être marqué comme archivé. La liste des articles peut être filtrée (actifs, archivés, tous).

Installation

Le module utilise Prisma et PostgreSQL. Appliquez la migration Newsletter si ce n’est pas déjà fait.

npx prisma migrate deploy
# ou en dev :
npx prisma migrate dev --name add_newsletter

Modèles de données

NewsletterSettings : une ligne (id = "default") avec headerImageUrl (optionnel).

NewsletterArticle : id, title, content, excerpt, publishedAt, archived, authorId, createdAt, updatedAt.

Base de données et prérequis production : détail des structures et variables d'environnement dans docs/DATABASE.md du dépôt.

API

  • GET /api/newsletter/settings — récupère les paramètres (header image).
  • PUT /api/newsletter/settings — met à jour les paramètres (body : { headerImageUrl?: string | null }).
  • GET /api/newsletter/articles — liste des articles de l’utilisateur (query : archived = true | false, sortBy, sortOrder).
  • POST /api/newsletter/articles — crée un article (body : title, content, excerpt?, publishedAt?).
  • GET /api/newsletter/articles/[id] — détail d’un article.
  • PUT /api/newsletter/articles/[id] — met à jour un article (title, content, excerpt, publishedAt, archived).
  • DELETE /api/newsletter/articles/[id] — supprime un article.
  • PATCH /api/newsletter/articles/[id]/archive — bascule l’état archivé (body : { archived?: boolean }).

Toutes les routes API nécessitent une session utilisateur (ou SKIP_AUTH_FOR_TEST en environnement de test).