Updated the getPendingTickets endpoint to return nested objects for user and prize data instead of flat SQL columns. Frontend expects structure like ticket.user.firstName and ticket.prize.name, which now displays correctly in the employee verification interface instead of showing N/A. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| database | ||
| node_modules | ||
| public | ||
| scripts | ||
| src | ||
| test | ||
| .dockerignore | ||
| .env | ||
| .env.dev | ||
| .env.preprod | ||
| .env.production | ||
| API-DOCUMENTATION.md | ||
| backend.log | ||
| create-test-users.sql | ||
| db.js | ||
| DEPLOYMENT-WORKFLOW.md | ||
| Dockerfile | ||
| eslint.config.js | ||
| index.html | ||
| index.js | ||
| JENKINS_AUTO_TRIGGER_SETUP.md | ||
| JENKINS_WEBHOOK_SETUP.md | ||
| Jenkinsfile | ||
| jest.config.js | ||
| package-lock.json | ||
| package.json | ||
| postman-collection.json | ||
| README.md | ||
| restart-all.bat | ||
| RESTART-ALL.ps1 | ||
| restart-backend.bat | ||
| RESTART-FORCE.bat | ||
| test-admin-features.js | ||
| test-all-roles.sh | ||
| test-auth.sh | ||
| test-prizes.js | ||
| test-roles.sh | ||
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 :
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
# 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
npm start
Démarrage en mode développement (avec nodemon)
npm run dev
Arrêter le serveur
Sur Windows :
- Ouvrez le Gestionnaire des tâches (Ctrl + Shift + Esc)
- Cherchez les processus "Node.js"
- Terminez-les tous
Ou via 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- InscriptionPOST /login- ConnexionGET /verify-email/:token- Vérification emailPOST /forgot-password- Demande de réinitialisationPOST /reset-password- Réinitialisation du mot de passe
Utilisateur (/api/users)
GET /profile- Récupérer le profilPUT /profile- Mettre à jour le profilPOST /change-password- Changer le mot de passe
Jeu (/api/game)
POST /play- Jouer et obtenir un ticketGET /my-tickets- Mes ticketsGET /ticket/:code- Détails d'un ticket
Employé (/api/employee)
POST /validate-ticket- Valider un ticketGET /pending-tickets- Tickets en attente
Admin (/api/admin)
GET /statistics- Statistiques globalesGET /prizes- Liste des prixPOST /prizes- Créer un prixPUT /prizes/:id- Modifier un prixDELETE /prizes/:id- Supprimer un prixGET /users- Liste des utilisateursPOST /employees- Créer un employéPUT /users/:id- Modifier un utilisateurDELETE /users/:id- Supprimer un utilisateurGET /tickets- Liste des tickets
Comptes de test
Après avoir exécuté le seed :
| 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
# Tests unitaires
npm test
# Tests d'intégration
npm run test:integration
Endpoints de monitoring
GET /- Health checkGET /db-check- Vérification connexion DBGET /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