Introduction
Ce projet a été réalisée pour une étude de cas dans le cadre de mon Mastère avec l’ISCOD. Il fallait concevoir et développer une plateforme de gestion de projet collaboratif destinée aux équipes de développement logiciel. L’objectif global était de fournir une application permettant aux équipes de planifier, suivre et collaborer efficacement sur des projets.
Objectifs
Sur l’aspect technique, le but est de concevoir une architecture robuste et évolutive en utilisant Angular pour le frontend et Spring Boot (Java) pour le backend.
Il a fallu implémenter une API REST, sécuriser l’application avec Spring Security et JWT, assurer la fiabilité du code par des tests automatisés et industrialiser le projet avec Docker et une pipeline CI/CD.
Contexte
Réalisé lors d’une mise en situation professionnelle en tant que développeur full-stack au sein de l’entreprise fictive « Code Solutions ». Le travail nécessitait de s’aligner sur les fonctionnalités demandées par le Product Owner et les guidelines d’une Tech Lead.
Enjeux et risque
L’un des défis majeurs de ce projet résidait dans l’exigence de qualité : il fallait atteindre une couverture de code d’au moins 60% (instructions et branches) lors des tests automatisés et configurer une chaîne d’intégration continue capable de bloquer le déploiement en cas d’échec de ces tests.
La sécurisation du backend n’était initialement pas requise, mais l’ajout soudain d’un système d’inscription avec Spring Security et JWT a causé une grande perte de temps. De plus, un conflit d’architecture lié à Angular (migration forcée de l’ancienne méthode NgModule vers la méthode moderne Standalone) a généré de nombreuses erreurs de compilation qu’il a fallu résoudre.
Avec ce projet, j’estime avoir un très bon niveau sur cette compétence et je le qualifie comme une force majeure de mon profil.
Les différentes étapes d’un projet
Conception & Modélisation : Analyse des besoins et création des diagrammes de classes UML pour définir la structure de la base de données relationnelle.
Mise en place de la Stack Technique : Initialisation du backend (Spring Boot) et du frontend (Angular Standalone) et configuration de la sécurité avec JWT.
Développement Agile : Implémentation des fonctionnalités par « briques » (Authentification > Projets > Tâches) pour permettre une validation continue.
Validation Qualité & Tests : Rédaction et exécution des tests unitaires (JUnit pour Java, Karma pour Angular) afin d’atteindre une couverture de code supérieure à 60 %.
Industrialisation (DevOps) : Création des fichiers Docker pour conteneuriser l’application et mise en place d’une pipeline CI/CD automatisée sur GitHub Actions.
Retour d’expérience et perspective d’avenir
Avec cette expérience, j’ai appris à mes dépens qu’un développement en « cycle en V » strict (séparant totalement le back et le front dès le départ) est inadapté face à des exigences changeantes. Adopter une démarche Agile m’a permis de livrer des fonctionnalités concrètes à chaque étape, d’anticiper les erreurs de conception et de finaliser mon projet avec beaucoup plus d’aisance.
La pipeline CI/CD est fonctionnelle et l’application est prête à l’emploi. À l’avenir, j’envisage de déployer ces conteneurs Docker directement sur une infrastructure Cloud (comme AWS ou GCP) pour rendre l’outil accessible en ligne et d’y ajouter des tableaux de bord analytiques pour suivre la productivité des équipes.
