Skip to content

É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

Capture d'écran de Event Booking App, un projet de 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

CoucheTechnologies
Front-endNext.js, TypeScript, React Hook Form, Zod
Back-endNestJS, TypeScript, TypeORM, JWT, class-validator
Base de donnéesPostgreSQL
TestsJest, React Testing Library
DevOpsDocker, Docker Compose, GitHub Actions
Gestion de projetGit, 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

Autres projets

Voir tous les projets