GIPE-30/06/2026
ENSM-BPN - Marine National1430 heures sur le projet
Website

Gestion Informatisée Pour l'Enseignement

GIPE est l'outil de Gestion Informatisée Pour l'Enseignement qui soutient l'activité pédagogique de l'école ENSM-BPN. Le projet s'inscrit dans une dynamique de transformation numérique de l'enseignement de la Marine, avec des leviers comme l'amélioration de la traçabilité pédagogique, la facilitation du pilotage des formations et la rationalisation des outils métiers.

Présentation du projet GIPE. Page de connexion sur l'application
TypeScriptVueJSTailwindCSSPHP 8.3Symfony 6.4MariaDBGitGitLab

À mon arrivée, l'application était en cours de refonte afin d'améliorer la gestion des droits ainsi que l'intégration de plusieurs écoles. J'ai alors proposé à ma responsable de séparer le back-end du front-end. Cette idée a été bien accueillie, et le contexte s'y prêtait particulièrement, ce qui nous a conduits à engager une refonte complète du logiciel.

Gestion des groupes au sein de l'école
Gestion des permissions associées aux rôles
Gestion des rôles et de leurs permissions
Attribution de rôles aux groupes

Gestion de l'application

Afin de reprendre le projet dans de bonnes conditions, nous l'avons restructuré en deux services distincts : un site web et une API. Cette séparation nous a permis de mieux comprendre l'architecture de l'application et d'envisager son évolution, notamment en facilitant le développement futur d'autres applications pouvant s'y connecter.

Dans un premier temps, avec cette nouvelle configuration, nous avons consacré plusieurs heures à concevoir un système modulable pour la gestion des groupes, ainsi qu'une méthode plus efficace pour administrer les rôles au sein de l'application.

Pour y parvenir, je me suis appuyé sur différentes solutions avec lesquelles j'avais déjà travaillé, et nous avons retenu cette approche. Nous avons ainsi mis en place une table « Permissions », directement exploitée dans le code, puis défini des rôles regroupant plusieurs de ces permissions.

Nous avons ensuite associé les rôles créés soit à des groupes, soit à des utilisateurs individuels via un système d'affectation. Cela nous a permis de développer une application dotée d'un système suffisamment modulable pour répondre aux besoins de notre école, et potentiellement à ceux d'autres établissements.

Gestion des personnes

Au sein de l'application, j'ai principalement contribué à la mise en place de la gestion des groupes et des rôles, mais également au développement complet du module de gestion des personnes : création, modification et assignation à des groupes. Pour cela, je me suis appuyé en partie sur l'ancienne version du système afin d'en analyser le fonctionnement et d'identifier précisément les besoins métiers, tout en veillant à moderniser et structurer davantage l'architecture existante.

L'une des principales étapes a consisté à établir une liaison avec l'annuaire militaire. Cette intégration a représenté un défi important, puisque nous travaillions sur un réseau isolé, non directement connecté à celui de l'annuaire. J'ai donc dû concevoir un mécanisme d'échange et de synchronisation fiable, en réalisant de nombreux tests entre les environnements de développement et de préproduction. Après plusieurs phases de validation, l'intégration s'est révélée concluante, permettant la création de nouvelles personnes ainsi que l'importation et la mise à jour d'individus déjà présents dans l'annuaire.

J'ai ensuite développé les fonctionnalités de modification des profils enregistrés. Cela inclut la mise à jour des informations professionnelles et personnelles, la gestion des véhicules associés, ainsi que le suivi des affectations. Une attention particulière a été portée à la cohérence des données, à la traçabilité des modifications et au respect des règles RGPD afin de garantir un système fiable, évolutif et conforme aux exigences opérationnelles.

Recherche d'une personne existante dans l'application ou l'annuaire militaire
Création d'une personne avec ou sans les informations collectées
Visualisation des informations des personnes enregistrées dans l'application
Outil de gestion de librairies informatiques (NPM, COmposer, ...)

Mise en place des librairies

En raison de notre environnement en réseau fermé, nous devons gérer notre propre registre de paquets, notamment pour NPM et Composer. Dans ce contexte, nous utilisons JFrog comme solution de gestion des artefacts.

Nous avons donc entrepris une remise à plat complète de notre registre existant. Cela a impliqué une phase d'exploration et de compréhension de l'outil, notamment en raison d'un manque de documentation interne. Ce travail nous a permis de mieux structurer notre registre et d'optimiser nos processus d'installation et de gestion des dépendances.

Gestion de la base de donnée

Dans ce projet, nous utilisons une base de données MariaDB pour assurer la gestion et la persistance des données. Compte tenu du contexte, nous manipulons un volume important de données issues de reprises existantes, ce qui impose un niveau d'exigence particulièrement élevé en matière d'intégrité.

Ainsi, la majorité des opérations de création et de modification de structure (tables, schémas, relations) est réalisée via des requêtes SQL écrites et maîtrisées manuellement. Cette approche nous permet de garder un contrôle précis sur chaque changement appliqué à la base de données.

L'objectif est de garantir qu'aucune donnée ne soit altérée ou perdue lors des différentes phases de migration ou d'évolution. Chaque intervention est donc pensée, testée et sécurisée en amont afin d'assurer la fiabilité et la continuité des données.

Zone de développement, incluant la machine de développement
Zone sur l'intranet, avec la visualisation de la production et pre-production

Mise en ligne

Actuellement, la mise en production repose sur un environnement IIS hébergé sur Windows Server. Toutefois, une migration vers une infrastructure cloud, basée sur une machine Linux, est prévue à moyen terme afin de bénéficier d'un environnement plus flexible et mieux adapté aux standards actuels.

Néanmoins, cette transition s'avère complexe, notamment en raison d'un manque important de documentation sur l'existant et sur les étapes nécessaires à la migration. Cette situation rend le processus plus risqué et demande un travail d'analyse approfondi avant toute mise en œuvre.

Par ailleurs, les contraintes de planning et les délais du projet nous imposent de prioriser la stabilité et la livraison des fonctionnalités attendues. Dans ce contexte, il est actuellement plus pertinent de conserver l'infrastructure existante, tout en préparant progressivement la migration vers une solution Linux plus pérenne.

Autres fonctionnalités ajoutées à l'application

Visualisation des sessions acttives avec leurs dates de début et de fin

Je tiens à remercier l'ensemble de l'équipe pour son engagement, sa collaboration et son implication tout au long du développement de l'application. Leur contribution a été essentielle à la réussite de ce projet.