Ministage
Ministage est une plateforme mise en place par le rectorat, destinée aux collégiens. Elle leur offre la possibilité de réaliser de très courts stages d'observation au sein de lycées. L’objectif est de leur permettre de découvrir concrètement différentes filières et environnements de formation, afin de mieux les accompagner dans leur orientation et les aider à faire des choix éclairés pour leur avenir scolaire et professionnel.

Sommaire
-
Objectifs
-
Organisation
-
Réalisation version php 7.4
-
Réalisation version Symfony
Objectifs
Monsieur MORDELET, à l’initiative de ce projet, avait pour objectif principal de confier à notre classe la mission de corriger les différents problèmes et bugs présents sur le site Ministage actuellement en ligne. Cette première phase du projet visait à améliorer l’expérience utilisateur et à assurer un fonctionnement plus stable et fiable de la plateforme, en intervenant directement sur le code existant.
Cependant, le site étant développé en PHP pur, version 7.4, une version désormais obsolète et exposée à des failles de sécurité, il nous a également été demandé par notre professeur de concevoir une nouvelle version de la plateforme. Cette refonte repose sur PHP 8.3 et utilise le framework Symfony. L’objectif est double : sécuriser davantage le site en bénéficiant des dernières mises à jour de sécurité, et faciliter le développement futur grâce à une architecture plus moderne, modulaire et maintenable.
Organisation
Tout d’abord, nous avons mis en place un dépôt sur Framagit afin que l’ensemble de la classe puisse accéder facilement au code source. Ce dépôt nous a permis de centraliser le travail collaboratif. Pour organiser nos tâches, nous avons utilisé un tableau de type Kanban en créant des tickets associés à des étiquettes précises (bugs, nouvelles fonctionnalités, améliorations, etc.). Chaque tâche faisait ensuite l’objet d’une branche dédiée, ce qui permettait de travailler seul ou en petits groupes sans interférer avec le travail des autres.
Nous avons également tenté d’adopter une approche inspirée de la méthodologie agile, même si sa mise en œuvre est restée partielle du fait du cadre scolaire du projet. Nous avons instauré des rendez-vous hebdomadaires afin de faire le point sur l’avancement de chacun, détecter d’éventuels blocages et coordonner nos efforts. Pour renforcer cette dynamique, nous avons mis en place un rôle tournant de Scrum Master, permettant à chaque membre de l’équipe d’expérimenter la gestion de projet et la coordination du groupe.

Kanban:

Tickets:

Branches:

Réalisation version php 7.4
Après avoir identifié les tâches prioritaires, un camarade et moi avons été chargés de corriger le système d’envoi de mail lors de la création d’un nouveau compte utilisateur. Ce mail est destiné à Monsieur MORDELET afin qu’il puisse valider manuellement chaque inscription. Le problème provenait de la version obsolète de PHPMailer utilisée dans le projet, ce qui empêchait l’envoi des messages. Pour résoudre cela, nous avons dû adapter la méthode d’envoi en nous appuyant sur la documentation officielle et en mettant à jour le code concerné.
Dans la foulée, nous avons identifié un autre bug lié à la création de compte : la requête SQL chargée d’insérer les données en base n’incluait pas correctement le RNE (Répertoire National des Établissements), qui restait nul à l’enregistrement. J’ai donc corrigé cette requête SQL afin d’y intégrer correctement le RNE, assurant ainsi que toutes les informations essentielles soient bien stockées dans la base de données.
Ajout RNE:


Réalisation version Symfony
J’ai été chargé de poser les fondations du nouveau projet en Symfony. Une fois l’environnement initial mis en place, j’ai créé les entités en me basant sur le schéma de base de données que nous avions élaboré collectivement en classe. J’ai ensuite effectué la migration de ces entités vers une base de données MySQL partagée, afin que tous les membres de l’équipe puissent y accéder facilement. En parallèle, j’ai réalisé un schéma de base de données numérique propre et structuré, servant de documentation technique pour d’éventuels développeurs qui reprendraient le projet à l’avenir.
Une fois la structure de base finalisée, nous nous sommes répartis en petits groupes, chacun étant responsable de la création d’un contrôleur spécifique ainsi que des API associées. L’objectif était de permettre un accès simple et structuré aux différentes données de la base, en vue de leur réutilisation dans les futures pages web du site. Chaque groupe devait ainsi concevoir des routes cohérentes pour faciliter le développement de l’interface utilisateur.
Fichiers Symfony:

BDD:

API:
