Avant de débuter l'évocation de ce stage, il me semble essentiel d’introduire ce rapport par des remerciements adressés à ceux qui m’ont permis d’enrichir mes connaissances et qui, chaque jour, ont contribué à mon appréciation du travail au sein de cette entreprise.
Je souhaite remercier M. Pierre FELIX, le dirigeant de l’entreprise, pour avoir accepté ma candidature et m’avoir offert l’opportunité d’intégrer l’équipe de développement durant ce stage.
Je tiens également à exprimer ma gratitude envers Mme Laurine PILLET, ma tutrice de stage, pour sa formation et son accompagnement tout au long de cette période, marquée par sa bienveillance, sa gentillesse, sa patience et sa pédagogie.
Enfin, je remercie l’ensemble des employés de StimData / Pix’Celle pour leur aide précieuse, les conseils avisés qu’ils m’ont généreusement partagés, ainsi que leur accueil chaleureux. Une pensée toute particulière va à celles et ceux avec qui j’ai partagé mon quotidien, que ce soit autour d’une pause, lors des discussions techniques ou pendant les repas du midi. Leur bonne humeur, leur disponibilité et leur esprit d’équipe ont largement contribué à rendre ce stage aussi enrichissant que convivial.
Au cours de mon stage, j’ai été intégré à l’équipe de développement de StimData / Pix’Celle, où j’ai eu l’opportunité de travailler sur plusieurs projets concrets en conditions professionnelles. Le sujet de mon stage était « Développeur Web », avec pour principales tâches :
Les missions qui m'ont été confiées ont évolué progressivement, par étapes clairement définies, me permettant de monter en compétence tout en prenant le temps de m’approprier l’environnement technique et fonctionnel de l’entreprise. Ce découpage progressif a facilité mon intégration et m’a offert un cadre structuré pour consolider mes acquis. Dans ce qui suit, je présenterai concrètement les différentes missions réalisées au cours du stage, en m’appuyant sur des exemples précis.
Bien que j’aie été amené à traiter des tracks en parallèle d'autres tâches tout au long du stage, c’est principalement au cours de mes trois premières semaines que j’ai été pleinement mobilisé sur cette mission. Ma première intervention majeure a ainsi consisté à prendre en charge plusieurs tickets sur StimTRACK, soigneusement sélectionnés par ma tutrice afin de me permettre de monter progressivement en compétence tout en découvrant les spécificités techniques des différents projets de l’entreprise. Pour rappel, StimTRACK est une plateforme de ticketing développée en interne. Celle-ci permet de recenser, prioriser et résoudre les bugs affectant les différents projets de l’entreprise, en fonction de leur niveau de criticité. (voir rapport de lancement)
Au cours de mon stage, j’ai eu l’opportunité de traiter un large éventail de demandes, allant de simples évolutions à des problématiques plus complexes. Ces interventions ont notamment concerné des ajustements de responsive design, des corrections liées au CSS, ainsi que diverses optimisations fonctionnelles. Au total, j’ai résolu une quinzaine de tickets, allant de corrections mineures à des modifications plus techniques nécessitant une analyse approfondie.
Voici quelques exemples concrets de bugs rencontrés et corrigés sur les divers plateformes de l'entreprise :
Pour illustrer concrètement cette première mission, voici quelques exemples de tickets traités, accompagnés d’extraits de code et de captures d’écran montrant les corrections apportées ou les résultats obtenus. Ces éléments témoignent de la diversité des problèmes rencontrés.
Aux alentours de la quatrième et cinquième semaine de mon stage, après un mois d’adaptation et de familiarisation avec les différentes plateformes utilisées par l’entreprise, il m’a été confié le développement d’une évolution importante pour l’un des sites : la plateforme Opération Stimdata. Bien que cette évolution ait été pensée initialement pour cette plateforme spécifique, elle est conçue de manière à pouvoir être déployée sur toutes les autres plateformes intégrant le module de communication interne de l’entreprise.
Avant d’entamer tout développement ou d’écrire la moindre ligne de code, j’ai participé, aux côtés de ma tutrice, à la rédaction d’un cahier des charges explicatif. Ce document avait pour objectif de préciser les besoins, de poser les bases fonctionnelles de l’évolution attendue et de me guider dans les grandes lignes du projet. Cet échange a également été l’occasion de clarifier le périmètre de la tâche et les bonnes pratiques à suivre. Bien que j’aie été en autonomie sur le développement de cette évolution, j’ai toujours eu la possibilité de solliciter de l’aide si nécessaire. Je n’étais donc pas seul, et je savais que je pouvais compter sur l’encadrement de l’équipe en cas de difficulté.
Pour mieux comprendre le contexte, l’entreprise propose sur ses différentes plateformes un système permettant aux utilisateurs de poser des questions ou de formuler des demandes directement via le site, par le biais d’un outil appelé intmail. Ces messages sont ensuite traités par un administrateur rattaché au service User Desk qui peut répondre et engager un échange avec l’utilisateur. Cependant, une limite importante a été identifiée : en dehors du titre, aucune information ne permet de comprendre rapidement le sujet de la discussion. Cette absence de catégorisation rend impossible l’analyse des contenus et empêche la comptabilisation à des fins stratégiques.
C’est pour répondre à ce besoin que l’évolution que j’ai développé a été mise en place. Elle consiste à ajouter un champ de sélection côté utilisateur lors de l’envoi d’un intmail, ainsi qu’un champ similaire côté administrateur. Ces champs permettent de choisir une catégorie de sujet et un motif parmi une liste prédéfinie. Grâce à cette nouvelle structuration, il devient possible de générer des statistiques fiables, de mieux catégoriser les demandes, et d’améliorer le pilotage des réponses apportées par les équipes support.
Dans un premier temps, j’ai créé deux scripts SQL destinés à faire évoluer la base de données en cohérence avec les besoins fonctionnels définis dans le cahier des charges. L’objectif était d’introduire de nouvelles valeurs permettant de catégoriser les messages échangés via le système d’intmail.
Pour cela, j’ai ajouté une nouvelle table nommée categorie_messagerie, conçue pour contenir les différentes catégories de sujet et motifs prédéfinis. J’ai ensuite modifié la table existante communication, qui centralise les échanges, en y ajoutant un champ faisant directement référence à la nouvelle table. Grâce à une jointure entre ces deux tables, chaque message peut désormais être associé à une catégorie précise, facilitant ainsi le traitement, l’analyse et la lisibilité des demandes. Cette structuration relationnelle garantit également la cohérence des données et leur réutilisabilité sur les autres plateformes.
Après avoir incorporé les nouvelles tables au projet, j'ai modifié les différents DataTables utilisés dans les onglets de communication pour rajouter le champ "Libellé",
et j'ai ajouté les différents champs nous permettant de choisir parmi les différentes familles de motifs, puis le motif en lui-même.
A ce moment, ils ne sont pas fonctionnels et c'est pour cela qu’il faut relier le tout à la base de données et aux différents contrôleurs ainsi qu'à l'appel AJAX qui va venir afficher les données.
La suite ci-dessous présente, étape par étape, sous forme de carrousel, le processus complet de création de cette évolution, depuis la conception jusqu’aux corrections de bugs rencontrés.
Point culminant de mon stage, ma dernière intervention majeure a consisté à participer activement à l’évolution de la plateforme My-Cooper vers sa nouvelle version, dite « Offre 3 ». Ce projet stratégique pour l’entreprise m’a permis de mobiliser l’ensemble des compétences acquises depuis le début de mon stage, tout en me confrontant à des exigences plus poussées en matière d’intégration et de qualité de code.
Dans ce contexte, ma mission a porté sur la refonte graphique. En m’appuyant sur une maquette réalisée sous Adobe XD par l’équipe du pôle création artistique, j’ai développé les composants graphiques réutilisables qui seront utilisés dans les différentes pages de la future plateforme. Ce travail m’a permis de développer une approche structurée de l’intégration web, alliant responsive design, modularité et rigueur dans l’architecture du code.
Puisque la version MyCooper v.3 repose en grande partie sur l’architecture visuelle de la plateforme Opération StimData, j’ai dans un premier temps créé une nouvelle page au sein de cette dernière qui sera mon "bac à sable". Cette page servait de support pour intégrer et tester l’ensemble des nouveaux composants graphiques qui ne figuraient pas encore sur la plateforme, mais qui devaient y être ajoutés en prévision de leur réutilisation dans MyCooper.
Pour garantir la fidélité graphique, je me suis appuyé scrupuleusement sur la maquette fournie via Adobe XD. Chaque élément a été codé en respectant les dimensions, les espacements et les couleurs définis dans le design, puis rassemblé sur une même page dédiée afin de faciliter les tests et les vérifications. Ce travail préparatoire a permis de valider l’intégration des composants avant leur migration vers la future interface.
L’affichage des cards dans les interfaces web des projets StimData repose sur une fonction réutilisable nommée Element::render
. Cette méthode centralisée permet de générer dynamiquement des blocs visuels en leur transmettant un ensemble de valeurs prédéfinies telles que l’image, le titre, le texte, le bouton ou encore les notifications à afficher.
Dans l’extrait de code ci-dessous, on voit un exemple de cette fonction pour afficher respectivement les blocs, avec leurs images, textes et boutons spécifiques. Cette étape permet de concevoir un design statique en Front Office, servant de base visuelle pour les futures pages. Une fois que le Front Office est mis en place, il est ensuite nécessaire de connecter ces éléments à la base de données via le Back Office, afin que les contenus affichés soient dynamiques et personnalisés selon l’utilisateur ou les données.
Le fichier card.php agit comme un template universel permettant de générer différentes cartes visuelles à partir des données transmises via la fonction Element::render. Ce template repose sur une logique conditionnelle avec de nombreux if (et else) en PHP afin d’adapter dynamiquement l’affichage en fonction des éléments fournis.
Comme on peut le voir dans la capture ci-dessous, chaque bloc HTML est encapsulé dans une condition vérifiant la présence d'une valeur donnée dans le tableau $template. Par exemple, le titre de la carte ne s'affiche que si la clé 'title' est renseignée. Idem pour le subtitle, ou encore des éléments plus spécifiques comme 'operations'.
Ce système de vérification conditionnelle garantit une grande souplesse dans l’affichage des composants : une même structure peut générer plusieurs types de cartes, plus ou moins complexes, en fonction des besoins de chaque page. Cela permet d'optimiser le code et de limiter les répétitions tout en assurant une bonne gestion des cas d'absence de données. Enfin, ce genre de structure permet aussi de centraliser le code et elle facilite donc grandement la maintenance.
Ci-dessous, un carrousel présente l’ensemble des composants que j’ai intégrés sur ma page « bac à sable ». Chaque élément visuel est accompagné d’un extrait du code source correspondant, illustrant la manière dont les données sont injectées dans les cartes via le template.
Suite à la mise en place des branches spécifiques, reposant sur l’architecture visuelle d’Opération Stimdata, j’ai eu l’opportunité de travailler en autonomie sur la reconstruction progressive des différentes pages de MyCooper v3. Grâce à cette base, j’ai pu m’appuyer sur l’existant tout en adaptant le design et les fonctionnalités à la nouvelle identité visuelle définie par la maquette. Cela m’a conduit à modifier le CSS, remplacer ou ajuster certains éléments graphiques, ainsi qu’à intégrer de nouvelles images lorsque cela était nécessaire.
Certaines pages, dont la structure et les composants étaient très proches de celles d’Opération Stimdata, ont pu être recréées facilement et rapidement, sans rencontrer de difficulté majeure. En revanche, d’autres pages, plus spécifiques ou plus complexes dans leur conception, ont nécessité davantage de réflexion et de temps, notamment pour s’assurer de leur cohérence à la fois fonctionnelle et visuelle. Ce travail m’a permis de mieux comprendre l’architecture du projet tout en consolidant mes compétences en intégration web et en adaptation de templates dynamiques.
Durant mon stage, j’ai pu mettre en valeur plusieurs points forts, tant sur le plan technique que relationnel. J’ai fait preuve de rigueur et d’une bonne capacité d’adaptation face à un environnement professionnel nouveau, ainsi que d’une réelle motivation à apprendre de nouveaux outils. Mon implication dans la résolution de tickets et dans des développements concrets — qu’il s’agisse des évolutions liées à la communication ou des travaux menés sur la plateforme MyCooper — a renforcé mon autonomie. Sur le plan humain, je me suis rapidement intégré à l’équipe grâce à ma curiosité, mon ouverture d’esprit et ma capacité à communiquer efficacement. J’ai su poser des questions pertinentes au bon moment et adapter progressivement ma façon de travailler aux attentes de l’entreprise.
Pendant le stage, j’ai été confronté à plusieurs difficultés. Le principal obstacle concernait le manque de connaissances techniques spécifiques : les missions étaient bien plus complexes que celles abordées en licence, et le code existant était parfois dense et ancien. Contrairement à un projet conçu de zéro, j’intervenais sur un système en production, avec la contrainte de ne pas introduire de dysfonctionnements, y compris sur des composants mutualisés entre plusieurs pages. Comme souvent dans un environnement nouveau, j’ai eu des difficultés à appréhender l’ensemble du code, notamment lors de tickets complexes. Cela m’a obligé à faire preuve de prudence et à bien comprendre la logique existante.
Pour faire face à cette complexité, j’ai mis en place plusieurs actions concrètes. J’ai pris l’habitude d’utiliser le débogueur de PHPStorm pour analyser le code avant de demander de l’aide, renforçant ainsi mon autonomie et ma compréhension. J’ai aussi profité de la liberté laissée par l’entreprise pour expérimenter localement. J’ai appris de nombreuses bonnes pratiques auprès de mes collègues et de ma tutrice : tests réguliers, commits explicites, gestion rigoureuse des branches, etc.
En somme, ce stage m’a offert un terrain d’apprentissage riche. Le fait de commencer par des missions simples, puis d’enchaîner sur des tâches plus complexes, m’a permis de monter en compétences de façon structurée. J’en ressors avec une vision concrète du métier de développeur web, une meilleure maîtrise des outils professionnels, ainsi qu’une compréhension plus fine des exigences et des réalités du travail en entreprise.
Cette immersion m’a permis de mieux comprendre le fonctionnement concret du monde de l’entreprise. Durant ces deux mois, j’ai gagné en autonomie en travaillant sur des projets d’envergure plus importante que ceux abordés en formation, en apportant ma contribution à des réalisations collectives déjà bien avancées. J’ai ainsi découvert ce que cela implique d’intégrer ses développements dans un écosystème technique existant, en respectant les contraintes de compatibilité et les normes de qualité. J’ai également eu l’occasion de collaborer en binôme et en équipe, retrouvant une dynamique de travail essentielle dans le développement web, tout en renforçant mes compétences relationnelles.
Au cours de mon stage, j’ai eu l’opportunité de me familiariser avec plusieurs outils professionnels essentiels, répartis selon les besoins des différentes missions qui m’ont été confiées :
Ces outils m’ont permis de monter en compétence rapidement et de mieux comprendre les standards techniques en entreprise, tant sur le plan du code que sur l’organisation du travail en équipe.
Au-delà des aspects techniques, cette expérience m’a appris à mieux organiser mon temps, à hiérarchiser les priorités et à gérer efficacement mes journées en fonction des objectifs fixés. Elle m’a également sensibilisé à l’importance de maintenir un niveau de qualité constant dans les livrables. Travailler sur des projets concrets avec des contraintes réelles m’a conforté dans mon choix de carrière, en confirmant mon intérêt marqué pour le développement web, et plus particulièrement pour le front-end, un domaine que j’ai pris beaucoup de plaisir à explorer.
Enfin, sur le plan humain, je suis particulièrement fier du travail accompli et j’espère sincèrement avoir répondu aux attentes de ma tutrice et de l’équipe. J’ai su m’impliquer avec sérieux et motivation, tout en restant à l’écoute des retours pour m’améliorer. Ce stage a aussi été une belle aventure humaine : j’ai eu la chance d’évoluer dans un environnement bienveillant, aux côtés de personnes accueillantes, disponibles et généreuses en conseils. Leur patience et leur volonté m’ont aidé à progresser en toute confiance. Cette atmosphère d’entraide m’a non seulement permis de m’intégrer rapidement, mais aussi de prendre pleinement conscience de l’importance du facteur humain dans le succès d’un projet collectif. Cette expérience restera, à bien des égards, inspirante et marquante pour la suite de mon parcours.