Étude de cas
Event Booking App
Application de gestion d'événements avec système de réservation et gestion des rôles utilisateurs.
Étude de cas par Keltoum Malouki

Vue d'ensemble
Event Booking App est une application web full stack réalisée par Keltoum Malouki, développeuse web full stack basée à Casablanca, au Maroc, pour gérer des événements et leurs réservations avec une gestion rigoureuse des rôles et de la sécurité. L'application associe une API NestJS, une interface Next.js en TypeScript et une base de données PostgreSQL, conteneurisées avec Docker et vérifiées par un pipeline d'intégration continue GitHub Actions.
Le problème
Les organisations qui proposent des formations, des ateliers ou des conférences gèrent souvent les inscriptions à la main, avec des fichiers Excel et des échanges d'e-mails. Event Booking App centralise les événements et les réservations au même endroit et remplace ces étapes manuelles par un processus automatisé et sécurisé.
Mon rôle
J'ai travaillé sur ce projet en tant que développeuse full stack, de la conception à la livraison :
- modélisation du domaine avec des diagrammes UML de cas d'utilisation et de classes ;
- organisation du backlog en epics et en user stories (authentification, gestion des événements, système de réservation, interface et tickets PDF), suivies dans Jira ;
- développement de l'API NestJS et de l'interface Next.js ;
- écriture de tests unitaires et de tests de bout en bout ;
- conteneurisation avec Docker Compose et mise en place du pipeline GitHub Actions.
Fonctionnalités clés
Pour les participants
- Consulter les événements publiés.
- Réserver une place sur un événement tant qu'il n'est pas complet.
- Consulter et annuler ses réservations.
- Télécharger un ticket PDF avec QR code une fois la réservation confirmée.
Pour les administrateurs
- Créer des événements en brouillon, puis les modifier, les publier ou les annuler.
- Confirmer, refuser ou annuler les réservations en attente.
- Consulter les réservations par événement et par participant.
- Suivre des indicateurs comme le taux de remplissage et les statuts des réservations.
Stack technique et architecture
| Couche | Technologies |
|---|---|
| Front-end | Next.js, TypeScript, React Hook Form, Zod |
| Back-end | NestJS, TypeScript, TypeORM, JWT, class-validator |
| Base de données | PostgreSQL |
| Tests | Jest, React Testing Library |
| DevOps | Docker, Docker Compose, GitHub Actions |
| Gestion de projet | Git, GitHub, Jira |
Le dépôt est divisé en deux applications, backend (NestJS) et frontend (Next.js), orchestrées avec Docker Compose aux côtés d'un conteneur PostgreSQL. L'API est organisée en modules fonctionnels — authentification, utilisateurs, événements et réservations — chacun avec son contrôleur, son service, ses DTO et ses entités. Les tickets PDF sont générés côté serveur avec PDFKit, et chaque ticket porte un QR code qui renvoie à sa réservation.
Approche : sécurité et qualité
La sécurité est intégrée à l'API dès le départ, plutôt qu'ajoutée à la fin :
- authentification JWT et hachage des mots de passe avec bcrypt ;
- contrôle d'accès basé sur les rôles (RBAC), qui sépare administrateurs et participants ;
- validation des entrées sur chaque requête grâce aux DTO et à class-validator ;
- politique CORS configurée, avec les secrets conservés dans des variables d'environnement.
Les règles de réservation sont appliquées côté serveur : seuls les événements publiés peuvent être réservés, l'API vérifie la capacité de l'événement par rapport aux réservations confirmées, et un participant ne peut pas réserver deux fois le même événement.
Les push et les pull requests déclenchent un pipeline GitHub Actions qui analyse le code (lint), exécute les tests et compile séparément le back-end et le front-end. Les tests de bout en bout du back-end s'exécutent sur un conteneur de service PostgreSQL, et les images Docker sont construites une fois tous les autres jobs réussis. Les commits suivent la convention Conventional Commits et référencent les tickets Jira.
Liens
- Code source : github.com/Keltoummalouki/event-booking-app
- Autres études de cas : Tous les projets
- Besoin d'une application similaire ? Travaillons ensemble







