# 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` : ```bash # 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 ```bash # Dans le répertoire backend npm run dev ``` ### 3. Redémarrer le frontend ```bash # 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` : ```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 : ```bash # 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