the-tip-top-backend/NEWSLETTER_SETUP.md
soufiane 4759ce99e7 feat: add newsletter subscription feature
- Add newsletter database table migration
- Create newsletter controller with subscribe/unsubscribe endpoints
- Add newsletter routes and validation
- Implement newsletter service with email validation
- Add setup documentation and migration scripts
- Include test page for newsletter functionality

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 00:07:44 +01:00

3.5 KiB

Newsletter Feature - Installation Guide

Vue d'ensemble

La fonctionnalité newsletter a été ajoutée au backend et frontend. Elle permet aux utilisateurs de s'abonner à la newsletter depuis le footer du site.

Backend

Fichiers créés :

  1. Migration de base de données : database/migrations/add-newsletter-table.sql
  2. Controller : src/controllers/newsletter.controller.js
  3. Service : src/services/newsletter.service.js
  4. Routes : src/routes/newsletter.routes.js
  5. Validation : src/validations/newsletter.validation.js

Endpoints API :

  • POST /api/newsletter/subscribe - S'abonner (public)
  • POST /api/newsletter/unsubscribe - Se désabonner (public)
  • GET /api/newsletter/subscribers - Liste des abonnés (Admin seulement)
  • GET /api/newsletter/count - Nombre d'abonnés actifs (Admin seulement)

Frontend

Fichiers modifiés/créés :

  1. Service : services/newsletter.service.ts
  2. Constants : utils/constants.ts (ajout des endpoints newsletter)
  3. Footer : components/Footer.tsx (ajout du formulaire d'inscription)

Installation

1. Appliquer la migration de base de données

Exécutez le script SQL pour créer la table newsletters :

# Depuis le répertoire backend
psql -h 51.75.24.29 -U postgres -d thetiptop_dev -p 5433 -f database/migrations/add-newsletter-table.sql

Ou connectez-vous à votre base de données et exécutez manuellement le contenu du fichier database/migrations/add-newsletter-table.sql.

2. Redémarrer le backend

# Dans le répertoire backend
npm run dev

3. Redémarrer le frontend

# Dans le répertoire frontend
npm run dev

Fonctionnalités

Pour les utilisateurs :

  • Formulaire d'inscription à la newsletter dans le footer
  • Validation d'email en temps réel
  • Messages de confirmation/erreur
  • Email de confirmation d'abonnement automatique
  • Possibilité de se désabonner

Pour les administrateurs :

  • Voir la liste complète des abonnés
  • Voir le nombre d'abonnés actifs
  • API endpoints protégés par authentification et rôle ADMIN

Emails

Les emails de confirmation sont envoyés automatiquement lors de l'inscription. Configuration SMTP requise dans le fichier .env :

SMTP_HOST=your-smtp-host
SMTP_PORT=587
SMTP_USER=your-smtp-user
SMTP_PASS=your-smtp-password
EMAIL_FROM=noreply@thetiptop.fr

En mode développement sans configuration SMTP, les emails sont affichés dans la console.

Test

Test manuel :

  1. Ouvrez le frontend (http://localhost:3000)
  2. Scrollez jusqu'au footer
  3. Entrez votre email dans le champ "Newsletter"
  4. Cliquez sur "S'inscrire"
  5. Vérifiez le message de confirmation

Test API avec curl :

# S'abonner
curl -X POST http://localhost:4000/api/newsletter/subscribe \
  -H "Content-Type: application/json" \
  -d '{"email": "test@example.com"}'

# Nombre d'abonnés (nécessite un token admin)
curl -X GET http://localhost:4000/api/newsletter/count \
  -H "Authorization: Bearer YOUR_ADMIN_TOKEN"

Sécurité

  • Les endpoints publics (subscribe/unsubscribe) ne nécessitent pas d'authentification
  • Les endpoints admin (subscribers/count) nécessitent un token JWT et le rôle ADMIN
  • Validation Zod sur les entrées
  • Protection contre les doublons d'email
  • Sanitisation des données

Prochaines étapes possibles

  • Ajout d'une page de gestion de newsletter pour les admins
  • Export de la liste des abonnés en CSV
  • Système de campagnes email
  • Segmentation des abonnés
  • Statistiques d'engagement