Go to file
2025-11-17 23:47:54 +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 dev 2025-11-17 23:47:54 +01:00
src dev 2025-11-17 23:47:54 +01:00
test Mise à jour de index.js 2025-11-03 19:21:24 +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
index.html sauvegarde avant pull 2025-10-25 23:21:31 +00:00
index.js dev 2025-11-17 23:47:54 +01:00
Jenkinsfile Fix Jenkinsfile syntax (clean comments) 2025-11-04 15:50:33 +01:00
package-lock.json dev 2025-11-17 23:47:54 +01:00
package.json dev 2025-11-17 23:47:54 +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