Développement en équipe · 2025 — 2026
API Ministage
Gestion et réservation de mini-stages inter-établissements
Conception d'une API REST sécurisée avec Symfony & API Platform
Dans le cadre d'un projet BTS, j'ai participé au développement d'une application permettant aux élèves de réserver des sessions de mini-stages dans leur établissement ou dans un autre. Le projet expose une API REST sécurisée consommable par n'importe quel front-end, avec une gestion fine des rôles et des accès. L'architecture suit les conventions REST et les bonnes pratiques Symfony, avec une convention de nommage stricte sur les branches et pull requests.
Environnement Technique
Architecture du projet
Entity · Repository · Controller · DataFixtures
Le projet suit l'architecture MVC de Symfony, avec une séparation claire entre les entités Doctrine, les repositories, et les contrôleurs. Les DataFixtures permettent de peupler la base PostgreSQL avec des données de test cohérentes pour chaque entité. API Platform expose automatiquement les opérations CRUD sécurisées via des annotations directement sur les entités.
src/
├── ApiResource/
├── Controller/
│ ├── RegistrationController.php
│ └── UserController.php
├── DataFixtures/
│ ├── AcademieFixtures.php
│ ├── AppFixtures.php
│ ├── EleveFixtures.php
│ ├── EtablissementFixtures.php
│ ├── FonctionFixtures.php
│ ├── FormationFixtures.php
│ ├── MinistageFixtures.php
│ ├── ProfesseurFixtures.php
│ ├── ProfilFixtures.php
│ ├── ReservationFixtures.php
│ ├── TypeEtabFixtures.php
│ ├── TypeFormationFixtures.php
│ ├── UserFixtures.php
│ └── UtilisateurFixtures.php
├── Entity/
│ ├── Academie.php
│ ├── Eleve.php
│ ├── Etablissement.php
│ ├── Fonction.php
│ ├── Formation.php
│ ├── Ministage.php
│ ├── Professeur.php
│ ├── Profil.php
│ ├── Reservation.php
│ ├── TypeEtab.php
│ ├── TypeFormation.php
│ ├── User.php
│ └── Utilisateur.php
├── Kernel.php
└── Repository/
├── AcademieRepository.php
├── EleveRepository.php
├── EtablissementRepository.php
├── FonctionRepository.php
├── FormationRepository.php
├── MinistageRepository.php
├── ProfesseurRepository.php
├── ProfilRepository.php
├── ReservationRepository.php
├── TypeEtabRepository.php
├── TypeFormationRepository.php
├── UserRepository.php
└── UtilisateurRepository.phpUser (id, email, roles, password)Utilisateur (#id, nom, prenom, mail)Profil (id, nom, #idUtilisateur)Fonction (id, nom, #idUtilisateur)Etablissement (id, rne, nom_etab, telephone, ville, adresse, mail, cp, #idMinistage, #idEleve, #idUtilisateur)Academie (id, nom, #idEtablissement)TypeEtab (id, nom, nomcourt, #idEtablissement)Formation (id, nom, #idMinistage)TypeFormation (id, nom, nomcourt, #idFormation)Eleve (id, nom, prenom, classe, date_naiss)Ministage (id, date_debut, date_fin, nb_place, nb_place_reste, lieu)Professeur (id, nom, prenom, #idMinistage)Reservation (id, confirmation, rappel, absence, #idUtilisateur, #idEleve, #idMinistage)Proposer (#idEtablissement, #idFormation)
Sécurité & gestion des rôles
JWT · Voters Symfony · RBAC
Chaque endpoint est protégé par des expressions de sécurité Symfony directement sur les opérations API Platform. Quatre rôles distincts définissent les permissions d'accès en lecture, écriture et suppression.
Endpoints principaux
REST · GET · POST · PATCH · DELETE
L'API respecte les conventions REST standard. Les URLs suivent le pattern /api/{ressource} avec les méthodes HTTP correspondantes. La convention de nommage des branches suit le pattern Feat_{Entity} et les pull requests Feat_{Entity} #{num_ticket}.




