Retour aux projets

Étude de cas

Gestion de Scolarité - Application Symfony

Page d'accueil
Liste des étudiants
Détail d'un étudiant
Gestion des diplômes
Gestion des promotions
Formulaire d'édition

Contexte

Dans le cadre d'un projet étudiant, l'objectif était de développer une application web complète de gestion académique avec Symfony 7.3 et PHP 8.2+. L'application devait permettre de gérer les étudiants, diplômes et promotions d'un établissement d'enseignement supérieur.

Ce projet a été l'occasion de mettre en pratique les concepts fondamentaux du framework Symfony : architecture MVC, ORM Doctrine, système de sécurité, formulaires et validation.

Problème & objectifs

Problème

  • Gérer les relations complexes entre entités (étudiants, diplômes, promotions)
  • Implémenter un système d'authentification et d'autorisation par rôles
  • Assurer la validation des données côté serveur avec des règles métier spécifiques
  • Créer une interface utilisateur intuitive pour les opérations CRUD

Objectifs

  • Développer un CRUD complet pour les entités Étudiant, Diplôme et Promotion
  • Implémenter un système d'authentification avec gestion des rôles (USER, ADMIN)
  • Appliquer des validations métier (âge étudiant 16-35 ans, titre diplôme 3-25 caractères)
  • Générer des URLs SEO-friendly via des slugs automatiques pour les diplômes

Approche

Le développement a suivi l'approche recommandée par Symfony :

  • modélisation des entités avec Doctrine ORM et définition des relations ;
  • génération des controllers CRUD via le maker-bundle pour accélérer le développement ;
  • mise en place du système de sécurité avec authentification et autorisations par attributs PHP 8 ;
  • création des templates Twig avec Bootstrap 5 et thème Bootswatch Cerulean.

L'utilisation des outils Symfony (maker-bundle, fixtures avec Faker) a permis de livrer rapidement une application fonctionnelle et maintenable.

Points techniques

Backend : Symfony 7.3 avec PHP 8.2+, architecture MVC, controllers générés via maker-bundle, attributs PHP 8 pour les routes et autorisations (#[Route], #[IsGranted]).

Base de données : Doctrine ORM 3.3 avec relations bidirectionnelles ManyToMany (Étudiant-Diplôme), ManyToOne (Étudiant-Promotion), repositories personnalisés.

Sécurité : Symfony Security Bundle avec authentification (login/register/logout), hashing Argon2/bcrypt, protection CSRF, autorisations par rôles (ROLE_USER, ROLE_ADMIN).

Frontend : Twig avec layouts et partials (_form, _delete_form), Bootstrap 5.3 thème Bootswatch Cerulean, Stimulus JS, Asset Mapper avec importmap.

Outils : Cocur/Slugify pour les URLs lisibles, Faker et Zenstruck/Foundry pour les fixtures (50 étudiants, 10 diplômes, 5 promotions), PHPStan pour l'analyse statique.

Résultats

L'application livrée propose :

  • un CRUD complet pour gérer étudiants, diplômes et promotions avec relations complexes ;
  • un système d'authentification sécurisé avec gestion fine des permissions par rôle ;
  • des URLs SEO-friendly pour les diplômes (/diplome/{slug}) générées automatiquement ;
  • une interface responsive avec navbar contextuelle et flash messages de confirmation.

Le projet respecte les bonnes pratiques Symfony et constitue une base solide pour une application de gestion académique.

Ce que j'ai appris

  • maîtriser l'architecture MVC de Symfony et le cycle de vie des requêtes ;
  • modéliser des relations complexes avec Doctrine ORM (ManyToMany bidirectionnel) ;
  • implémenter un système de sécurité complet avec authentification et autorisations ;
  • utiliser les attributs PHP 8 pour les annotations de routes et permissions ;
  • générer des données de test réalistes avec Faker et Foundry.

Ce projet m'a permis d'approfondir Symfony et de comprendre les mécanismes d'un framework full-stack moderne. Une expérience formatrice pour le développement d'applications métier.

Ce projet vous intéresse ?

Discutons de vos besoins et voyons comment je peux vous aider à concrétiser votre projet.