📁

E4-Mission9-Portfolio-Baptiste-Grimaldi

Liens utiles

Le site:

(Utiliser un navigateur chromium pour une meilleure expérience)

Portfolio Baptiste Grimaldi
Check out the portfolio of Baptiste Grimaldi, a full-stack web developer specializing in creating dynamic and responsive websites. Explore his projects and contact him for your next web development project.
https://portfolio.baptistegrimaldi.info/

Le repo du projet

https://github.com/GrimalDev/Portfolio

session storage and cookie for passport.js

https://stackoverflow.com/questions/62894933/why-use-cookie-session-in-addition-to-passport-js


💡
SOMAIRE

1. Introduction

Le but d'un portfolio de dĂ©veloppeur web fullstack est de prĂ©senter ses compĂ©tences, ses projets passĂ©s et ses rĂ©alisations Ă  des employeurs potentiels, Ă  des clients, Ă  des partenaires et Ă  toute personne qui souhaite en savoir plus sur ses capacitĂ©s. Le portfolio doit ĂȘtre professionnel, facile Ă  naviguer, accessible et esthĂ©tiquement attrayant, et doit inclure les Ă©lĂ©ments clĂ©s tels que les compĂ©tences, les projets passĂ©s, les rĂ©alisations, les expĂ©riences professionnelles, ainsi qu'une prĂ©sentation de la personnalitĂ© et des passions du dĂ©veloppeur.

1.1 Présentation du projet de mon portfolio

1.2 Contexte de la mission

Dans le cadre de mon BST SIO, on me demande de rĂ©aliser pour mes productions. Ce support est bien plus qu’un rendu d’épreuve. Cela e permet de me mettre en valeur au prĂšs des recruteurs.

2. Expression fonctionnelle du besoin

2.1 Objectifs du portfolio

  1. Analyse des besoins : Il est important de comprendre les besoins du client et de l'utilisateur final afin de déterminer les fonctionnalités et les exigences du projet.
  1. Conception de l'architecture : Il s'agit de définir l'architecture de l'application, les composants et les technologies nécessaires pour réaliser le projet.
  1. Planification du projet : Il est important d'établir une liste de tùches, un calendrier et un budget pour s'assurer que le projet est achevé en temps voulu et dans les limites du budget.
  1. DĂ©veloppement du front-end : La conception de l'interface utilisateur et la mise en Ɠuvre du front-end de l'application peuvent commencer une fois que l'architecture est en place. Il s'agit de crĂ©er une expĂ©rience utilisateur intuitive et attrayante.
  1. Développement du back-end : Le développement du back-end implique la création des fonctionnalités et des services nécessaires pour que l'application fonctionne de maniÚre efficace. Il est important de s'assurer que le back-end est extensible, évolutif et sécurisé.
  1. Tests et dĂ©bogage : Une fois le dĂ©veloppement terminĂ©, il est temps de tester l'application pour s'assurer qu'elle fonctionne correctement. Les tests devraient ĂȘtre effectuĂ©s Ă  chaque Ă©tape du dĂ©veloppement, en utilisant des outils de dĂ©bogage pour rĂ©soudre les problĂšmes.
  1. DĂ©ploiement : AprĂšs avoir achevĂ© les tests et la correction des erreurs, l'application est prĂȘte Ă  ĂȘtre dĂ©ployĂ©e. Cette Ă©tape implique la mise en place de l'infrastructure nĂ©cessaire pour que l'application fonctionne correctement.
  1. Maintenance et mise à jour : Une fois l'application déployée, il est important de la maintenir réguliÚrement et de la mettre à jour pour répondre aux besoins changeants des utilisateurs. La maintenance peut inclure la correction de bugs, la mise à jour de la sécurité et l'ajout de nouvelles fonctionnalités.

2.2 Public cible

Le publique ciblĂ© sont les personnes cherchant Ă  se renseigner sur mes projets ou connaĂźtre mon parcours professionnel. L’interface doit donc ĂȘtre une dĂ©monstration rapide de mes capacitĂ©s. Il faut Ă©galement prendre en compte que des personnes peuvent se retrouver sur des articles de mon sites par rĂ©fĂ©rencement. Il faut donc que mon portfolio puisse Ă©galement remplir une fonction de simple blog.

Public ciblé

2.3 Fonctionnalités principales

Analyse du besoin

Mon besoin est de créer un portfolio personnel en ligne qui me permettra de présenter mes compétences, mes réalisations et mes projets passés. En créant un portfolio, je pourrais présenter mon travail et mes compétences à des employeurs potentiels, des clients, des partenaires ou à toute personne qui souhaite en savoir plus sur moi et mes capacités.

Un portfolio en ligne me permettra de :

💡
Pour rĂ©pondre Ă  ces besoins, mon portfolio doit ĂȘtre professionnel, facile Ă  naviguer, accessible et esthĂ©tiquement attrayant. Les Ă©lĂ©ments clĂ©s de mon portfolio devraient inclure mes compĂ©tences, mes projets passĂ©s, mes rĂ©alisations, mes expĂ©riences professionnelles et une prĂ©sentation de ma personnalitĂ© et de mes passions.

En rĂ©sumĂ©, je souhaite crĂ©er un portfolio en ligne pour prĂ©senter mes compĂ©tences, mes projets passĂ©s et mes rĂ©alisations Ă  des employeurs potentiels, des clients, des partenaires et Ă  toute personne qui souhaite en savoir plus sur moi et mes capacitĂ©s. Mon portfolio doit ĂȘtre professionnel, facile Ă  naviguer, accessible et esthĂ©tiquement attrayant. Les Ă©lĂ©ments clĂ©s de mon portfolio devraient inclure mes compĂ©tences, mes projets passĂ©s, mes rĂ©alisations, mes expĂ©riences professionnelles et une prĂ©sentation de ma personnalitĂ© et de mes passions.

Nous allons maintenant voir comment je peux reflĂ©ter ses points clĂ©s dans la structure et l’architecture de mon portfolio

Liste des analyses fonctionnelles du besoin

Front office:

La liste des fonctionnalités attendues sont:

Back office:

Articles:

Projets:

Utilisateur:

Je gÚre les fonctionnalités de back-office en utilisant une base de données MySQL et un ensemble d'API RESTful pour communiquer avec la base de données.

J'utilise Node.js et Express.js pour créer des API RESTful rapides et évolutives. Les API RESTful sont ensuite consommées par le front-end pour afficher les données dans l'interface utilisateur.

4. Description des environnements

4.1 Stack de technologies utilisé

💡
Le stack de technologies utilisé pour le projet Mediocs suit une architecture trois tiers pour garantir la modularité et la maintenabilité du systÚme.

Couche présentation (front-end)

Couche logique (back-end)

Couche données

Le choix de cette architecture permet de séparer les différentes couches de l'application pour garantir une évolutivité et une modularité maximales. Chaque couche est responsable de sa propre fonctionnalité, ce qui facilite la maintenance et la mise à jour du systÚme.

4.2 Environnement de production

L’environnement de production est une docker dĂ©ployĂ©e sur mes serveurs.

Voir la documentation de ma mission “Home-Lab” qui explique comment sont organisĂ©s mes serveurs.

J'ai choisi Docker comme environnement de production pour plusieurs raisons. Tout d'abord, cela me permet d'avoir un contrĂŽle total sur les conteneurs via un docker-compose, oĂč je peux dĂ©finir toutes les propriĂ©tĂ©s nĂ©cessaires.

Ensuite, Docker me permet de relancer facilement un conteneur tout frais en cas de problÚme, ce qui est trÚs utile pour maintenir la disponibilité de mon application.

Enfin, la conteneurisation offre de nombreux avantages en termes d'optimisation des ressources, ce qui peut m'aider à améliorer les performances de mon application tout en réduisant les coûts d'infrastructure.

4.3 Outils utilisés

IDE

💡
Pour la programmation de ce site, j’utilise un IDE de JetBrain © fait pour la programmation web et parfaitement optimisĂ© pour le NodeJS: WebStorm
WebStorm
WebStorm: The Smartest JavaScript IDE by JetBrains
https://www.jetbrains.com/fr-fr/webstorm/

C’est un IDE payant avec le quel j’ai obtenue un partenariat avec l’école IRIS de Strasbourg pour des licences Ă©tudiantes.

Stack en détail

Le choix des outils pour la réalisation d'un portfolio en tant que développeur web fullstack est crucial pour obtenir une application Web dynamique et performante avec une interface utilisateur intuitive et attrayante. Les outils disponibles pour les développeurs comprennent NodeJs, JavaScript, ThreeJs, PassportJs, MySQL et d'autres bibliothÚques.

Pour ce projet j’utilise les derniùres normes ES6 en programmation type modules.

Gestion de la base de données

Pour la gestion de la base de données, le trÚs bon outil open-source PhpMyAdmin est utilisé. Par la suite je développerai mon propre outil type CRM.

Ecriture des articles et projets

Pour l’écriture des articles de ce portfolio j’utilise Notion. Notion est un outil formidable avec une trĂšs bonne interface utilisateur. Le gros avantage de notion est sa modularitĂ© ainsi que son Ă©criture “MarkDown”.

💡
Notion est un outil de productivité tout-en-un qui permet de gérer des projets, de prendre des notes, de créer des bases de données, de collaborer avec d'autres personnes et bien plus encore. Il utilise une interface utilisateur intuitive et permet de créer des pages avec différents types de contenus, tels que des listes de tùches, des tableaux, des documents, des calendriers, des galeries d'images et des bases de données.

Les articles sont ensuite intĂ©grĂ© Ă  leurs propres pages de mon portfolio en passant par un moteur d’adaptation que j’ai dĂ©veloppĂ©.

5. MĂ©thodologie

En tant que développeur web fullstack, l'adoption de méthodologies et de rigueur est d'une importance capitale. Il est essentiel de choisir une stratégie de versioning appropriée pour le projet en question, ainsi que pour la gestion des tests et de la documentation.

5.1 Méthodologie de développement

Quand on parle de programmation, rien ne vaut la pratique. Lorsqu'on pratique, on remarque trÚs vite l'importance de méthodologies.

On entend beaucoup de méthodes : Agile, Scrum, Agile-Scrum... On parle de Pomodoro et de l'importance de faire des pauses. Rien ne vaut la pratique, d'essayer différentes méthodologies.

Ce qui fonctionne pour moi, c'est un kanban et des sprints. Je me fixe des petits objectifs Ă  sprinter et je garde un suivi de mes tĂąches avec un kanban sur Notion ou Trello.

GĂ©rez les projets de votre Ă©quipe, oĂč que vous soyez | Trello
Trello est l'outil de gestion de projet n° 1. Configurez un tableau en quelques secondes, automatisez les tĂąches fastidieuses et collaborez oĂč que vous soyez, mĂȘme sur mobile.
https://trello.com/fr
Your wiki, docs & projects. Together.
A new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your team.
https://www.notion.so/

Je ne dirais pas que j’utilise une mĂ©thodologie SCRUM car je ne suis pas un expert mais je pense m’en rapprocher.

Pour plus information j’invite à lire ce trùs bon article:

La méthode SCRUM pour les nuls
La méthode SCRUM est l'approche AGILE la plus utilisée dans le monde. Découvre avec notre article les étapes clés de la méthode, les rÎles de chacun et comment mettre en application le "SCRUM" grùce à l'expertise de l'équipe tech d'Ignition Program.
https://ignition-program.com/tuto/la-methode-scrum-pour-les-nuls

5.2 Gestion de version

Bonnes pratiques

git commit :: TITRE

CORPS \# rest comments

Stratégies de branching

Deux options principales:

  1. DĂ©veloppement Mainline:
    • quelques branches
    • commits relativement petits
    • normes de test de haute qualitĂ©
  1. Branches State, Release et Feature
    • Deux types de branches diffĂ©rents qui remplissent des types de travail diffĂ©rents
      1. LongRunning
        • existe tout au long de la vie du projet
        • souvent, ils reflĂštent les "Ă©tapes" de votre cycle de vie de dĂ©veloppement
      1. Short Running
        • pour les nouvelles fonctionnalitĂ©s, les corrections de bogues, le refactoring, les expĂ©riences
        • sera supprimĂ© aprĂšs l'intĂ©gration (fusion/rebase)

Deux exemples de stratégies de branching

  1. GitHub Flow
    • trĂšs simple, trĂšs lĂ©ger : seulement long-running
    • branche ("main") + branches de fonctionnalitĂ©s
  1. GitFlow
    • plus de structure, plus de rĂšgles
    • long-running : "main" + "develop"
    • de courte durĂ©e : fonctionnalitĂ©s, versions, correctifs

Pour la gestion de version de ce projet, j’ai optĂ© pour une stratĂ©gie de branching avec un main, un dev et des branches pour les fonctionnalitĂ©s. Cette mĂ©thode de versioning permet de travailler sur plusieurs fonctionnalitĂ©s en parallĂšle tout en minimisant les conflits de code.

En rĂ©sumĂ©, la stratĂ©gie de versioning avec un main, un dev et des branches pour les fonctionnalitĂ©s est efficace pour travailler sur plusieurs fonctionnalitĂ©s en parallĂšle tout en minimisant les conflits de code. Les fonctionnalitĂ©s sont testĂ©es avant d'ĂȘtre fusionnĂ©es dans la branche principale, ce qui permet de garantir la qualitĂ© des fonctionnalitĂ©s intĂ©grĂ©es.

5.3 Gestion de tests

💡
Le test est une phase importante dans le développement web car il permet de s'assurer que le site web ou l'application web fonctionne correctement et répond aux exigences et spécifications. Pendant la phase de test, les développeurs et les testeurs identifient et corrigent les défauts ou bugs dans le code, et vérifient que le site web ou l'application web fonctionne comme prévu.

Etant seul développeur de ce site web, les phases de tests sont relativement rapides. et sont en trois phases.

  1. Test avant implĂ©mentation du “bug fix”
  1. Test aprĂšs implĂ©mentation du “bug fix”
  1. Rapport dans la “pull request” de correction de bug

5.4 Documentation

Je tiens à aborder ce point uniquement pour parler des commentaires et autres documentations rédigées autour du projet.

đŸ”„
Mis Ă  part ce document, tout est en anglais. La programmation est une langue universelle, alors autant ne pas restreindre la comprĂ©hension du code par une langue. Pour moi, cela fait partie du clean code. Je tiens Ă  mettre un point d’honneur lĂ  dessus.

6. Mise en oeuvre

6.1 Conception de l'architecture

Quand je commence un projet, j’aime bien mettre les bases de mon projet:

Le modÚle MVC (Model-View-Controller) est une architecture de conception qui permet de diviser une application en trois parties principales: le modÚle (Model), la vue (View) et le contrÎleur (Controller). Le modÚle représente la structure de données de l'application, la vue est responsable de l'interface utilisateur et le contrÎleur gÚre les interactions entre le modÚle et la vue.

Dans mon projet, j'ai organisé mes fichiers en utilisant le modÚle MVC. Le dossier app contient les fichiers de configuration, de contrÎleurs et de modÚles. Le dossier public contient les ressources statiques, telles que les images, les fichiers CSS et JavaScript. Le dossier routes contient les fichiers de routage qui déterminent la logique de l'application. Enfin, le dossier views contient les fichiers de vue au format EJS.

Lorsqu'un utilisateur effectue une demande, le contrÎleur correspondant est appelé. Le contrÎleur effectue les opérations nécessaires sur le modÚle, puis renvoie les résultats à la vue correspondante. La vue utilise les données renvoyées pour afficher les informations à l'utilisateur.

Voici l'architecture de mon projet:

├── app
│   ├── config
│   ├── controllers
│   └── models
├── public
│   ├── fonts
│   │   ├── Inter
│   │   ├── Roboto
│   │   └── Source_Code_Pro
│   ├── images
│   ├── javascripts
│   ├── media
│   │   └── curriculum
│   ├── model
│   └── stylesheets
├── routes
├── tmp
└── views
    ├── imported
    └── partials

Le dossier app contient les fichiers de configuration, de contrÎleurs et de modÚles. Le dossier public contient les ressources statiques, telles que les images, les fichiers CSS et JavaScript. Le dossier routes contient les fichiers de routage qui déterminent la logique de l'application. Le dossier views contient les fichiers de vue au format EJS.

6.2 DĂ©veloppement du back-end

Mon backend de serveur Node.js pour mon projet est organisé de la maniÚre suivante:

Fichier app.js

Le fichier app.js est le serveur qui se charge d'Ă©couter les requĂȘtes HTTP et de les rediriger en fonction. Il possĂšde toutes les librairies nĂ©cessaires pour faire un check des dĂ©pendances avant l'exĂ©cution du serveur.

Le fichier app.js est organisé de la maniÚre suivante :

Fichiers de routes .js

Les fichiers de routes .js sont appelés dans le fichier serveur. Ces routes appellent des modÚles ou des contrÎleurs.

Les fichiers de routes sont organisés de la maniÚre suivante :

Fichiers d'applications (modĂšles ou contrĂŽleurs)

Les modÚles sont des fichiers cadres avec la logique de certains programmes. Les contrÎleurs se chargent quant à eux de la communication avec la base de données.

Les fichiers d'applications (modÚles ou contrÎleurs) sont organisés de la maniÚre suivante :

Les vues

Les affichages sont gĂ©nĂ©rĂ©s cĂŽtĂ© client avec une renderer. Ici j’utilise Express avec l’extension de fichiers .ejs.

Les vues sont organisées dans le dossier views. Les fichiers de vues utilisent le langage de modÚle EJS pour générer des pages HTML dynamiques. Les fichiers de vue incluent également des fichiers de style et des fichiers JavaScript pour la mise en forme graphique des pages et la logique front-end.

Dossier public

Le dossier public est défini par le serveur et toutes les ressources sont accessibles depuis ce dossier. Il contient tous les assets.

Le dossier public contient tous les fichiers statiques tels que les images, les fichiers CSS et JavaScript. J'ai organisé ce dossier en sous-dossiers pour faciliter la recherche et la gestion des fichiers.

Systùme d’authentification

Pour l'authentification, j'ai utilisé une combinaison de cookies et de sessions pour stocker les informations d'identification de l'utilisateur.

💡
Un cookie est un petit fichier texte stocké sur l'ordinateur de l'utilisateur. Les cookies sont envoyés par le serveur au client et stockés sur le disque dur de l'utilisateur. Les cookies sont souvent utilisés pour stocker des informations sur les préférences de l'utilisateur, telles que la langue préférée ou les informations de connexion.
Un cookie sur mon site
💡
Une session, quant à elle, est un moyen de stocker des informations sur un utilisateur spécifique de maniÚre persistante. Les sessions sont stockées cÎté serveur et sont indexées par un identifiant de session unique qui est envoyé au client sous forme de cookie. Ainsi, chaque fois que l'utilisateur effectue une demande, le serveur peut récupérer les informations de session associées à cet identifiant de session pour savoir qui est l'utilisateur.

La combinaison de cookies et de sessions est souvent utilisée pour stocker des informations d'identification de l'utilisateur, car cela permet de stocker les informations de maniÚre persistante et sécurisée, tout en minimisant le temps de latence entre les demandes. Lorsqu'un utilisateur se connecte, le serveur stocke des informations sur l'utilisateur dans une session, qui est stockée dans la base de données.

Lorsque l'utilisateur effectue une demande ultérieure, le serveur récupÚre les informations de session associées à l'identifiant de session stocké dans le cookie, et utilise ces informations pour déterminer qui est l'utilisateur et s'il est autorisé à accéder à la ressource demandée.

Dans le fichier de configuration de Passport, j'ai défini une fonction de sérialisation qui stocke l'identifiant de l'utilisateur dans la session, et une fonction de désérialisation qui récupÚre l'identifiant de l'utilisateur à partir de la session. J'ai également créé un objet cookie avec une durée de vie de deux heures, qui est envoyé au client lorsqu'il est authentifié.

Enfin, pour stocker les sessions dans une base de données SQL, j'ai utilisé la bibliothÚque express-mysql-session, qui fournit une classe pour stocker les sessions dans une table de base de données MySQL. J'ai créé un nouvel objet sessionStore en utilisant cette classe, et je l'ai passé à la fonction session() d'Express pour stocker les sessions dans la base de données.

Cela permet de stocker les informations d'identification de l'utilisateur de maniÚre persistante et sécurisée, tout en minimisant le temps de latence entre les demandes.

une persistance temporaire des sessions

Librairies

Je peux préciser que j'utilise le framework Express.js pour gérer les routes et la logique de l'application. J'ai également choisi d'utiliser la bibliothÚque mysql (notons que sequelize est une option trÚs adéquate aussi) pour la gestion de la base de données MySQL.

Voici des explications supplémentaires sur certaines des librairies utilisées dans ce projet :

En bref

Le dossier public contient tous les fichiers statiques tels que les images, les fichiers CSS et JavaScript. J'ai organisé ce dossier en sous-dossiers pour faciliter la recherche et la gestion des fichiers.

J'utilise le framework Express.js pour gérer les routes et la logique de l'application. J'ai également choisi d'utiliser la bibliothÚque mysql pour la gestion de la base de données MySQL.

Enfin, j'utilise plusieurs bibliothÚques pour des tùches spécifiques tels que l'envoi d'e-mails avec SendGrid, la création de fichiers PDF à partir de pages HTML, la coloration syntaxique du code, la manipulation des dates et des heures en JavaScript, l'analyse des flux RSS, la création de graphiques en 3D dans le navigateur, etc.

6.3 DĂ©veloppement du front-end

Pour mon front-end, j'ai opté pour une approche basique mais efficace. J'utilise le modÚle BEM (Block Element Modifier) pour organiser mon code HTML et CSS. Le CSS est écrit en SCSS pour une meilleure lisibilité du code, puis converti en CSS pour une meilleure compatibilité des navigateurs.

Organisation du CSS

Le CSS est organisé avec les fonctionnalités du SCSS.

💡
SCSS (ou SASS) est un prĂ©processeur CSS qui permet d'Ă©crire du CSS de maniĂšre plus structurĂ©e et modulaire. Il ajoute des fonctionnalitĂ©s comme les variables, les mixins, les fonctions, les boucles et les conditions, qui permettent de crĂ©er des styles rĂ©utilisables et plus facilement maintenables. Le SCSS est ensuite compilĂ© en CSS pour ĂȘtre utilisĂ© par les navigateurs web.

L'organisation du CSS est divisée en trois fichiers principaux:

  1. colors.scss : fichier contenant les couleurs utilisées dans l'ensemble du site web.
  1. main-style.scss : fichier principal appelé sur toutes les pages, contenant les styles communs à toutes les pages.
  1. Fichiers de styles de page : chaque page a son propre fichier de style, nommé d'aprÚs la page correspondante (par exemple, home-style.scss pour la page d'accueil).

En outre, il existe des fichiers de style supplémentaires pour certains des éléments récurrents du site web, tels que la barre de navigation (header-style.scss) et les styles de formulaire (login-style.scss).

Dans main-style.scss, les styles sont organisés par blocs, en utilisant la méthode BEM (Block Element Modifier). Les styles sont également organisés en utilisant les fonctionnalités de SCSS, telles que les variables, les mixins et les fonctions.

Optimisations

J'ai également pris soin de met en place un listener qui minimifier tous les scripts pour optimiser les temps de chargement de la page. J'ai également veillé à ce que toutes les images soient en format web pour une meilleure optimisation.

💡
La minimisation de fichiers JavaScript consiste Ă  rĂ©duire la taille des fichiers en supprimant tout code inutile, tel que les commentaires, les espaces blancs et les noms de variables non utilisĂ©s. Cela permet de rĂ©duire le temps de chargement des pages web et d'amĂ©liorer les performances globales du site. J’utilise UglifyJS.

Le choix d'utiliser des images en format web est principalement motivé par la taille de ces fichiers. Les images en format web sont généralement plus légÚres que les images en format PNG ou JPEG, ce qui permet de réduire considérablement le temps de chargement de la page.

Communication serveur et BDD

Il est Ă  noter que, pour des raisons Ă©videntes de contrĂŽle du flux de donnĂ©es, toutes les requĂȘtes vers la base de donnĂ©es sont gĂ©rĂ©es par le serveur via les routes. Cela permet de garantir l'intĂ©gritĂ© des donnĂ©es et d'Ă©viter tout risque de compromission de la sĂ©curitĂ© en provenance du front-end. En outre, cette mĂ©thode permet une gestion plus efficace de la base de donnĂ©es, car elle centralise toutes les requĂȘtes et les traitements de donnĂ©es en un seul endroit.

Cela permet aussi d’avoir un code mieux organiser et plus facile à maintenir.

6.4 Les grandes fonctionnalités de ce site

Recherche d’articles
Page de contact

7. Gestion de la maintenance corrective et Ă©volutive

Pour assurer la maintenance corrective de mon projet, j'ai mis en place un processus de qualité (QA) pour garantir que toutes les erreurs et les bugs sont corrigés rapidement et efficacement.

Tout d'abord, j'ai inclus un formulaire de contact sur mon site pour permettre aux utilisateurs de signaler tout problÚme qu'ils rencontrent. Ce formulaire est relié à ma boßte mail de contact, ce qui me permet de recevoir rapidement toutes les plaintes et de les traiter en conséquence.

Ensuite, j'utilise Github pour gĂ©rer toutes les mises Ă  jour et les modifications de mon projet. Je peux facilement suivre toutes les modifications apportĂ©es Ă  mon code et les tester avant de les dĂ©ployer sur mon site en production. En utilisant des branches et des pull requests, je suis en mesure de sĂ©parer les fonctionnalitĂ©s en cours de dĂ©veloppement de celles qui sont prĂȘtes Ă  ĂȘtre dĂ©ployĂ©es.

Enfin, j'ai mis en place des tests automatiques pour m'assurer que toutes les fonctionnalités de mon projet fonctionnent correctement avant de les déployer en production. Les tests couvrent tous les aspects de mon projet, de la logique de l'application aux interfaces utilisateur.

đŸ”„
En utilisant ces méthodes, je suis en mesure de garantir que mon projet est toujours à jour et que tous les problÚmes sont corrigés rapidement et efficacement.

8. Bilan du projet

8.1 Validation des exigences point par point

8.2 Axes d'amélioration

Lorsqu'on développe une application seul, on est souvent confronté à un manque d'organisation.

Avec le temps, je compte devenir de plus en plus Ă  l'aise avec l'organisation lors de la mise en Ɠuvre de mes projets, mais c'est dĂ©finitivement un axe d'amĂ©lioration.

9. Conclusion

9.1 SynthĂšse de la mission

J'ai réalisé une mission de développement web pour le projet E4-Mission9-Portfolio-Baptiste-Grimaldi. Dans le cadre de cette mission, j'ai conçu et développé un site web permettant d'améliorer la présence en ligne de l'organisation en fournissant un service aux utilisateurs.

Pour ce faire, j'ai utilisé le framework Express.js pour gérer les routes et la logique de l'application, ainsi que la bibliothÚque mysql pour la gestion de la base de données MySQL. J'ai également utilisé plusieurs autres bibliothÚques pour des tùches spécifiques telles que l'envoi d'e-mails avec SendGrid, la création de fichiers PDF à partir de pages HTML, la coloration syntaxique du code, la manipulation des dates et des heures en JavaScript, l'analyse des flux RSS, la création de graphiques en 3D dans le navigateur, etc.

Le site web comprend plusieurs fonctionnalités telles qu'un thÚme sombre, la veille automatisée, une interface de recherche, une page de contact, une interface admin et l'authentification gérée avec PassportJS et une combinaison de session et de cookie.

J'ai mis en place un processus de qualité (QA) pour garantir que toutes les erreurs et les bugs sont corrigés rapidement et efficacement. J'ai inclus un formulaire de contact sur mon site pour permettre aux utilisateurs de signaler tout problÚme qu'ils rencontrent, j'utilise Github pour gérer toutes les mises à jour et les modifications de mon projet, et j'ai mis en place des tests automatiques pour m'assurer que toutes les fonctionnalités de mon projet fonctionnent correctement avant de les déployer en production.

L'organisation du CSS est divisée en trois fichiers principaux : colors.scss , main-style.scss et les fichiers de styles de page. Les styles sont organisés par blocs, en utilisant la méthode BEM (Block Element Modifier), et en utilisant les fonctionnalités de SCSS, telles que les variables, les mixins et les fonctions.

Enfin, pour la gestion de l'authentification, j'ai utilisé une combinaison de cookies et de sessions pour stocker les informations d'identification de l'utilisateur, stockées dans une base de données SQL avec la bibliothÚque express-mysql-session. Cette méthode permet de stocker les informations de maniÚre persistante et sécurisée, tout en minimisant le temps de latence entre les demandes.

L'ensemble de ces fonctionnalités et méthodes ont permis de développer un site web performant, sécurisé et facilement maintenable. Cependant, j'ai identifié l'organisation comme un axe d'amélioration pour mes projets futurs.

9.2 Perspectives futures

Je vois plusieurs axes d'amélioration pour mon projet Portfolio sachant que je compte sur lui tout au long de ma carriÚre.

Amélioration du systÚme de recherche

Je prévois d'améliorer le systÚme de recherche en ajoutant une barre de recherche disponible à tout moment sur le site pour chercher à travers tous les articles et projets. Cela permettra aux utilisateurs de trouver rapidement et facilement les informations qu'ils recherchent.

Augmentation du nombre d'articles

Je compte également augmenter le nombre d'articles sur mon site pour offrir plus de contenu aux utilisateurs. Je prévois de publier réguliÚrement de nouveaux articles pour continuer à améliorer la présence en ligne de mon organisation.

Ajout d'une section certifications

Je prévois également d'ajouter une section certifications pour mettre en avant mes compétences et mes réalisations. Cette section permettra aux utilisateurs de mieux comprendre mes qualifications et mes réalisations professionnelles.

En travaillant sur ces améliorations, je suis convaincu que mon site web continuera à s'améliorer et à offrir une expérience utilisateur de qualité aux utilisateurs.

👉
Cette documentation est la propriété intellectuelle de Grimaldi Baptiste. portfolio.baptistegrimaldi.info/legal