- 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>
127 lines
3.5 KiB
Markdown
127 lines
3.5 KiB
Markdown
# 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
|