J’ai réalisé mon stage de BTS SIO au sein de Ekino, une société spécialisée dans la transformation digitale.
Durant cette période de cinq semaines, j’ai travaillé sur la conception d’une application web permettant au CSE de l’entreprise de créer et gérer des événements.
Durant ce stage, j’ai également eu l’occasion et la responsabilité de me familiariser avec la rédaction de documentation technique, un aspect fondamental du développement logiciel. J’ai appris à documenter de manière claire, structurée et concise chaque ajout au projet (qualité, infrastructure, etc.), en respectant les standards internationaux du domaine, notamment l’usage de la langue anglaise, incontournable dans le monde du développement. Vous pouvez retrouver toute la documentation que j'ai rédigée durant mon stage sur mon GitHub.
Voici quelques exemples de documents que j'ai créés :
Ce stage avait pour but de me faire réaliser un projet de A à Z, de la conception à la mise en production, en m’appuyant sur les nouvelles technologies, notamment l’IA.
Avant même de commencer à coder, j'ai dû apprendre à réaliser tout le travail de conception et de planification d'un projet, en utilisant l'IA Cline, qui m'a aidé à créer trois fichiers essentiels pour le projet :
Le fichier Product Context – Présente la vision et les objectifs de l'application web nommée pour le développement Legolas, développée avec Symfony pour la création et la gestion d’événements. Il définit les rôles utilisateurs (administrateur, organisateur, participant), les principales fonctionnalités (création d’événements, inscriptions, tableau de bord, filtres, notifications par e-mail, authentification), ainsi que les indicateurs de performance et les défis techniques liés à la scalabilité et aux dépendances externes. Ce document sert de base de référence pour guider le développement du projet et assurer sa cohérence fonctionnelle.
Le fichier Project Progress – Présente l’avancement du projet Legolas, actuellement en phase de développement des fonctionnalités avec environ 15 % de progression. Il récapitule les étapes déjà réalisées (structure du projet, configuration Docker, CI/CD GitLab, outils de qualité, Makefile) et liste les prochaines priorités : finalisation du schéma de base de données, implémentation des CRUD, gestion des rôles et authentification, création des templates et logique d’inscription aux événements. Ce document permet de suivre l’évolution du projet et les jalons restants jusqu’à une version fonctionnelle.
Le fichier Technical Context – Décrit l’environnement technique et l’architecture du projet Legolas. Il précise les technologies utilisées (PHP 8.4, Symfony 7, Doctrine, Twig, PostgresSQL, Docker, GitLab CI/CD, etc.) et détaille l’organisation du code selon le modèle MVC de Symfony. Il met en avant l’usage de plusieurs design patterns (Repository, Dependency Injection, Front Controller) ainsi que les bonnes pratiques appliquées en matière de sécurité, performance et qualité du code. Ce document sert de référence technique pour assurer la cohérence, la maintenabilité et la fiabilité du projet.
Ces documents ont pour objectif de définir avec précision les objectifs et le cadre technique du projet, afin de pouvoir fournir à une intelligence artificielle toutes les informations nécessaires pour qu’elle dispose immédiatement d’une compréhension complète du contexte.
Afin d’assurer la qualité, la cohérence et la maintenabilité du code tout au long du développement du projet, j’ai mis en place plusieurs outils d’assurance qualité (QA). J’ai utilisé PHP CS Fixer pour le formatage automatique du code et le respect des standards, garantissant une base de code homogène. L’outil PHP Insights m’a permis d’analyser la qualité globale du projet, en évaluant la lisibilité, la complexité et les bonnes pratiques. Avec PHPStan, j’ai effectué une analyse statique afin de détecter en amont les erreurs potentielles et d’améliorer la robustesse du code. J’ai également intégré Rector, qui facilite la refactorisation automatique et la modernisation du code selon les dernières versions de PHP et Symfony. Enfin, Renovate a été configuré pour automatiser la mise à jour des dépendances, assurant ainsi la sécurité et la stabilité du projet sur le long terme. L’ensemble de ces outils m’a permis de maintenir un haut niveau de qualité logicielle et d’optimiser la productivité du développement.
La Continuous Integration (CI) est une pratique de développement visant à fusionner régulièrement les modifications de code dans un dépôt partagé et à valider automatiquement ces changements. Dans le cadre du projet Legolas, j’ai mis en place une CI pour détecter rapidement les erreurs, améliorer la qualité du code grâce aux tests et analyses statiques, et faciliter la collaboration entre les développeurs. Le pipeline CI inclut des étapes de build, tests unitaires, analyse statique (avec PHPStan et Rector) et déploiement automatique, garantissant ainsi un processus de développement fiable, rapide et reproductible.
Docker est une plateforme de conteneurisation que j’ai utilisée dans le projet Legolas pour assurer la portabilité, l’isolation et la cohérence de l’environnement de développement, de test et de production. Chaque application est exécutée dans un conteneur regroupant le code, les dépendances et la configuration nécessaire, garantissant qu’elle fonctionne de manière identique sur tous les systèmes. J’ai utilisé Docker Compose pour orchestrer les services (web, base de données). Cela a permis d’améliorer la productivité, de réduire les problèmes liés aux différences d’environnement et de faciliter le déploiement continu.
Le Makefile est un outil que j’ai intégré dans le projet Legolas pour automatiser les tâches répétitives du développement, telles que la compilation, l’analyse du code, les tests ou le nettoyage des fichiers temporaires. Chaque tâche est définie comme une cible (target) avec ses commandes associées, permettant de lancer plusieurs opérations avec une seule commande make. Grâce à ce système, j’ai pu standardiser et simplifier le workflow de l’équipe, par exemple pour exécuter des QA ou de Docker, tout en assurant que chaque développeur dispose d’une méthode cohérente et reproductible pour effectuer les tâches courantes du projet.