Want to create interactive content? It’s easy in Genially!

Get started free

Pet Foster TP DWWM

Romain NAVARRO

Created on November 29, 2024

Diaporama de présentation Titre professionnel

Start designing with a free template

Discover more than 1500 professional designs like these:

Transcript

Romain Navarro - Pet Foster

TITRE PROFESSIONNEL DÉVELOPPEUR WEB ET WEB MOBILE

Soutenance

  • Game design
  • Modélisation 3D

Une lassitude des problématiques marketing

Un poste de webmaster qui s'est étendu au développement.

  • MAO
  • Motion design

Qui suis-je ?

Attrait depuis toujours pour la création numérique

2024

O Clock - TP DWWM

2017

Consogarage - Webmaster

2011

Bacatà - Webmaster

2003
2006

ETPA - Multimédia

DUT - Communication

L'équipe et le projet

Conclusion

Sommaire

Conception

Développement

Réalisation personnelles

Démonstration et tests

Pet Foster

Dédiée à trouver un foyer pour chaque animal.L'application met en relation trois types d'utilisateurs :

  • Associations de protection animale
  • Familles d'accueil
  • Adoptants

Pet Foster propose des pages profil et un système de messagerie, de profil d'accueil et de demande d'adoption.

Principe général

Geolocalisation et cartes interactives

Lead dev. back
Scrum master
ProductOwner
Responsabledoc
Lead dev. front
Matteo Monterosso
Sandrine Bussi
Sonia Ouallouche
Johan Arredondo
Romain Navarro
Lead dev. back
Lead dev. back
Lead dev. back
Lead dev. back
Lead dev. back

L'équipe Pet Foster

Matteo Monterosso
Matteo Monterosso
Matteo Monterosso
Matteo Monterosso
Matteo Monterosso

Merge en équipe le jeudi

Journée type 9h à 18h

Daily meeting à 9h

FIX

Conception

Développement

Développement

  • Répartition des tâches avec Trello
  • Partage de fichiers par Google Drive

Sprint #3

Sprint #2

Sprint #1

Sprint #0

4 sprints d'une semaine

  • Organisation en méthode agile
  • Communication via Discord

Organisation

Phase de conception

  • Visiteur
  • Association
  • Famille d'accueil
  • Adoptant

User Stories

4 types d'utilisateur

Arborescence

Wireframes & Maquettes

N:N

1 relationmany to many

Cardinalités

11 relations

8 entités

MCD

Modèle logique de données (MLD)

  • Espèce(id, Nom,)
  • Utilisateur(id, TypeUtilisateur, Nom, Description, Email, MotDePasse, Pays, CodePostal, Ville, Longitude, Latitude, Téléphone, Adresse, SiteWeb)
  • Animal(id, Nom, DateNaissance, Sexe, Race, HistoireCourte, HistoireLongue, Santé, #idEspèce, #idCréateur)
  • PhotoAnimal(id, URLPhoto, #idAnimal)
  • Accueil(id, #idAnimal, #idUtilisateur, DateDébut, DateFin)
  • Message(id, #idExpéditeur, #idDestinataire, Contenu, LuParDestinataire)
  • ProfilAccueil(id, Age, Sexe, Quantité, ZoneRecherche, #idUtilisateur, #idEspèce)
  • PhotoUtilisateur(id, URLPhoto, #idUtilisateur)
  • DemandeAccueil(id, StatutDemande, ContenuDemande, #idAnimal, #idUtilisateur)

Dictionnaire de données

Dictionnaire de données

Modules de sécurité

Les outils de travail

Github Eslint / Prettier Docker Axe accessibility linter

Developper experience

Developper experience

BDD et API

Node.js / Express PostgreSQL Sequelize (ORM) Geolib

Back end

Back end

Le client dynamique

SPA React Framework Bulma Cartes Leaflet Geolocalisation navigateur JWT React Routeur Helmet

Front end

Front End

Stack technique

Develop

Main

Gitflow

Phase de développement

Architecture

SQL

Sequelize

Connexion

Modèles

Scripts de création

Création de la base de données

Via Sequelize

Opérations

Accès aux données

Serveur back end

Router

Controllers

Middlewares

Architecture statique

Réalisation du front end

Router

Composants

+ Surcharges CSS

Framework bulma

Thème & responsive

Affichage dynamique de la carte

Soumission en temps réél

Partage global des données

Contextes React

Formulaire contrôlé

Composant Leaflet

Partie dynamique

  • POST
  • PUT
  • PATCH
  • DELETE

Menace Cross Site

Transmission dans les headers

CSRF

CSRF Token

Password validator Schémas Joi Sequelize

Argon2

Brute force et surcharge

Limite la fréquence des requêtes

En back

Attaques DDOS

Rate Limiter

Hachage

Injection de code malveillant

Contrôle des inputs

Injection SQL

Fuite de données et authentification

En front

  • Authentification
  • Données utilisateur

Authentification

JWT token

Sécurité

Réalisations personnelles

Back End

Page de recherche d'animaux

Front end

Composants

Flux de données

Structure responsive

main.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

Partage global des données

composant.tsx

composant.tsx

Contextes et providers

page.tsx

page.tsx

page.tsx

page.tsx

Demo

Extraction des Paramètres de Position et de Périmètre

Envoi de la réponse JSON

Filtrage des Utilisateurs en Fonction de la Distance

Récupération des Utilisateurs et de Leurs Données Associées

userController.getAllUsers

Front end

Controller

Back end

Routeur

Controller

Conversion (Sharp) et stockage

Upload avec multer

Stockage et conversion

Upload d'images

Démonstration et tests

Merci de votre attention,

à vos questions

Points à travailler

Portes ouvertes

Améliorations possibles

Conclusion

Écrans ≥ 1216px :

Écrans ≥ 769px :

Par défaut (mobile-first) :

Exemple d'association

Exemple de modèle

  • 1 fichier par table
  • 1 Fichier associations.ts
  • 1 Fichier index.ts

Modèles Sequelize

  • Boutons & inputs
  • Système de colonnes :
  • Menu responsive
  • Modals

Bulma.css

Framework responsive
Script de création des tables

Exécuté sur le container petfoster-db via un script npm présent dans le fichier package.json

Réponse non filtrée

Réponse filtrée

Middlewares

Appel

Composant

Provider

Responsabilité : Contrôle l'ouverture, la fermeture et le contenu des fenêtres modales. Fonctionnement : Gère les modales via openModal et closeModal pour des affichages dynamiques

Contexte de gestion des modales (ModalContext.tsx)

Routeur

  • Boutons & inputs
  • Système de colonnes :
  • Menu responsive
  • Modals

Bulma.css

Framework responsive

React Router

Responsabilité : Gère les notifications (toasts)pour informer l'utilisateur. Fonctionnement :Utilise react-toastify pour afficher des messages de succès ou d'erreur via le hook useToast.

Contexte des notifications (ToastContext.tsx)

Composant et déclinaisons

Composant et déclinaisons

Appel API lors de la soumission

Formulaires contrôlés

variable Formdata mise à jour onChange

Mise à jour onChange

Appel API (useEffect)

Modules de sécurité

  • Argon2i
  • Token CSRF
  • Express Rate Limit
  • CORS
  • Dotenv
  • email-validator
  • password-validator
  • Joi
  • Selon le profil
  • useEffect
  • Axios

Filtrage en local

Consommation de l'API

Composant Leaflet

Responsabilité : Gère les coordonnées GPS de l'utilisateur. Fonctionnement : Utilise l'API navigator.geolocation pour récupérer la latitude et la longitude. Fournit un accès rapide aux coordonnées via le hook useGeolocation.

Contexte de géolocalisation (GeolocationContext.tsx)
  • AddFosterlingRequestForm.tsx
  • AddFosterlingProfileForm.tsx
  • ContactUserForm.tsx
  • ContactUserMessagerieForm.tsx
  • CreateAnimalProfileForm.tsx
  • EditAnimalProfileForm.tsx
  • EditProfileForm.tsx
  • Login.tsx
  • UpdateFosterlingProfileForm.tsx
  • UploadImageForm.tsx
  • AnimalItemList.tsx
  • Footer.tsx
  • FosterlingProfile.tsx
  • GalleryComponent.tsx
  • GenderIcon.tsx
  • GeolocNotification.tsx
  • Header.tsx
  • IdToSpecies.tsx
  • InterlocuteurItemList.tsx
  • LazyImage.tsx
  • MapComponent.tsx
  • Message.tsx
  • Messagerie.tsx
  • Miniature.tsx
  • Modal.tsx
  • ScrollToTop.tsx
  • UserImages.tsx
  • UserTypeInfo.tsx
  • 404.tsx
  • Accueil.tsx
  • Connexion copy.tsx
  • Connexion.tsx
  • Contact.tsx
  • Information.tsx
  • MesAnimaux.tsx
  • MesDemandes.tsx
  • PolitiqueDeConfidentialite.tsx
  • ProfilAnimal.tsx
  • ProfilUtilisateur.tsx
  • TrouverAnimal.tsx

Formulaires

Partials

Pages

Composants

Connexion sécurisée à la base de données

Connexion Sequelize

composant.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

composant.tsx

Mise en place des contextes

main.tsx

page.tsx

page.tsx

page.tsx

app.tsx

Partage des données à travers les composants

Contextes React

ControllerWrapper

Controllers

Responsabilité : Gère l'état de connexion de l'utilisateur en utilisant des tokens JWT.Fonctionnement : Vérifie la validité du token au chargement de l'application via localStorage. Fournit des fonctions login et logout pour la gestion de l'authentification.

Contexte d'authentification (AuthContext.tsx)