the-tip-top-backend/README.md
2025-11-17 23:47:54 +01:00

160 lines
4.0 KiB
Markdown

# The Tip Top Backend API
API backend pour le jeu-concours The Tip Top.
## Configuration
### Variables d'environnement
Le fichier `.env` contient la configuration de la base de données et de l'application :
```env
DB_HOST=51.75.24.29
DB_PORT=5433
DB_USER=postgres
DB_PASS=postgres
DB_NAME=thetiptop_dev
PORT=4000
JWT_SECRET=thetiptopsecret
SESSION_SECRET=thetiptopsessionsecret
```
**Note** : La base de données PostgreSQL est hébergée sur le serveur distant `51.75.24.29:5433`.
## Installation
```bash
# Installer les dépendances
npm install
# Créer le schéma de la base de données
psql -U postgres -d thetiptop_dev -p 5433 -f database/schema.sql
# Insérer les données de test
npm run db:seed
```
## Démarrage
### Démarrage normal
```bash
npm start
```
### Démarrage en mode développement (avec nodemon)
```bash
npm run dev
```
### Arrêter le serveur
**Sur Windows :**
1. Ouvrez le Gestionnaire des tâches (Ctrl + Shift + Esc)
2. Cherchez les processus "Node.js"
3. Terminez-les tous
**Ou via PowerShell :**
```powershell
Get-Process node | Stop-Process -Force
```
## Structure du projet
```
the-tip-top-backend/
├── database/
│ ├── schema.sql # Schéma de la base de données
│ ├── seed.js # Script de seed
│ └── README.md # Documentation DB
├── src/
│ ├── config/
│ │ └── env.js # Configuration environnement
│ ├── controllers/ # Contrôleurs (logique métier)
│ ├── middleware/ # Middlewares (auth, validation, erreurs)
│ ├── routes/ # Définition des routes
│ ├── services/ # Services (email, etc.)
│ ├── utils/ # Utilitaires
│ └── validations/ # Schémas de validation Zod
├── db.js # Configuration PostgreSQL
├── index.js # Point d'entrée de l'application
└── .env # Variables d'environnement
```
## Routes API
### Authentification (`/api/auth`)
- `POST /register` - Inscription
- `POST /login` - Connexion
- `GET /verify-email/:token` - Vérification email
- `POST /forgot-password` - Demande de réinitialisation
- `POST /reset-password` - Réinitialisation du mot de passe
### Utilisateur (`/api/users`)
- `GET /profile` - Récupérer le profil
- `PUT /profile` - Mettre à jour le profil
- `POST /change-password` - Changer le mot de passe
### Jeu (`/api/game`)
- `POST /play` - Jouer et obtenir un ticket
- `GET /my-tickets` - Mes tickets
- `GET /ticket/:code` - Détails d'un ticket
### Employé (`/api/employee`)
- `POST /validate-ticket` - Valider un ticket
- `GET /pending-tickets` - Tickets en attente
### Admin (`/api/admin`)
- `GET /statistics` - Statistiques globales
- `GET /prizes` - Liste des prix
- `POST /prizes` - Créer un prix
- `PUT /prizes/:id` - Modifier un prix
- `DELETE /prizes/:id` - Supprimer un prix
- `GET /users` - Liste des utilisateurs
- `POST /employees` - Créer un employé
- `PUT /users/:id` - Modifier un utilisateur
- `DELETE /users/:id` - Supprimer un utilisateur
- `GET /tickets` - Liste des tickets
## Comptes de test
Après avoir exécuté le seed :
| Email | Mot de passe | Rôle |
|-------|-------------|------|
| admin@thetiptop.com | Admin123! | ADMIN |
| employee1@thetiptop.com | Employee123! | EMPLOYEE |
| employee2@thetiptop.com | Employee123! | EMPLOYEE |
| client1@example.com | Client123! | CLIENT |
| client2-5@example.com | Client123! | CLIENT |
## Tests
```bash
# Tests unitaires
npm test
# Tests d'intégration
npm run test:integration
```
## Endpoints de monitoring
- `GET /` - Health check
- `GET /db-check` - Vérification connexion DB
- `GET /metrics` - Métriques Prometheus
## Technologies
- **Express** - Framework web
- **PostgreSQL** - Base de données
- **JWT** - Authentification
- **Bcrypt** - Hashage de mots de passe
- **Zod** - Validation des données
- **Nodemailer** - Envoi d'emails
- **Helmet** - Sécurité HTTP
- **CORS** - Gestion des origines
- **Morgan** - Logs HTTP
- **Prometheus** - Métriques