Développeur logiciel (stage) - Logipro
Avril 2025Juin 2025

Développeur logiciel (stage) - Logipro

Présentation de Logipro

Logipro est une entreprise spécialisée dans l’édition de logiciels depuis 1997. Basée au Puy-en-Velay, elle conçoit des solutions numériques dans des domaines variés tels que la formation professionnelle, la sécurité routière, l’e-learning et la diffusion d’informations. L’entreprise s’appuie sur un environnement collaboratif, des pratiques agiles et une forte culture de la qualité.

Découverte de l’écosystème Logipro

Durant mon intégration, j’ai découvert un écosystème technique riche et structuré, reposant sur l’usage de PHP, Symfony, Twig et Doctrine pour le développement, complété par Docker pour la gestion des environnements. Le versionnage et la collaboration étaient assurés via Git et GitLab, tandis que Kanboard servait de support à la gestion Agile des tâches et des sprints. La communication quotidienne se faisait principalement via Discord. L’ensemble de ces outils m’a permis d’évoluer dans des conditions professionnelles modernes et conformes aux standards actuels du développement logiciel.

Architecture DDD

CoucheRôleExemples
DomaineDéfinit les règles métier et les objets au cœur du systèmeEntité « Commande », Identifiant « UtilisateurId », Objet valeur « Adresse »
ApplicationOrchestration des cas d’usage sans logique métierService « CréerCommande », Service « MettreÀJourProfil »
InfrastructureCommunication externe, stockage et exposition des donnéesORM, API REST, Adaptateurs de base de données, Connecteurs externes

Approche Clean Code & bonnes pratiques

  • Méthodologies utilisées

    • Logipro base ses méthodes sur les principes de Robert C. Martin (Clean Architecture, Clean Code).
    • TDD (Test-Driven Development) : écrire les tests avant le code.
    • BDD (Behavior-Driven Development) : définir des scénarios fonctionnels en langage naturel (Gherkin).
    • DDD (Domain-Driven Design) : architecture orientée métier avec séparation en couches (Domaine, Application, Infrastructure).

La problématique de Campus26

Campus26, organisme de formation certifié Qualiopi, devait faire face à une gestion complexe et dispersée de plus d’une cinquantaine de documents essentiels tels que les CV, les CGV ou encore les questionnaires de satisfaction. À cela s’ajoutait le suivi exigeant des 32 indicateurs Qualiopi, ainsi que la gestion de nombreuses catégories d’acteurs comprenant les apprenants, les formateurs, les organismes, les financeurs et d’autres intervenants. Cette organisation éclatée rendait le travail administratif chronophage, peu centralisé et augmentait les risques d’erreurs ou d’oubli.

robert

Capture d'écran de Robert C. Martin et de son livre "Clean Code"

Captain Learning : outil d’aide administrative

  • Captain Learning répond à ces besoins en fournissant :

    • une centralisation unique des documents
    • un suivi automatique des 32 indicateurs Qualiopi
    • un rappel du prochain audit
    • l’enregistrement de toutes les parties prenantes : apprenants, formateurs, financeurs, formations, organisations…
    • un dépôt de preuves pour chaque entité (documents / liens)

Phase d’étude et mise en place du projet

Au cours de la phase d’étude, nous avons d’abord défini l’ensemble des fonctionnalités attendues du logiciel avant de formaliser un langage ubiquitaire via le wiki interne Turbolead afin de garantir une compréhension commune entre tous les membres de l’équipe. Nous avons ensuite posé les bases de l’architecture en adoptant les principes du Domain-Driven Design, puis initialisé le projet grâce au squelette PHP Spark, intégrant notamment PHPStan pour l’analyse statique, Safe PHP pour renforcer la sécurité et PHPCS pour assurer le respect des standards de codage. Cette préparation méthodique a permis d’établir une base technique solide et durable pour la suite du développement.

Développement : création d’une session de formation

  • Étapes principales :

    • rédaction du scénario BDD en Gherkin
    • création des tests TDD (SessionId, Session…)
    • implémentation des objets du domaine
    • conception du service Application
    • développement des répertoires InMemory puis InDoctrine
    • mise en place d'une API REST via Symfony
    • création du ClientAPI pour séparer front et back
    • intégration d'un formulaire Twig pour l’interface utilisateur

Réalisation technique notable

  • Quelques éléments clés :

    • Utilisation d’un mécanisme d’exceptions personnalisées, enregistrées dans un fichier dédié (LoggedException)
    • Développement manuel des fichiers XML de mapping Doctrine
    • Mise en place d’un Presenter pour adapter les réponses métier pour l’API
    • Tests d’API via Swagger pour valider le comportement global

Bilan technique

Ce stage m’a permis d’approfondir mes connaissances en TDD, BDD et DDD, tout en améliorant la qualité de mon code en termes de lisibilité, d’architecture et de réutilisabilité. J’ai acquis une maîtrise avancée de Symfony, Doctrine ORM, des API REST et du développement modulaire orienté domaine. Grâce à cette expérience, j’ai pu passer d’une vision purement fonctionnelle du code à une approche architecturale et durable.

Bilan humain

Sur le plan humain, j’ai évolué dans une équipe bienveillante, pluridisciplinaire et motivante. Ce contexte m’a permis d’améliorer ma communication, d’apprendre à vulgariser des sujets techniques, de comprendre les enjeux réels d’un projet agile et de prendre confiance dans mes capacités professionnelles.

Évolution de mon projet professionnel

Enfin, ce stage a confirmé mon projet professionnel : poursuivre un Master en développement logiciel, approfondir l’ingénierie logicielle et les architectures propres, et travailler dans un environnement agile orienté qualité.

Développeur logiciel (alternance) - ON-LIGHT

Développeur logiciel (alternance) - ON-LIGHT

TRAVAILLONS

ENSEMBLE