Scolaire

RailRoad — API REST de gestion ferroviaire

API REST de gestion ferroviaire réalisée en binôme — utilisateurs, trains, gares et billets, authentification JWT, contrôle d'accès par rôle et documentation Swagger.

Terminé

Ma contribution

J'ai assuré l'essentiel de l'implémentation technique de l'API, de son modèle de données et de ses mécanismes d'authentification et d'autorisation. Le projet a été réalisé en binôme, avec une contribution de mon coéquipier principalement sur la relecture et le support de présentation.

Points clés

  • Quatre ressources — utilisateurs, trains, gares, billets — exposées en API REST
  • Authentification JWT et contrôle d'accès par rôle (utilisateur, employé, administrateur)
  • Documentation Swagger générée depuis les routes et servie par l'API

Objectif

Concevoir l’API d’une compagnie ferroviaire fictive : gérer les utilisateurs, les trains, les gares et la réservation de billets, avec des droits différents selon le rôle de chacun. Le résultat est une API REST, sans interface utilisateur.

Architecture

L’API est écrite en Node.js avec Express et s’appuie sur MongoDB, via Mongoose. Le code est découpé en couches : des routeurs par ressource, des repositories qui portent la logique métier et les contrôles d’accès, et des schémas Mongoose qui définissent le modèle de données et ses validations.

Fonctionnalités

  • Utilisateurs : inscription, connexion, consultation et modification de son compte, suppression logique.
  • Trains : création, modification, suppression et annulation ; liste triable par date de départ, gare de départ ou d’arrivée, avec un nombre de résultats paramétrable.
  • Gares : création, modification, suppression et liste triée par nom ; supprimer une gare annule les trains qui la desservent.
  • Billets : réservation d’un trajet et liste de ses propres billets.

Authentification et autorisations

Les mots de passe sont hachés avant d’être enregistrés. À la connexion, l’API délivre un jeton JWT à durée de vie limitée, vérifié par un middleware sur les routes protégées. Chaque opération applique ensuite les droits du rôle : la gestion des trains et des gares est réservée aux administrateurs, l’annulation d’un train est aussi ouverte aux employés, et un utilisateur n’accède qu’à son propre compte.

Documentation

La documentation OpenAPI (Swagger) est générée à partir des routes et de leurs annotations, puis servie par l’application elle-même : chaque endpoint peut être consulté et essayé depuis le navigateur.

Limites

Le projet est resté un exercice académique : certaines fonctionnalités prévues, notamment la validation des billets et la gestion complète des images des gares, n’ont pas été finalisées.