Go to file
soufiane e72923ec86 fix: transform pending tickets data to match frontend expectations
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>
2025-11-19 14:30:44 +01:00
database dev 2025-11-17 23:47:54 +01:00
node_modules dev 2025-11-17 23:47:54 +01:00
public dev 2025-11-17 23:47:54 +01:00
scripts fix: resolve ESLint errors and Jest configuration 2025-11-18 16:49:19 +01:00
src fix: transform pending tickets data to match frontend expectations 2025-11-19 14:30:44 +01:00
test fix: update test to use correct route (/) instead of /health 2025-11-18 16:59:43 +01:00
.dockerignore Initial commit du frontend The Tip Top 2025-10-30 11:11:05 +00:00
.env dev 2025-11-17 23:47:54 +01:00
.env.dev dev 2025-11-17 23:47:54 +01:00
.env.preprod dev 2025-11-17 23:47:54 +01:00
.env.production dev 2025-11-17 23:47:54 +01:00
API-DOCUMENTATION.md dev 2025-11-17 23:47:54 +01:00
backend.log dev 2025-11-17 23:47:54 +01:00
create-test-users.sql dev 2025-11-17 23:47:54 +01:00
db.js dev 2025-11-17 23:47:54 +01:00
DEPLOYMENT-WORKFLOW.md dev 2025-11-17 23:47:54 +01:00
Dockerfile Fix Jenkinsfile syntax (clean comments) 2025-11-04 15:29:35 +01:00
eslint.config.js fix: resolve ESLint errors and Jest configuration 2025-11-18 16:49:19 +01:00
index.html sauvegarde avant pull 2025-10-25 23:21:31 +00:00
index.js fix: convert test to ES6 modules and export app 2025-11-18 16:53:46 +01:00
JENKINS_AUTO_TRIGGER_SETUP.md fix: simplify Jenkins triggers to use only pollSCM + add setup docs 2025-11-18 16:08:28 +01:00
JENKINS_WEBHOOK_SETUP.md feat: add automatic deployment triggers to Jenkinsfile 2025-11-18 15:23:32 +01:00
Jenkinsfile fix: simplify Jenkins triggers to use only pollSCM + add setup docs 2025-11-18 16:08:28 +01:00
jest.config.js fix: resolve ESLint errors and Jest configuration 2025-11-18 16:49:19 +01:00
package-lock.json fix: simplify Jenkins triggers to use only pollSCM + add setup docs 2025-11-18 16:08:28 +01:00
package.json fix: improve CI/CD quality checks and fix test/lint configuration 2025-11-18 15:40:04 +01:00
postman-collection.json dev 2025-11-17 23:47:54 +01:00
README.md dev 2025-11-17 23:47:54 +01:00
restart-all.bat dev 2025-11-17 23:47:54 +01:00
RESTART-ALL.ps1 dev 2025-11-17 23:47:54 +01:00
restart-backend.bat dev 2025-11-17 23:47:54 +01:00
RESTART-FORCE.bat dev 2025-11-17 23:47:54 +01:00
test-admin-features.js dev 2025-11-17 23:47:54 +01:00
test-all-roles.sh dev 2025-11-17 23:47:54 +01:00
test-auth.sh dev 2025-11-17 23:47:54 +01:00
test-prizes.js dev 2025-11-17 23:47:54 +01:00
test-roles.sh dev 2025-11-17 23:47:54 +01:00

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 :

  1. Ouvrez le Gestionnaire des tâches (Ctrl + Shift + Esc)
  2. Cherchez les processus "Node.js"
  3. 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 - 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

# 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