Académique Documents
Professionnel Documents
Culture Documents
Titre Du Stage :
Conception et Réalisation
des sites web en utilisant
React
Membres du jury :
Rapport Stage D’ Initiation
Dédicace
Je tiens à exprimer ma gratitude profonde envers ma famille pour leur soutien inébranlable tout au
long de mon parcours. Votre encouragement constant a été ma source inestimable d'inspiration.
Votre soutien a été la force motrice qui m'a permis d'atteindre ces réalisations. Du fond du cœur,
merci.
8/22/2023 1
Rapport Stage D’ Initiation
Remercîment
Je souhaite sincèrement remercier toutes les personnes qui ont joué un rôle crucial dans la réussite
de mon stage et dans la création de ce rapport. En particulier, je tiens à exprimer ma reconnaissance
envers mon maître de stage, Monsieur Alae Moudni, pour son accueil chaleureux, ses précieux
conseils et la confiance qu'il m'a accordée dès mon entrée dans l'entreprise.
Mes remerciements s'étendent également à M. Hamza Jabour et Mme Nada Stittou, développeurs
web au sein de la société, pour leur disponibilité, leur temps précieux et leur précieuse assistance
qui ont grandement contribué à mon apprentissage.
J'adresse également mes remerciements les plus sincères aux équipes pédagogiques et
administratives de l'École Marocaine des Sciences de l'Ingénieur qui ont facilité les démarches et
ont soutenu mon parcours éducatif. Votre engagement envers l'excellence a été un élément clé de
ma formation.
8/22/2023 2
Rapport Stage D’ Initiation
Table de Matières:
Résume............................................................................................................................................ 6
Abstract ........................................................................................................................................... 6
Introduction ..................................................................................................................................... 8
Chapitre 1: Presentation de l’entreprise ........................................................................................ 10
Chapitre 2 : Département IT et mission ........................................................................................ 18
Chapitre 3 : Méthodologie de travaille et technologies utiliser .................................................... 23
Chapitre 4 : Projet I : Gestion Parking .......................................................................................... 30
Chapitre 5 : Projet II : Labelling picture ....................................................................................... 51
Chapitre 6 : Compétences acquises et apprentissages .................................................................. 70
Conclusion .................................................................................................................................... 75
8/22/2023 3
Rapport Stage D’ Initiation
Table de figures:
Figure 1:Logo de La société tangéroise de maintenance ............................................................................ 12
Figure 2:Organigramme de STM . .............................................................................................................. 13
Figure 3:Mr Tarik Moudni, Président Directeur Général de STM Group. ................................................. 14
Figure 4:STM Tanger Showroom. .............................................................................................................. 15
Figure 5:Liste des entreprises et organismes publics qui leur font confiance............................................. 16
Figure 6:Partenaires Métiers et Techniques et les Principaux Éditeurs et Constructeurs du Secteur
Informatique................................................................................................................................................ 17
Figure 7:Figure représente le projet de parking .......................................................................................... 21
Figure 8:Figure représente le projet de labelling picture. ........................................................................... 22
Figure 9:Représentation simplifiée du principe de la méthode Agile. ........................................................ 24
Figure 10:Diagramme de Gantt................................................................................................................... 26
Figure 11:Diagramme de cas d'utilisation du 1er projet ............................................................................. 33
Figure 12:Diagramme de séquence de connexion. ..................................................................................... 34
Figure 13:Diagramme de séquence d'ajout. ................................................................................................ 35
Figure 14:Diagramme de séquence de surpression. .................................................................................... 36
Figure 15:Diagramme de séquence de modification................................................................................... 37
Figure 16:Diagramme de séquence de filtrage. .......................................................................................... 38
Figure 17:Diagramme de classe du 1er projet ............................................................................................ 39
Figure 18:Capture de fichier db.json .......................................................................................................... 40
Figure 19:Capture Exemple 1 d'utilisation des requêtes HTTP(GET)........................................................ 41
Figure 20:Capture Exemple 2 d'utilisation des requêtes HTTP(DELET). .................................................. 41
Figure 21:Capture de page de login. ........................................................................................................... 42
Figure 22:Capture de page qui gère l'historique des véhicules. .................................................................. 43
Figure 23:Capture représenté l'ajout d’un véhicule. ................................................................................... 43
Figure 24:Capture représente la table après l'ajout. .................................................................................... 44
Figure 25:Capture représenté modification d’un véhicule. ......................................................................... 44
Figure 26:Capture représenté la table après les modifications.................................................................... 45
Figure 27:Capture représente les véhicules en cours. ................................................................................. 45
Figure 28:Capture représente la page de recherche. ................................................................................... 46
Figure 29:Capture représente un exemple de recherche. ............................................................................ 46
Figure 30:Capture représente un autre exemple de recherche. ................................................................... 47
Figure 31:Capture représente page profile. ................................................................................................. 47
Figure 32:Capture représente profile. ......................................................................................................... 48
Figure 33:Capture représente les véhicules en cours. ................................................................................. 48
Figure 34:Capture représente l'historique d’un user. .................................................................................. 49
Figure 35:Diagramme cas d’utilisation. ...................................................................................................... 54
Figure 36:Diagramme de séquence. ............................................................................................................ 55
Figure 37:Diagramme de classe. ................................................................................................................. 56
Figure 38: Structure de dossier src.............................................................................................................. 56
Figure 39:Fast API et Swagger ................................................................................................................... 57
8/22/2023 4
Rapport Stage D’ Initiation
8/22/2023 5
Rapport Stage D’ Initiation
Résume
Ce rapport de stage d'un mois au sein de l'entreprise STM synthétise notre immersion au sein de
l'univers informatique. Il rassemble les facettes de notre expérience en explorant la présentation
de l'entreprise STM, notre participation au département IT avec ses missions, les méthodologies
et technologies employées, ainsi que la concrétisation de deux projets : la gestion de parking et le
labelling d'images. Ce document est le fruit de nos efforts durant ce mois, visant à embrasser tous
les aspects pertinents. Notre ambition était de partager notre expérience de manière complète, sans
omission, et nous avons abordé chaque chapitre avec soin. Nous ressortons de cette expérience
fière de notre travail et enthousiastes à l'idée de poursuivre dans le domaine de l'informatique.
8/22/2023 6
Rapport Stage D’ Initiation
Abstract
This one-month internship report within STM encapsulates my immersion within the realm of
information technology. It brings together the facets of my experience by delving into the
presentation of STM as a company, my engagement within the IT department with its assignments,
the methodologies and technologies employed, as well as the realization of two flagship projects:
parking management and image labelling. This document is the outcome of my efforts over the
course of this month, with the aim of encompassing all relevant aspects. My intention was to
comprehensively share my experience without omission, and I approached each chapter with care.
I emerge from this experience proud of my work and enthusiastic about continuing in the field of
computer science.
8/22/2023 7
Rapport Stage D’ Initiation
Introduction
Au fil de nos études en développement informatique, nous avons toujours été passionnés par les
technologies modernes et les innovations numériques. Cette quête de connaissances nous a
naturellement conduits à chercher une expérience professionnelle pour affiner nos compétences et
approfondir notre compréhension du développement web dans un contexte réel. C'est ainsi que
nous avons saisi l'opportunité de réaliser un stage d'un mois chez STM, un acteur majeur des
technologies de l'information et des communications ainsi que des services professionnels et de
conseil.
Nos objectifs pour ce stage étaient variés. Avant tout, nous aspirions à établir des relations
professionnelles et à collaborer au sein d'une équipe compétente. Nous désirions également
découvrir la vie quotidienne en entreprise pour mieux appréhender les réalités concrètes du monde
professionnel, différemment de l'environnement académique. En outre, notre ambition était
d'acquérir de nouvelles connaissances, en explorant des concepts et compétences non abordés en
classe.
Les résultats obtenus durant ce stage ont répondu à nos attentes, même si nous n'avions pas pour
but ultime d'atteindre la perfection. Nous ressentons une grande fierté envers ces réalisations,
d'autant plus qu'il s'agit de notre première expérience professionnelle. Deux projets web se sont
particulièrement distingués : le premier a consisté en un test d'évaluation de nos compétences en
développement web et de notre familiarisation avec les technologies propres à l'entreprise,
notamment dans le cadre de la gestion d'un parking. Le second projet, plus ambitieux, visait à créer
une application web d'annotation d'images pour un client de STM.
Ce stage a marqué une étape cruciale dans notre parcours académique, nous permettant de plonger
concrètement dans le fonctionnement d'une entreprise évoluant dans le domaine des technologies.
Nous avons pu mettre en pratique les compétences théoriques acquises pendant nos études, tout en
découvrant les méthodes de travail en entreprise, les exigences professionnelles et les défis
spécifiques au développement web dans un environnement professionnel.
Ce rapport de stage vise à détailler notre expérience professionnelle chez STM, en mettant en
évidence les projets auxquels nous avons contribué, les compétences que nous avons développées
et les enseignements tirés de cette immersion. Nous décrirons différents aspects de notre stage, de
la conception au déploiement, en mettant en avant les défis techniques rencontrés et les solutions
mises en œuvre pour les surmonter.
8/22/2023 8
Rapport Stage D’ Initiation
Nous demeurons convaincus que ce stage chez STM a été une étape déterminante dans notre
cheminement en tant que développeurs web. Il a renforcé notre passion pour le développement
web et nous a confortés dans notre volonté de continuer à évoluer dans ce domaine en constante
mutation. Nous exprimons notre gratitude envers STM pour cette opportunité de croissance
professionnelle et attendons avec enthousiasme de partager les détails de cette expérience
enrichissante à travers ce rapport de stage.
8/22/2023 9
Rapport Stage D’ Initiation
8/22/2023 10
Rapport Stage D’ Initiation
1. Presentation de l’ enterprise
STM Group, créée en 1998, est spécialisée dans les services informatiques pour les entreprises.
Avec cinq agences et une équipe qualifiée de cinquante ingénieurs et techniciens, STM Group est
un interlocuteur de référence dans l'intégration des infrastructures et des systèmes d'information.
Grâce à son expertise pointue, elle offre des solutions à forte valeur ajoutée et s'engage dans
l'optimisation et l'industrialisation des infrastructures et des applications. En tant que partenaire
des principaux éditeurs de logiciels, STM Group construit une relation de confiance réciproque
avec ses clients et partenaires, garantissant ainsi le succès durable des projets. Elle propose
également des prestations de conseil opérationnel et technologique à haute valeur ajoutée.
8/22/2023 11
Rapport Stage D’ Initiation
Dès ses débuts, STM Group a défini une approche distinctive en mettant en place une stratégie de
services ancrée dans l'accompagnement client. Cette stratégie, habilement conçue pour allier
disponibilité et expertise, a servi de pierre angulaire à la croissance et au succès continu de
l'entreprise.
L'année 2018 marque un jalon significatif dans le cheminement de STM Group. Avec cinq agences
stratégiquement réparties, l'entreprise s'est étendue pour englober diverses régions et répondre à
une clientèle de plus en plus exigeante. Cette expansion s'est accompagnée d'un renforcement de
l'équipe, composée aujourd'hui de cinquante ingénieurs et techniciens hautement qualifiés. Chaque
membre de cette équipe possède des certifications qui englobent les produits et solutions les plus
en vogue du marché, offrant ainsi un ensemble diversifié de compétences.
Portée par près de quarante certifications et soutenue par la confiance accordée par les acteurs
économiques majeurs de la région, STM Group occupe une position de proue dans le secteur prisé
de l'intégration des infrastructures et des systèmes d'information. Cette position privilégiée
témoigne de l'engagement constant envers l'excellence et de la quête d'une innovation continue.
L'histoire de STM Group est une narration de persévérance et de transformation. Une présence
affirmée sur le marché a donné lieu à une expertise pointue en matière de conception, d'intégration
et d'exploitation de solutions technologiques. Le voyage jusqu'à présent témoigne d'une entreprise
8/22/2023 12
Rapport Stage D’ Initiation
en constante évolution, façonnée par des valeurs solides et portée par l'ambition de repousser les
limites de l'innovation dans le domaine des nouvelles technologies et de l'intégration informatique.
8/22/2023 13
Rapport Stage D’ Initiation
8/22/2023 14
Rapport Stage D’ Initiation
Ingénierie :
Infrastructure :
Prestation de services :
Intégration SI :
2. Environment de l’entreprise
2.1. Clientèle:
8/22/2023 15
Rapport Stage D’ Initiation
Depuis ses débuts, la STM met en œuvre des moyens techniques et organisationnels pour garantir
un service ininterrompu. Elle accompagne ses clients dans tous les secteurs professionnels, tant
publics que privés. Forte de plus de 5800 clients satisfaits, la STM a acquis une connaissance
approfondie des métiers de ses clients. comme illustré dans la Figure 5.
Figure 5:Liste des entreprises et organismes publics qui leur font confiance
D'un autre côté, les Principaux Éditeurs et Constructeurs du Secteur Informatique sont des acteurs
clés dans le paysage technologique. Ces partenariats prestigieux offrent à STM Group un accès
privilégié aux dernières innovations, aux meilleures pratiques et aux solutions à la pointe de
8/22/2023 16
Rapport Stage D’ Initiation
l'industrie. Grâce à ces collaborations étroites, STM Group peut consolider son expertise en
intégration et en déploiement des technologies les plus avancées.
La figure 6 illustre la richesse et l'étendue de ces partenariats cruciaux. Elle représente le réseau
interconnecté des relations de STM Group avec ses Partenaires Métiers et Techniques ainsi
qu'avec les Principaux Éditeurs et Constructeurs du Secteur Informatique.
Figure 6:Partenaires Métiers et Techniques et les Principaux Éditeurs et Constructeurs du Secteur Informatique.
8/22/2023 17
Rapport Stage D’ Initiation
Résumé
8/22/2023 18
Rapport Stage D’ Initiation
1. Le département IT :
Le département IT au sein de STM Group joue un rôle essentiel dans la réalisation de solutions
technologiques avancées pour les entreprises. Ce département est responsable de la conception, du
développement, de l'intégration et de la gestion des infrastructures informatiques et des systèmes
d'information. Voici un aperçu des principales caractéristiques de ce département et de ses activités
au sein de l'entreprise.
Maintenance et Support : Une fois les solutions déployées, le département assure la maintenance
continue, la surveillance proactive et le support technique pour résoudre rapidement les problèmes
éventuels.
Le département IT est au cœur des opérations de STM Group. Il collabore étroitement avec les
équipes commerciales pour comprendre les besoins des clients, avec les équipes de conseil pour
offrir des solutions adaptées et avec les équipes de gestion de projet pour garantir la réalisation
réussie des projets. La communication fluide avec les autres départements permet une intégration
efficace des solutions informatiques au sein de l'entreprise.
8/22/2023 19
Rapport Stage D’ Initiation
choisissant les meilleures technologies pour répondre aux besoins spécifiques des clients. Leur
expertise garantit une connectivité fluide et une performance optimale des systèmes.
Techniciens Réseau : Les techniciens réseau sont les gardiens de la stabilité et de l'efficacité des
réseaux informatiques. Ils s'occupent de la configuration, de la surveillance et de la maintenance
des équipements réseau essentiels. En collaborant étroitement avec les ingénieurs, ils assurent que
les communications internes et externes se déroulent sans heurts et que les données sont sécurisées.
Développeurs : Les développeurs de STM Group sont les artisans du code. Ils transforment les
idées en applications fonctionnelles en écrivant des lignes de code dans divers langages de
programmation. Certains développeurs, connus sous le nom de techniciens en développement
informatique, sont également responsables du maquettage, de la conception, de la programmation
et des tests des applications.
Experts IoT : Les experts en IoT sont les connecteurs du monde physique et numérique. Ils
conçoivent et mettent en place des réseaux de capteurs, des dispositifs intelligents et des
plateformes d'analyse pour collecter des données en temps réel à partir d'objets du monde réel. Ces
données alimentent les analyses et aident les entreprises à prendre des décisions plus éclairées.
Le stage comportait deux projets distincts : le premier était un test d'évaluation pour mes
compétences en développement web et ma familiarisation avec les technologies de l'entreprise. Le
deuxième projet, plus vaste, visait à développer une application web d'annotation d'images pour
un client de STM.
8/22/2023 20
Rapport Stage D’ Initiation
Notre rôle pendant ce stage était de contribuer activement au développement de ces deux projets.
Nous avons eu l'occasion de mettre en pratique nos compétences en développement web et
d'acquérir de nouvelles connaissances en utilisant des technologies telle que React.
Cette expérience de stage chez STM nous a non seulement permis d'améliorer nos compétences
techniques en développement web, mais nous a également offert une perspective précieuse sur le
fonctionnement d'une entreprise technologique et l'importance du développement de solutions
personnalisées pour les clients.
Dans la section suivante, nous détaillerons les deux projets sur lesquels nous avons travaillé.
Le premier projet que nous avons entrepris lors de notre stage au sein de la Société Tangeroise de
Maintenance (STM) était un défi visant à évaluer nos compétences en développement web. Ce
projet consistait à concevoir une application web React dédiée à la gestion d'un parking, en utilisant
la reconnaissance des plaques d'immatriculation pour suivre les entrées et sorties des véhicules.
L'objectif était de créer une application qui affiche en temps réel l'état du parking et offre aux
utilisateurs la possibilité de consulter l'historique des mouvements des véhicules.En relevant ce
défi, nous avons eu l'opportunité de mettre en avant nos compétences en développement front-end
avec React. Nous avons également eu l'occasion de concevoir une interface utilisateur à la fois
attrayante et fonctionnelle, tout en comprenant les exigences spécifiques liées à la gestion d'un
parking.
Cette figure 7 est une illustration graphique qui offre une représentation visuelle du projet de
parking.
8/22/2023 21
Rapport Stage D’ Initiation
Le deuxième projet sur lequel nous avons travaillé concernait la création d'un système complet de
gestion du labeling d'images et de création de galeries. L'objectif principal de ce système était de
simplifier le processus de sélection et d'ajout d'éléments sur des images, permettant ainsi aux
utilisateurs de créer des galeries d'images et de définir des zones spécifiques sur chaque image à
des fins d'analyse, de classification ou de visualisation. Ce projet offrait des fonctionnalités CRUD
pour gérer les galeries(projet), les images les utilisateurs … tout en proposant une interface
utilisateur intuitive. De plus, ce projet prenait en charge la gestion des autorisations pour garantir
un accès sécurisé aux fonctionnalités spécifiques du système. En travaillant sur ce projet, nous
avons eu l'opportunité de participer à toutes les étapes du développement, ce qui a renforcé nos
compétences en développement web tout en contribuant à la création d'une solution robuste et
fonctionnelle pour la gestion du labeling d'images et la création de galeries.
Cette figure est une illustration graphique qui offre une représentation visuelle du projet de
labelling picture.
8/22/2023 22
Rapport Stage D’ Initiation
Résumé
8/22/2023 23
Rapport Stage D’ Initiation
1. Méthodologie de travaille :
Lors de notre stage en développement web, nous avons adopté la méthodologie Agile pour la
gestion de nos projets.
L'approche Agile est une méthode itérative et collaborative qui convient particulièrement aux
projets de développement où les exigences peuvent évoluer. Elle offre la flexibilité nécessaire pour
répondre aux besoins changeants du client ou de l'organisation. Nous avons guidé notre travail en
nous appuyant sur les principes fondamentaux de l'Agile , notamment:
8/22/2023 24
Rapport Stage D’ Initiation
Au-delà de l'approche Agile, nous avons exploré des méthodes complémentaires pour répondre à
des besoins spécifiques de certains projets. Le 2TUP (Two-Track Unified Process) s'est révélé être
une extension efficace de notre méthodologie de travail. Le 2TUP combine les pratiques Agiles
avec les principes du Processus Unifié (UP), visant à fusionner flexibilité et réactivité de l'Agile
avec une approche structurée et planifiée de l'UP.
Tracks du 2TUP : Dans le cadre du 2TUP, nous avons opéré avec deux pistes parallèles :
Piste Agile : Cette piste était dédiée aux fonctionnalités et tâches nécessitant une approche itérative
et souple. Les fonctionnalités étaient livrées par incréments, permettant un retour rapide des parties
prenantes et des ajustements en temps réel.
Piste UP : Cette piste était dédiée aux aspects plus structurés et planifiés du développement,
incluant la mise en place d'une architecture solide, la modélisation, les phases de conception
détaillée ainsi que les activités de vérification et de validation.
Intégration des pistes : Les deux pistes étaient constamment intégrées tout au long du projet. Les
fonctionnalités développées dans la piste Agile étaient alignées avec l'architecture et les
spécifications établies dans la piste UP, garantissant ainsi la cohérence globale du projet.
Avantages du 2TUP : L'utilisation du 2TUP nous a permis de bénéficier des atouts de l'Agile
tout en maintenant une vision globale et structurée du développement web. Ceci s'est avéré
particulièrement avantageux pour les projets exigeant des exigences claires et un contrôle plus
rigoureux.
2. Planification :
2.1.Gestion du temps :
Pendant notre stage au sein de l'entreprise de développement web, la gestion du temps a été une
composante cruciale de notre expérience. Dès le début, nous avons consacré le premier jour à nous
imprégner de l'environnement de travail et à rencontrer les membres de l'équipe. Après cette
première journée, nous avons entamé une auto-formation ciblée sur le framework React,
investissant deux jours pour acquérir les compétences nécessaires pour travailler efficacement avec
cette technologie clé. Une fois lancés sur nos projets, nous avons adopté une approche itérative,
en consacrant du temps à la conception soigneuse de chaque projet avant de passer à la mise en
œuvre. Nous avons veillé à garder une communication ouverte avec l'équipe et les parties
prenantes, en organisant régulièrement des réunions pour partager les progrès et obtenir des
8/22/2023 25
Rapport Stage D’ Initiation
retours. Cette approche nous a permis de livrer les projets dans les délais impartis et de nous
adapter aux changements de priorités tout en maintenant un haut niveau de qualité dans notre
travail. La gestion efficace du temps nous a ainsi permis de maximiser notre productivité et de
contribuer de manière significative aux projets de développement web de l'entreprise.
2.2.Diagramme de Gantt:
Le diagramme de Gantt est un outil de gestion de projet visuel qui permet de représenter les
différentes tâches du projet, leur durée, et leur séquence dans le temps.
La Figure 10 représente le diagramme de Gantt sur une période étalée sur plusieurs mois. Durant
le mois de juillet, notre temps a été dédié à un stage. Nous avons commencé le 3 juillet et terminé
le 4 août. Au cours de ce mois, nous avons réalisé deux projets. Le premier a demandé une semaine
et quelques jours pour être achevé. Le deuxième a occupé le reste du mois, impliquant des phases
de conception, de développement et de tests. Chaque projet a abouti à une livraison.
Le mois d'août a été consacré à la rédaction du rapport ainsi qu'à la préparation de la présentation
pour la soutenance. Cette période de préparation de la soutenance s'est étendue jusqu'en septembre.
C'est en septembre que la soutenance a eu lieu.
8/22/2023 26
Rapport Stage D’ Initiation
Pendant notre stage en développement web, nous avons eu l'opportunité de travailler avec un
ensemble diversifié de technologies qui ont été essentielles pour la réussite de nos projets. Voici
un aperçu des principales technologies que nous avons utilisées :
3.1.Front-end technologie
8/22/2023 27
Rapport Stage D’ Initiation
3.2.Back-end technologies :
8/22/2023 28
Rapport Stage D’ Initiation
8/22/2023 29
Rapport Stage D’ Initiation
Résumé
8/22/2023 30
Rapport Stage D’ Initiation
1. Description du projet :
Le défi consiste à créer une application web React pour la Société Tangéroise de Maintenance, un
parking utilisant la reconnaissance automatique des plaques d'immatriculation pour suivre les
entrées et sorties des véhicules. L'objectif est de concevoir une application qui affiche l'état actuel
du garage et permet aux utilisateurs de consulter l'historique des entrées et sorties de véhicules.
Les données fournies comprennent un tableau "vehicles" contenant les enregistrements des
véhicules entrants et sortant du garage, avec des informations telles que l'identifiant unique du
véhicule, le numéro de plaque d'immatriculation, l'heure d'entrée et l'heure de sortie (ou nulle si le
véhicule n'est pas encore sorti).
L'analyse des besoins et spécifications techniques est une étape essentielle dans le processus de
développement de tout projet informatique. Il est primordial de comprendre en détail les exigences
et les attentes des utilisateurs pour concevoir une solution efficace et adaptée.
2.1.Analyse de besoins :
Affichage de l'état actuel du parking : L'application doit fournir un aperçu en temps réel
du nombre de véhicules actuellement dans le parking ainsi que de la capacité totale du
garage.
Liste des véhicules entrants : Une liste des véhicules ayant entré le parking doit être
affichée, avec des informations détaillées telles que le numéro de plaque d'immatriculation,
l'heure d'entrée et l'heure de sortie (s'il y a lieu).
Filtrage par numéro de plaque d'immatriculation : Les utilisateurs doivent pouvoir
filtrer la liste des véhicules par numéro de plaque d'immatriculation, facilitant ainsi la
recherche de véhicules spécifiques.
Journal complet des entrées et sorties : L'application doit enregistrer et afficher un
journal complet des entrées et sorties de véhicules, permettant aux super admins d'accéder
à toutes les informations passées.
Base de données : Le système doit stocker toutes les données relatives aux véhicules, y
compris les enregistrements d'entrées et sorties, dans une base de données sécurisée et
fiable.
Rôles d'utilisateurs : Les rôles "super admin" et "user" doivent être définis avec des
autorisations spécifiques. Les super admins auront un accès complet au journal des entrées
et sorties, ainsi que la possibilité d'ajouter, de modifier et de supprimer des enregistrements.
8/22/2023 31
Rapport Stage D’ Initiation
Les utilisateurs "user" auront uniquement accès à la liste actuelle des véhicules présents
dans le parking.
2.2.Spécifications techniques :
3. Conception UML :
Ces diagrammes graphiques fournissent une vue d'ensemble clair et concise du système, facilitant
ainsi la communication et la compréhension des interactions entre les composants du projet.
Un cas d'utilisation est un outil de modélisation qui permet de décrire les interactions entre
un utilisateur et un système informatique.
8/22/2023 32
Rapport Stage D’ Initiation
La figure 11 présente une vue synthétique et structurée des interactions entre les acteurs clés du
projet : user et admin. Ce diagramme met en évidence les principales fonctionnalités associées à
chaque rôle, en accordant une attention particulière à l'authentification en amont. Cette étape
garantit que seules les personnes autorisées peuvent accéder aux fonctionnalités spécifiques qui
leur sont attribuées, assurant ainsi un environnement sécurisé.
3.2.Diagrammes de séquences :
Un diagramme de séquence illustre les échanges de messages entre objets d'un système au fil du
temps. Il montre comment les interactions se déroulent entre les lignes de vie des objets.
Ces diagrammes permettent de représenter de manière séquentielle les interactions entre les objets
du système.
8/22/2023 33
Rapport Stage D’ Initiation
8/22/2023 34
Rapport Stage D’ Initiation
Ce schéma de la figure 13 illustre le déroulement étape par étape de l’ajout d’un véhicule, débutant
avec l'administrateur qui remplit le formulaire requis. Ensuite, le système procède à la vérification
complète pour s'assurer que toutes les informations nécessaires ont été correctement saisies. Si
toutes les conditions sont remplies, le véhicule est ajouté avec succès à l'application.
8/22/2023 35
Rapport Stage D’ Initiation
8/22/2023 36
Rapport Stage D’ Initiation
8/22/2023 37
Rapport Stage D’ Initiation
La figure 16 montre comment le système effectue un filtrage basé sur la plaque d'immatriculation
fournie.
3.3.Diagrammes de classe :
8/22/2023 38
Rapport Stage D’ Initiation
Dans la figure 17 vous trouver qu’on a inclut trois classes principales : "User", "VehiculeEnCours"
et "Historique". "User" représente les utilisateurs et il porte attribut type, pour distingue entre user
normale et admin du système, tandis que "CurrentVehicle" et "VehicleLog" sont des sous-classes
qui héritent des propriétés de la classe parent "Vehicle". Cette approche permet de modéliser
efficacement les différentes entités du projet et de capturer les relations entre les utilisateurs, les
véhicules en cours d'utilisation et l'historique des véhicules sortis du parking.
4. Développent :
4.1.Composants principaux :
App (App) : Se composant assure une gestion fluide des routes et de la connexion pour les
utilisateurs du système, en les dirigeant vers les espaces appropriés en fonction de leur type
(utilisateur ou administrateur)
Barre de Navigation (Navbar) : Le composant Barre de Navigation est un élément
essentiel de l'interface utilisateur. Il fournit une navigation facile entre les différentes
sections du système et assure une expérience cohérente pour les utilisateurs.
Tableau de Bord CRUD (Create, Read, Update, Delete) : Le composant Tableau de
Bord CRUD permet aux administrateurs d'effectuer des opérations basiques sur la table des
véhicules qui sont a l'historique. Ils peuvent ajouter de nouveaux véhicules, mettre à jour
les informations existantes et supprimer des enregistrements.
Composant Véhicules en Cours (CurrentVec) : Le composant Véhicules en Cours
affiche la liste des véhicules actuellement stationnés dans le parking. Il indique également
le nombre de places restantes et le nombre de places occupées pour que les utilisateurs
puissent vérifier facilement la disponibilité.
8/22/2023 39
Rapport Stage D’ Initiation
Dans la partie "Interaction avec l'API", nous avons adopté une approche simple mais efficace pour
simuler un serveur API. Nous avons créé un fichier JSON nommé "db.json" contenant les
données nécessaires pour le fonctionnement de l'application. Pour mettre en place ce serveur
factice, nous avons utilisé le package npm "json-server", que nous avons installé en exécutant la
commande "npm install -g json-server" pour une installation globale.
Ensuite, nous avons lancé le serveur en utilisant la "npx json-server --watch db.json --port
5000". Cela a permis au serveur de surveiller le fichier "db.json" et de fournir les données via
une API à l'adresse http://localhost:5000.
Cette figure 18 représente comment le fichier db.json est organisé. Cette représentation graphique
permet d'appréhender de manière claire et complète la manière dont les données sont agencées et
structurées au sein de ce fichier.
Pour effectuer les opérations CRUD (Create, Read, Update, Delete) avec le serveur API, nous
avons utilisé la bibliothèque Axios, qui permet de réaliser des requêtes HTTP depuis l'application
8/22/2023 40
Rapport Stage D’ Initiation
React. Cela nous a permis d'envoyer des requêtes POST, GET, PUT et DELETE au serveur API
pour créer, récupérer, mettre à jour et supprimer des données.
Dans cet exemple spécifique, l'objectif est de récupérer les informations des utilisateurs ainsi que
les détails des véhicules en cours d'utilisation.
Dans ce cas d'exemple spécifique, l'objectif est de visualiser comment ces requêtes sont utilisées
pour effectuer des suppressions ciblées de données.
8/22/2023 41
Rapport Stage D’ Initiation
En utilisant cette approche, nous avons pu interagir avec le serveur factice pour ajouter de
nouveaux enregistrements de véhicules, récupérer la liste des véhicules en cours, mettre à jour les
informations existantes et supprimer des enregistrements. L'utilisation de json-server comme
serveur API de simulation a été très bénéfique, car cela nous a permis de développer et de tester
les fonctionnalités de l'application sans avoir à déployer un vrai serveur. Cela a accéléré le
processus de développement et nous a offert un moyen pratique d'interagir avec les données tout
en restant cohérent avec les principes de développement d'applications modernes.
4.3.Les résultats :
Les captures d'écran ci-dessous reflètent les résultats obtenus dans le cadre du premier projet, à la
fois du côté de l'utilisateur et de l'administrateur. Elles offrent un aperçu visuel des fonctionnalités
concrètes développées et des résultats concrets obtenus.
Login :
Cette figure 21 représente la première page qui s'affiche, à savoir la page de connexion.
L'authentification est réalisée à l'aide de l'adresse e-mail et du mot de passe.
Admin :
8/22/2023 42
Rapport Stage D’ Initiation
Cette figure 22 représente le tableau des véhicules dans l'historique. L'email de l'utilisateur, ainsi
que le matricule et les dates d'entrée et de sortie, y sont affichés. Ici, l'administrateur a la possibilité
d'ajouter, de modifier ou de supprimer un véhicule.
Comme vous pouvez le constater, lorsque l'administrateur clique sur "Add vehicle", un formulaire
s'ouvre. Il doit le remplir après il peut ajouter ou annuler l'opération. Si toutes les informations
sont correctement saisies, le véhicule est ajouté. Cependant, si la date d'entrée ou de sortie est
postérieure à la date actuelle, ou si la date de sortie est antérieure à la date d'entrée, un message
d'erreur doit s'afficher.
8/22/2023 43
Rapport Stage D’ Initiation
Cette figure 24 démontre l'ajout du véhicule dans le tableau. À présent, nous pouvons passer à la
phase de modification.
8/22/2023 44
Rapport Stage D’ Initiation
Dans cette figure 27, vous pouvez observer la liste des véhicules actuellement présents dans le
garage, ainsi que le nombre total de véhicules et le nombre de places restantes. La capacité du
garage est de 4 places (Juste pour faire des tests).
8/22/2023 45
Rapport Stage D’ Initiation
Cette figure 28 représente la page où le filtrage est effectué par le biais de la recherche basée sur
le matricule des véhicules.
Dans cette figure 29, nous pouvons simplement constater que la recherche a été effectuée
correctement et que le véhicule recherché existe.
8/22/2023 46
Rapport Stage D’ Initiation
Dans cette situation, la matricule a été modifiée par une autre qui n'existe pas, et en effet,
l'application affiche un message indiquant que ce véhicule n'existe pas.
Cette figure 31 représente la page de profil qui affiche les informations de cet utilisateur, telles que
l'identifiant et le type. Dans ce cas, il s'agit d'un administrateur. Il est important de noter que le mot
de passe devrait normalement être crypté.
8/22/2023 47
Rapport Stage D’ Initiation
User :
Dans ce scénario, le compte a été changer et il s'agit maintenant d'un utilisateur normal, ce qui
explique pourquoi que le type a été changer.
8/22/2023 48
Rapport Stage D’ Initiation
Dans ce contexte, il est possible d'observer l'historique des entrées et sorties de l'utilisateur nommé
"user2".
Familiarisation avec React : Étant donné que c'était notre première expérience avec
React, nous avons dû consacrer du temps pour apprendre les concepts fondamentaux de la
bibliothèque. La transition du développement web traditionnel vers un paradigme basé sur
les composants a nécessité une courbe d'apprentissage. Bien que React offre des avantages
notables, tels que la réutilisabilité des composants, l'état local et la gestion des mises à jour
de l'interface utilisateur, nous avons mis plus de temps que prévu à nous habituer à ces
concepts.
Gestion des Données : Au départ, nous avons sous-estimé la complexité de la gestion des
données dans une application React. Nous avons constaté qu'il n'était pas possible d'accéder
directement à une base de données depuis React en raison de son architecture côté client.
Cette limitation nous a amenés à repenser notre manière de concevoir le flux de données
et de gérer les changements. Trouver une solution adéquate pour stocker et gérer les
données a été un défi majeur.
8/22/2023 49
Rapport Stage D’ Initiation
Choix de la Technologie pour les Données : Après des recherches approfondies, nous
avons découvert qu'utiliser une base de données directement à partir de React n'était pas la
meilleure pratique. Cela nous a amenés à rechercher des alternatives appropriées. Nous
avons finalement opté pour l'utilisation de JSON Server, une solution qui simule une API
REST en utilisant un fichier JSON comme source de données. Bien que cette solution ait
résolu le problème, elle a également nécessité du temps pour la compréhension, la
configuration et l'intégration au projet.
En conclusion, le processus de développement du site web de gestion de parking a été marqué par
des défis significatifs, notamment en raison de notre familiarité limitée avec React et de la nécessité
de trouver une solution adéquate pour la gestion des données. Cependant, ces difficultés nous ont
offert l'opportunité d'apprendre, de développer de nouvelles compétences et d'acquérir une
meilleure compréhension des meilleures pratiques en matière de développement d'applications
web modernes.
8/22/2023 50
Rapport Stage D’ Initiation
Résumé
8/22/2023 51
Rapport Stage D’ Initiation
1. Description du projet :
Gestion des Clients : Les utilisateurs disposent d'un espace dédié pour gérer leurs clients. Ils
peuvent créer, mettre à jour et supprimer des clients, ce qui facilite la gestion des projets pour des
entités distinctes.
Gestion des Projets : À l'intérieur de chaque client, les utilisateurs peuvent créer plusieurs projets.
Chaque projet est associé à un ensemble d'images qui doivent être annotées. Les projets permettent
une segmentation claire des tâches d'annotation.
Gestion des Labels : Les utilisateurs ont la possibilité de définir des étiquettes pour les images,
ce qui permet de catégoriser efficacement les données. Ces étiquettes sont associées aux images
annotées pour une recherche et une organisation ultérieure.
Gestion des images : Au sein de chaque projet, l'utilisateur peut créer un ensemble d'images, qui
seront ensuite à annoter.
Annotation d'Images : L'aspect central de l'application est la capacité d'annoter des images. Sur
la page de marquage, les images non annotées sont présentées aux utilisateurs pour annotation.
Une fois qu'une image est annotée, elle passe à l'état annoté et est retirée de la liste des images à
annoter.
8/22/2023 52
Rapport Stage D’ Initiation
2.1.Analyse de besoins :
Gestion des Clients : Les utilisateurs peuvent créer, mettre à jour et supprimer des clients,
avec la possibilité de lier des projets à des clients spécifiques.
Gestion des Projets : Les utilisateurs peuvent créer, éditer et supprimer des projets.
Chaque projet est associé à un ensemble d'images et de labels.
Annotation d'Images : Les utilisateurs doivent pouvoir annoter des images en leur
attribuant des labels, et les images annotées doivent être correctement gérées.
Gestion des Labels : Les utilisateurs peuvent définir et gérer des labels pour catégoriser
les images annotées.
Gestion des Images : Les utilisateurs peuvent définir et gérer des images pour les annotées.
2.2.Spécifications techniques :
Back-End : Utilisation d'un langage de programmation adapté pour créer une API robuste
et évolutive. Conception d'une architecture de base de données adéquate pour stocker les
informations sur les utilisateurs, les clients, les projets, les images et les annotations. Mise
en place d'un système d'authentification sécurisé pour contrôler l'accès aux ressources de
l'application. Implémentation d'une logique métier pour gérer les opérations CRUD
(Create, Read, Update, Delete) liées aux clients, aux projets, aux images et aux labels.
Gestion efficace des requêtes de l'application front-end et envoi de réponses JSON
appropriées.
8/22/2023 53
Rapport Stage D’ Initiation
3. Conception UML :
Dans cette section, notre attention sera portée sur le diagramme de la partie centrale du projet, à
savoir la page d'annotation d'images. Les autres composantes du projet suivent la même logique
que celle présentée dans les diagrammes des chapitres précédents.
Dans ce diagramme représenté dans cette figure 35, les fonctionnalités que l'utilisateur peut
exécuter sur la page d'annotation sont illustrées. Parmi ces fonctionnalités, on a "Choisir un label"
qui peut être effectué, à condition qu'il ait déjà sélectionné une image et une zone.
3.2.Diagrammes de séquences :
8/22/2023 54
Rapport Stage D’ Initiation
La figure 36 représente le processus suivi lors de l'annotation. Tout d'abord, l'utilisateur doit choisir
une image dans la galerie. Une fois cette image affichée à part, il peut débuter l'annotation en
sélectionnant une zone. Une liste de labels correspondant au projet sur lequel il travaille s'affiche
alors. Ensuite, il enregistre le processus. Cette séquence se répète jusqu'à ce que l'utilisateur
soumette l'image, entraînant ainsi la modification de son statut et sa suppression de la galerie.
3.3.Diagrammes de classe :
8/22/2023 55
Rapport Stage D’ Initiation
4. Développement :
4.1.Composants principaux :
8/22/2023 56
Rapport Stage D’ Initiation
Par exemple, dans le dossier clients, il existe trois fichiers distincts : client.js, edit.js, et add.js.
Chacun de ces fichiers est responsable de l'affichage des informations relatives aux clients, de la
possibilité de les éditer et d'ajouter de nouveaux clients, respectivement. Cette approche de
compartimentalisation permet une séparation claire des responsabilités et une maintenance plus
aisée.
Cependant, dans le dossier labeling, la complexité des fonctionnalités exige une approche
spécifique. Ici, un composant nommé gallery a été créé pour afficher les images non étiquetées
d'un projet sélectionné. Dans le contexte de cette galerie, le composant image offre la capacité de
recadrage (cropping) des images, tandis que les coordonnées de la zone recadrée (top, left, right et
bottom) sont capturées pour une utilisation ultérieure.
En outre, le composant box a été développé pour récupérer toutes les étiquettes associées à un
projet. Cette fonctionnalité permet aux utilisateurs de sélectionner des étiquettes existantes,
simplifiant ainsi le processus d'annotation.
En dehors de ces composants spécifiques, le dossier layout joue un rôle crucial en fournissant une
structure cohérente pour les éléments d'interface récurrents, tels que la barre de navigation (navbar)
et la barre latérale (sidebar), contribuant ainsi à l'ergonomie et à la convivialité de l'application.
L'intégration avec le backend a été simplifiée grâce à l'API FastAPI, représentée dans la figure39.
Cette API offre une documentation claire et détaillée via Swagger, facilitant ainsi la
communication entre les équipes de développement frontend et backend. L'utilisation d'un token
8/22/2023 57
Rapport Stage D’ Initiation
d'authentification a été adoptée pour sécuriser les interactions avec l'API. Voici des exemples
d'interactions avec l'API en utilisant JavaScript et Axios.
Pour assurer l'authentification des utilisateurs, une requête POST a été mise en place pour obtenir
un token d'accès. Le code de la figure 40 montre comment cela a été réalisé :
Pour récupérer la liste des utilisateurs, une requête GET avec un token d'autorisation a été utilisée.
Le code de la figure 41 montre comment les utilisateurs ont été récupérés :
8/22/2023 58
Rapport Stage D’ Initiation
Ces exemples illustrent comment l'API FastAPI avec Swagger a été intégrée dans le frontend pour
faciliter l'interaction avec le backend. L'utilisation du token d'accès assure la sécurité et
l'authenticité des requêtes, tandis que les mécanismes de traitement des réponses et des erreurs
permettent de fournir une expérience utilisateur fluide et informative.
4.3.Les résultats :
Les captures d'écran ci-dessous reflètent les résultats obtenus dans le cadre du premier projet, à la
fois du côté de l'utilisateur et de l'administrateur. Elles offrent un aperçu visuel des fonctionnalités
concrètes développées et des résultats concrets obtenus.
Login :
8/22/2023 59
Rapport Stage D’ Initiation
Barre de navigation :
Cette figure 44 représente les barres de navigation. Initialement, nous avons la "nav bar" qui
comprend un bouton permettant de consulter et de modifier son propre profil (non développé car
ce n'est pas notre tâche), un bouton pour se déconnecter, et un bouton de menu. Lorsque l'on clique
sur le bouton de menu, la "side bar" s'ouvre, contenant "Dashboard" (également non développé car
ce n'est pas notre tâche), ainsi que les sections "Clients" et "Users".
User :
8/22/2023 60
Rapport Stage D’ Initiation
4
2 3
1
La figure met en avant l'interface de gestion des utilisateurs qui offre les fonctionnalités de
création, lecture, mise à jour et suppression (CRUD). Cette interface présente la liste des
utilisateurs accompagnée de boutons dédiés à chaque action, en plus d'une barre de recherche pour
filtrer les résultats. De plus, elle propose des boutons pour ajuster la taille de la table, permettant
d'agrandir ou de réduire l'affichage (1), ainsi qu'une option pour déterminer le nombre d'utilisateurs
à afficher par page (2). Un bouton supplémentaire est prévu pour afficher le reste du tableau(3).
Un indicateur de la taille totale de la table est également présent(4).
8/22/2023 61
Rapport Stage D’ Initiation
La figure 46 illustre un exemple de recherche. Dans cet exemple, le terme "ran" a été saisi dans la
barre de recherche, ce qui a entraîné une recherche globale sur l'ensemble des colonnes de la table
des utilisateurs. Les résultats affichés représentent la ligne où le terme "ran" a été trouvé.
La figure 47 illustre le pop-up qui s'ouvre lorsqu'on clique sur le bouton "+" pour ajouter un nouvel
utilisateur. Ce pop-up offre un formulaire de saisie comprenant des champs pertinents tels que le
nom, l'adresse e-mail, le rôle, etc.
8/22/2023 62
Rapport Stage D’ Initiation
La figure 49 représente le pop-up qui apparaît dès que le bouton d’éditer est activé en vue de
modifier un utilisateur.
Cliente :
8/22/2023 63
Rapport Stage D’ Initiation
La présente représentation met en évidence le CRUD pour les clients, offrant des fonctionnalités
similaires à celles énoncées dans la gestion des utilisateurs, de plus, une caractéristique unique est
introduite : un bouton supplémentaire spécifique aux clients. En cliquant sur ce bouton, une
nouvelle fenêtre s'ouvre, révélant l'ensemble des projets liés à ce client.
5 7
La figure 52 illustre la mise en œuvre du CRUD pour les projets, comportant les boutons
nouvellement introduits "Labels", "Images" et "Labeling". Les figures suivantes fournissent des
détails sur la manière dont ces boutons affectent l'interface.
8/22/2023 64
Rapport Stage D’ Initiation
Cette figure 53 représente la mise en œuvre du CRUD pour les images, en utilisant les
fonctionnalités fournies par le bouton (5). Les deux premières images de la liste sont déjà annotées,
d'où leur état "Labeled". Cependant, il est à noter qu'une erreur s'est produite au niveau de
l'endpoint fourni par l'équipe backend, ce qui a entraîné l'absence d'ID de labels dans le champ
correspondant.
Cette figure 54 représente la mise en œuvre du CRUD pour les labels, en utilisant les
fonctionnalités fournies par le bouton (6).
8/22/2023 65
Rapport Stage D’ Initiation
Le bouton (7) incarne la facette centrale du projet, se consacrant à l'annotation. Les figures
subséquentes détaillent le processus en exposant son déroulement étape par étape.
Lorsque le bouton 7 est activé, il déclenche l'affichage de la galerie d'images spécifique au projet
en question. Cette galerie présente uniquement les images qui n'ont pas encore été annotées, c'est-
à-dire celles qui ne sont pas encore "labeled". Comme c’est illustré.
Dans ce contexte, une image a été choisie et une zone particulière a été délimitée à l'intérieur de
cette image. Le processus d'annotation est maintenant sur le point de débuter.
8/22/2023 66
Rapport Stage D’ Initiation
Dans cette étape, après avoir cliqué sur "Start", une boîte de sélection apparaît, Cette dernière
permet d'annoter précisément la zone que vous sélectionnée.
Dans cette situation, une deuxième annotation a été ajoutée à l'image. Une fois que toutes les
annotations ont été appliquées, l'étape suivante consiste à soumettre cette image.
8/22/2023 67
Rapport Stage D’ Initiation
Dans cette figure 59 , il est évident que l'image ne figure plus dans la galerie. Cela est dû au fait
que son état a été modifié pour indiquer qu'elle est désormais "labeled". Lorsqu'une image est
annotée avec succès et que son état est changé en "labeled", elle est retirée de la galerie des images
non annotées. Cependant, la figure suivante mettra en évidence un problème persistant. Bien que
plusieurs éléments aient été envoyés depuis le front-end, le backend n'a récupéré que le dernier
élément. Cela est principalement dû au fait que endpoint fourni ne parvient à récupérer qu'un seul
élément, même si l'objectif est d'annoter une image avec plusieurs annotations distinctes.
8/22/2023 68
Rapport Stage D’ Initiation
Lors de la phase de développement, nous avons été confrontés à plusieurs défis majeurs. Tout
d'abord, la mise en place de la sélection des zones à annoter s'est avérée être un obstacle important.
Nous avons expérimenté diverses bibliothèques pour cette fonction, notamment "react-annotate".
Cependant, nous avons rencontré des problèmes lors de l'installation de certaines bibliothèques, ce
qui a entraîné des retards. De plus, nous avons également essayé de créer une solution
personnalisée en utilisant uniquement des styles CSS, mais le résultat obtenu ne répondait pas
pleinement à nos attentes en termes d'expérience utilisateur.
Suite à ces difficultés, nous nous sommes tournés vers la bibliothèque "react-crop", qui s'est
finalement avérée être la solution appropriée pour notre besoin de sélection précise des zones à
annoter. Cependant, même avec cette bibliothèque, nous avons rencontré des problèmes lors de
son implémentation. Grâce à une approche méthodique et à des efforts persistants, nous avons pu
surmonter ces difficultés et intégrer avec succès la fonction de sélection des zones à annoter dans
notre application.
Un autre défi majeur a été la consommation de l'API. Nous avons constaté que certaines requêtes
que nous utilisions n'étaient pas toujours compatibles avec l'API fournie. De plus, nous avons
identifié deux problèmes dans l'API elle-même, ce qui a nécessité une exploration et une analyse
approfondies de la part de notre équipe front-end pour résoudre ces problèmes et assurer une
communication fluide entre le front-end et le back-end.
Enfin, la récupération des zones de sélection a également posé des difficultés. Cependant, une fois
que nous avons compris le fonctionnement de la bibliothèque "react-crop", nous avons réussi à
résoudre ce problème et à mettre en œuvre cette fonctionnalité de manière efficace.
Ces obstacles ont été surmontés grâce à une approche collaborative pour résoudre les problèmes
rencontrés. On a finalement abouti à une meilleure compréhension des technologies utilisées et à
une application plus robuste.
8/22/2023 69
Rapport Stage D’ Initiation
Résumé
8/22/2023 70
Rapport Stage D’ Initiation
1. Développement en React :
Pendant notre stage, nous avons utilisé React, une bibliothèque JavaScript très répandue pour la
création d'interfaces utilisateur dynamiques et réactives. Grâce à cette expérience, nous avons
développé une solide maîtrise des concepts fondamentaux de React et acquis une compréhension
approfondie de son rôle essentiel dans le développement côté client.
Parmi les compétences clés que nous avons développées, la gestion de l'état de l'application à l'aide
des hooks de React tels que useState et useEffect occupe une place centrale. Cette aptitude nous a
permis de maintenir efficacement l'état des composants et de gérer les mises à jour, contribuant
ainsi à l'amélioration notable de la réactivité et des performances de nos applications.
Un autre aspect crucial du développement avec React a été la gestion des routes à l'aide de
bibliothèques comme react-router-dom. Cette compétence nous a permis de créer des applications
à plusieurs pages et de garantir une navigation fluide entre les différentes vues de l'application.
Cette figure 61 illustre de manière visuelle et concise la façon dont la bibliothèque react-router-
dom est mise en œuvre dans nos projets. Cette capture met en évidence comment les routes sont
gérées dans une application React, permettant ainsi une navigation fluide et structurée entre les
différentes pages et vues de l'application.
Nous avons également eu l'opportunité de travailler avec des APIs pour intégrer des données
provenant de serveurs externes dans nos applications. Cela nous a permis de comprendre comment
communiquer avec des serveurs via des requêtes HTTP et de manipuler les données reçues pour
les afficher de manière appropriée dans l'interface utilisateur.
8/22/2023 71
Rapport Stage D’ Initiation
La figure 62 , intitulée "Capture représentant les bibliothèques utilisées dans l'un des composants,"
offre un aperçu visuel des diverses bibliothèques qui ont été intégrées dans l'un de nos composants
React.
Figure 62:Capture représentant les bibliothèques utilisées dans l'un des composant.
Enfin, cette expérience nous a également permis de naviguer efficacement dans la structure des
fichiers de projet React, notamment dans le répertoire src, où se trouvent les principaux fichiers
sources, ainsi que dans node_modules, qui contient les dépendances externes du projet.
La gestion de projet et la collaboration en équipe ont joué un rôle crucial dans notre deuxième
projet en tant que travail d'équipe. L'adoption de méthodes et d'outils appropriés a assuré une
planification et une exécution fluides tout au long du projet. En utilisant la méthodologie Agile,
nous avons planifié des sprints, revu les tâches terminées et priorisé les prochaines étapes lors de
réunions régulières. Cette approche itérative a favorisé la flexibilité et la réactivité aux
changements.
Pour la gestion des tâches, GitHub a été notre choix pour le contrôle de version et la coordination
du code. Cette plateforme a permis une collaboration harmonieuse sur diverses fonctionnalités,
minimisant les conflits et permettant des fusions ordonnées.
8/22/2023 72
Rapport Stage D’ Initiation
Travailler avec d'autres développeurs a été formateur. Cela a renforcé notre aptitude à
communiquer, partager des idées et résoudre collectivement des défis, compétences précieuses
pour notre avenir professionnel.
Pendant ce stage, nous avons été confrontés à divers problèmes techniques lors de la compilation
et du développement de nos projets. Cependant, au fil du temps, nous avons développé des
compétences en résolution de problèmes qui nous ont permis de surmonter ces obstacles.
Face aux erreurs de compilation et aux problèmes rencontrés, nous avons appris à analyser
attentivement les messages d'erreur et à identifier les causes sous-jacentes. En nous efforçant de
comprendre les erreurs, nous avons acquis la capacité de détecter plus facilement la source du
problème.
Au fur et à mesure de nos apprentissages, nous avons également renforcé notre confiance en
prenant des décisions techniques pour résoudre les problèmes. Nous avons appris à évaluer
différentes approches et à choisir la meilleure solution en fonction du contexte et des exigences du
projet.
L'erreur 422, aussi connue sous le nom de "Unprocessable Entity" (Entité non traitable), survient
lorsque le serveur comprend la requête mais ne peut pas la traiter en raison de problèmes liés aux
données transmises. Cette situation se manifeste fréquemment lors de la validation des données,
par exemple lorsque les informations transmises dans une requête POST, PUT ou PATCH sont
8/22/2023 73
Rapport Stage D’ Initiation
mal formatées, manquantes ou ne respectent pas les contraintes de validation du serveur. En effet,
si vous observez la Figure 64 dans la documentation API (Swagger), elle demande prénom, nom,
e-mail ,rôle et mot de passe mais nous avons omis de fournir prénom.
Figure 64:Swagger.
8/22/2023 74
Rapport Stage D’ Initiation
Conclusion
La période de stage au sein de l'entreprise STM a été une expérience très bénéfique pour nous.
Au cours de cette période, nous avons eu l'occasion d'approfondir et d'appliquer les notions
théoriques que nous avions acquises lors de notre formation à L’Ecole Marocaine des Sciences
de l'Ingénieur de Tanger. Cette mise en pratique concrète nous a permis de consolider nos
connaissances et de mieux appréhender les défis du monde professionnel.
Dès nos premiers jours de stage, nous avons pu constater à quel point le domaine théorique et le
domaine pratique sont complémentaires. Il ne suffit pas d'avoir des connaissances théoriques
solides, il est essentiel de savoir les mettre en œuvre dans des situations réelles. Ce stage nous a
offert cette opportunité précieuse, en nous permettant de mettre en pratique nos compétences et
de développer notre savoir-faire dans un environnement professionnel stimulant.
L'une des leçons les plus importantes que nous avons apprises pendant notre stage est
l'importance de la sociabilité et de la coopération dans le milieu du travail. Travailler en équipe
et collaborer avec nos collègues nous a permis de comprendre comment le succès des projets
dépend souvent de la collaboration entre les membres de l'équipe. Nous avons appris à
communiquer efficacement, à partager des idées et à résoudre des problèmes de manière
collective. Cette expérience a renforcé notre capacité à travailler en équipe.
8/22/2023 75
Rapport Stage D’ Initiation
Bibliographie
https://docs/Presentation_STM.pdf
https://www.stm.ma/
https://www.w3schools.com/REACT
https://www.ideematic.com/actualites/2015/01/methodes-agiles-definition/
https://www.techno-science.net/definition/670.html
https://www.gantt.com/fr/
https://uml.developpez.com/cours/
https://perso.liris.cnrs.fr/christine.solnon/coursUML.pdf
https://reactjsexample.com/a-complete-crud-of-a-camera-store-made-with-reactjs/
https://react-bootstrap.netlify.app/
https://www.1min30.com/developpement-web-mobile/figma-1287540804
https://www.w3schools.com/nodejs/nodejs_npm.asp
8/22/2023 76