1er Août 2022
Nathalie Verdavoir
Développeur Web et Web Mobile
LE PROJET :
1
Contexte du projet
Référentiel du titre professionnel et résumé du projet (p.4)
2
Contexte du projet
Référentiel du titre professionnel et résumé du projet (p.4)
Présentation du projet
2
Cahier des charges, spécifications techniques et ressources (p.6 à 9)
Contexte du projet
Référentiel du titre professionnel et résumé du projet (p.4)
Présentation du projet
Détails des étapes de conception (p.10 à 36)
2
Réalisation du projet
Cahier des charges, spécifications techniques et ressources (p.6 à 9)
Contexte du projet
Veille sur les vulnérabilités
Référentiel du titre professionnel et résumé du projet (p.4)
Présentation du projet
Utilisation de la documentation technique (notamment anglophone) (p.36 à 39)
Détails des étapes de conception (p.10 à 36)
2
Réalisation du projet
Cahier des charges, spécifications techniques et ressources (p.6 à 9)
Contexte du projet
Veille sur les vulnérabilités
Fonctionnalité principale : les réservations
Référentiel du titre professionnel et résumé du projet (p.4)
Présentation du projet
Utilisation de la documentation technique (notamment anglophone) (p.36 à 39)
Détails des étapes de conception (p.10 à 36)
Conception, réalisation et tests (p.40 à 45)
2
Réalisation du projet
Cahier des charges, spécifications techniques et ressources (p.6 à 9)
Contexte du projet
Réalisation du projet
Veille sur les vulnérabilités
Fonctionnalité principale : les réservations
Référentiel du titre professionnel et résumé du projet (p.4)
Présentation du projet
Cahier des charges, spécifications techniques et ressources (p.6 à 9)
Utilisation de la documentation technique (notamment anglophone) (p.36 à 39)
Détails des étapes de conception (p.10 à 36)
Conception, réalisation et tests (p.40 à 45)
Conclusion
2
Contexte du projet
Objectif : Couvrir tous les points du référentiel du titre professionnel au niveau technique et sécuritaire
3
Contexte du projet
Objectif : Couvrir tous les points du référentiel du titre professionnel au niveau technique et sécuritaire
Délai : 3 semaines
3
Contexte du projet
Objectif : Couvrir tous les points du référentiel du titre professionnel au niveau technique et sécuritaire
Délai : 3 semaines
Initiateur : Organisme de formation Studi
3
Contexte du projet
Objectif : Couvrir tous les points du référentiel du titre professionnel au niveau technique et sécuritaire
Délai : 3 semaines
Initiateur : Organisme de formation Studi
Projet : Application de réservation de chambre d'hôtel
3
Cahier des charges (p.6)
Gérer les établissements
4
Cahier des charges (p.6)
Gérer les suites
Gérer les établissements
4
Cahier des charges (p.6)
Gérer les suites
Gérer les établissements
Découvrir le catalogue
4
Cahier des charges (p.6)
Gérer les suites
Réserver une chambre
Gérer les établissements
Découvrir le catalogue
4
Cahier des charges (p.6)
Gérer les suites
Réserver une chambre
Voir les réservations
Gérer les établissements
Découvrir le catalogue
4
Cahier des charges (p.6)
Gérer les suites
Réserver une chambre
Faire une réservation rapide
Voir les réservations
Gérer les établissements
Découvrir le catalogue
4
Cahier des charges (p.6)
Gérer les suites
Réserver une chambre
Faire une réservation rapide
Voir les réservations
Contacter le groupe
Gérer les établissements
Découvrir le catalogue
4
Spécifications techniques (p.8)
Serveur de développement
Windows 10, Apache/2.4.52 (Win64) ,
PHP 8.1.2 , Extension PHP : PDO,
MariaDB (version 10.4.22), XAMPP
5
Spécifications techniques (p.8)
Serveur de développement
Windows 10, Apache/2.4.52 (Win64) ,
PHP 8.1.2 , Extension PHP : PDO,
MariaDB (version 10.4.22), XAMPP
Serveur de déploiement :
Heroku, Apache/2, php, ClearDB MySQL (add-on Heroku), Extension PHP : PDO, MariaDB, Déploiement en continu basé sur github
5
Spécifications techniques (p.8)
Serveur de développement
Windows 10, Apache/2.4.52 (Win64) ,
PHP 8.1.2 , Extension PHP : PDO,
MariaDB (version 10.4.22), XAMPP
Serveur de déploiement :
Heroku, Apache/2, php, ClearDB MySQL (add-on Heroku), Extension PHP : PDO, MariaDB, Déploiement en continu basé sur github
Outils de conception et développement :
Adobe XD et VSCode, lignes de commandes
5
Spécifications techniques (p.8)
Serveur de développement
Windows 10, Apache/2.4.52 (Win64) ,
PHP 8.1.2 , Extension PHP : PDO,
MariaDB (version 10.4.22), XAMPP
Serveur de déploiement :
Heroku, Apache/2, php, ClearDB MySQL (add-on Heroku), Extension PHP : PDO, MariaDB, Déploiement en continu basé sur github
Outils de conception et développement :
Adobe XD et VSCode, lignes de commandes
Versioning et planification :
Git, Github et Trello
5
Spécifications techniques (p.8-9)
Pour le front :
HTML 5/Twig, CSS 3, Bootstrap.css, daterangepicker.css, Bootstrap.bundle.js, JavaScript, jQuery, Moment.js, daterangepicker.js
6
Spécifications techniques (p.8-9)
Pour le front :
HTML 5/Twig, CSS 3, Bootstrap.css, daterangepicker.css, Bootstrap.bundle.js, JavaScript, jQuery, Moment.js, daterangepicker.js
Pour le back :
PHP 8.1.2 sous PDO, Symfony 6, MySQL, mariaDB 10.4.22,
API Platform
6
Spécifications techniques (p.8-9)
Gestion de la base de données :
Doctrine ORM
WorkBench d’Oracle
Pour le front :
HTML 5/Twig, CSS 3, Bootstrap.css, daterangepicker.css, Bootstrap.bundle.js, JavaScript, jQuery, Moment.js, daterangepicker.js
Pour le back :
PHP 8.1.2 sous PDO, Symfony 6, MySQL, mariaDB 10.4.22,
API Platform
6
Spécifications techniques (p.8-9)
Gestion de la base de données :
Doctrine ORM
WorkBench d’Oracle
Pour le front :
HTML 5/Twig, CSS 3, Bootstrap.css, daterangepicker.css, Bootstrap.bundle.js, JavaScript, jQuery, Moment.js, daterangepicker.js
Pour le back :
PHP 8.1.2 sous PDO, Symfony 6, MySQL, mariaDB 10.4.22,
API Platform
Gestion des mails :
google-mailer
6
Ressources
La documentation
officielle et non-officielle
7
Schémas et diagrammes
8
Schémas et diagrammes

9
Schémas et diagrammes

10
Planifications et versioning
Trello

Git et github
11
Zoning et charte graphique


Page d'accueil
12
responsive


Page d'accueil
12
responsive
Zoning et charte graphique


Page d'accueil
12
responsive
Zoning et charte graphique


Page chambre
13
responsive
Zoning et charte graphique


Page chambre
13
responsive
Zoning et charte graphique


Page chambre
13
responsive
Zoning et charte graphique
13
responsive
Zoning et charte graphique

Vert = prospérité, dynamisme, richesse
Beige et gris = sobriété et élégance
14
Zoning et charte graphique
Conception de la base de données (p.14)
5 tables : User, Hôtel, Chambre, Photo, Réservation

15
workbench
Conception de la base de données (p.14)
5 tables : User, Hôtel, Chambre, Photo, Réservation

15
workbench
Conception de la base de données (p.14)
5 tables : User, Hôtel, Chambre, Photo, Réservation

15
workbench
workbench
Conception de la base de données (p.14)
5 tables : User, Hôtel, Chambre, Photo, Réservation

15
workbench
Conception de la base de données (p.14)
5 tables : User, Hôtel, Chambre, Photo, Réservation

15
workbench
Installation du projet en local (p.15)
Initialisation du projet Symfony (cli)
16
Installation du projet en local (p.15)
16
Création de la base de données (cli) :
Installation du projet en local (p.15)
16
Installation de doctrine
Création de la base de données (cli) :
Installation du projet en local (p.15)
Installation de doctrine
Paramétrage des variables d'environnement (liaison avec la base de données)
16
Création de la base de données (cli) :
Installation du projet en local (p.15)
Installation de doctrine
Paramétrage des variables d'environnement (liaison avec la base de données)
16
Création de la base de données (cli) :
Installation du projet en local (p.15)
Installation de doctrine
Paramétrage des variables d'environnement (liaison avec la base de données)
16
Création de la base de données (cli) :
Installation du projet en local (p.15)
Installation de twig et asset (bundles)
16
Installation du projet en local (p.15)
Installation de twig et asset (bundles)
16
Création des composants header et footer reliés à base.html.twig
Installation du projet en local (p.15)
Initialisation du fichier de style global
16
Création des entités, repositories, crud... (p.16)
Utilisation de security et maker bundles (make:user)
17
Création des entités, repositories, crud... (p.16)
Utilisation de security et maker bundles (make:user)
Création de getters et setters
17
Création des entités, repositories, crud... (p.16)
Utilisation de security et maker bundles (make:user)
Un repository associé à chaque entité
Création de getters et setters
17
Création des entités, repositories, crud... (p.16)
Utilisation de security et maker bundles (make:user / make:entity)
Un repository associé à chaque entité
CRUD pour chaque entité (make:crud) :
- controller : routes et fonctions (p.17)
- form (p.18)
- templates (p.19)
Création de getters et setters
17
Création des entités, repositories, crud... (p.16)
Utilisation de security et maker bundles (make:user)
Un repository associé à chaque entité
CRUD pour chaque entité (make:crud) :
- controller : routes et fonctions (p.17)
- form (p.18)
- templates (p.19)
Création de getters et setters
17
fichiers
API Platform (p.20)
composer require api
Une simple
commande :

Et quelques annotations...
18
API Platform (p.20)
composer require api
Une simple
commande :

Et quelques annotations...
18
API Platform (p.20)
composer require api
Une simple
commande :

Et quelques annotations...
18
API Platform (p.20)
composer require api
Une simple
commande :

Et quelques annotations...
18
Une autre commande :
composer require symfony/google-mailer
Formulaire de contact (p.21-23)
19
Une autre commande :
composer require symfony/google-mailer
Formulaire de contact (p.21-23)

RGPD
19
Une autre commande :
composer require symfony/google-mailer
Formulaire de contact (p.21-23)

RGPD

Confirmation d'envoi
19
contacts
Une autre commande :
composer require symfony/google-mailer
Formulaire de contact (p.21-23)

RGPD

Confirmation d'envoi
19
contacts
TODO : Ajouter un test sur l'envoi de mail
Upload des photos et choix des couvertures (p.24-26)

Sécurité : restriction d'accès et de modification selon l'utilisateur connecté.

Les gérants peuvent modifier les photos et les couvertures
20
Les tests (p.27-30)
Sécurisation du code pour le développement futur
21
Les tests (p.27-30)
Sécurisation du code pour le développement futur
21
phpunit
Les tests (p.27-30)
Sécurisation du code pour le développement futur
Exemple de test unitaire :
création d'un user
Vérification des "asserts"
(NotBlank, Regex, Email)
21
phpunit
Les tests (p.27-30)
Sécurisation du code pour le développement futur
Exemple de test unitaire :
création d'un user
Vérification des "asserts"
(NotBlank, Regex, Email)
Exemple de test fonctionnel:
insertion dans la base de données
Ajout de fixtures et vérification des entrées enregistrées
(testCount())
21
phpunit
Les tests (p.27-30)
Sécurisation du code pour le développement futur
Exemple de test unitaire :
création d'un user
Vérification des "asserts"
(NotBlank, Regex, Email)
Exemple de test fonctionnel:
insertion dans la base de données
Ajout de fixtures et vérification des entrées enregistrées
(testCount())
et plusieurs autres tests...
21
phpunit
tests
Les tests (p.27-30)
21
tests
Un style unique (p.31-33)
22
Bootstrap
CDN
Calendrier
Un style unique (p.31-33)
22
Bootstrap
CDN
Calendrier
Imports des Fonts
Variables de couleurs
Barres de défilement personnalisées
Un style unique (p.31-33)
22
Bootstrap
CDN
Calendrier
Imports des Fonts
Variables de couleurs
Composants boutons
Icones graphiques
Mediaqueries / mobile first
Barres de défilement personnalisées
Les scripts (p.34)
23
Bootstrap.bundle.js
Les librairies
Les scripts (p.34)
23
Bootstrap.bundle.js
jQuery.js
Les librairies
Les scripts (p.34)
23
Bootstrap.bundle.js
jQuery.js
moment.js
Les librairies
Les scripts (p.34)
23
Bootstrap.bundle.js
jQuery.js
moment.js
daterangepicker.js
Les librairies
Les scripts (p.34)
23
Bootstrap.bundle.js
jQuery.js
moment.js
daterangepicker.js
resa.js
Script personnalisé
Les librairies
Le référencement (p.34-35)
24
Balises meta
Description
Keywords
Robots
Le référencement (p.34-35)
24
Balises meta
Description
Keywords
Robots
shema.org
streetAddress
postalCode
telephone
Mentions légales et RGPD (p.36)
25
Mentions OBLIGATOIRES
Mentions légales et RGPD (p.36)
25
Mentions OBLIGATOIRES
dernier en date du 23 mai 2018
Mentions légales et RGPD (p.36)
25
Mentions OBLIGATOIRES
https://www.cnil.fr/fr/reglement-europeen-protection-donnees
dernier en date du 23 mai 2018
Mentions légales et RGPD (p.36)
25
Mentions OBLIGATOIRES
https://www.cnil.fr/fr/reglement-europeen-protection-donnees
dernier en date du 23 mai 2018
CGU-CGV
Mentions légales et RGPD (p.36)
25
Mentions OBLIGATOIRES
https://www.cnil.fr/fr/reglement-europeen-protection-donnees
dernier en date du 23 mai 2018
Informations aux clients
CGU-CGV
Mentions légales et RGPD (p.36)
25
Mentions OBLIGATOIRES
https://www.cnil.fr/fr/reglement-europeen-protection-donnees
dernier en date du 23 mai 2018
Sanctions
Informations aux clients
CGU-CGV

Veille de sécurité (p.36-39)
26
Documentation (en anglais)
Veille de sécurité (p.36-39)
26
Documentation (en anglais)
Besoins spécifiques
Veille de sécurité (p.36-39)
26
Documentation (en anglais)
Besoins spécifiques
Mises à jour très fréquentes
Veille de sécurité (p.36-39)
26
Documentation (en anglais)
Besoins spécifiques
Mises à jour très fréquentes
Grande communauté de devs
Veille de sécurité (p.36-39)
26
Documentation (en anglais)
Besoins spécifiques
Mises à jour très fréquentes
Grande communauté de devs
Choix de sécuriser les routes et les fonctions
Veille de sécurité (p.36-39)
26
Documentation (en anglais)
Besoins spécifiques
Mises à jour très fréquentes
Grande communauté de devs
Choix de sécuriser les routes et les fonctions
Echappement des caractères spéciaux
Veille de sécurité (p.36-39)
26
Documentation (en anglais)
Besoins spécifiques
Mises à jour très fréquentes
Grande communauté de devs
Choix de sécuriser les routes et les fonctions
Echappement des caractères spéciaux
XSS, cross-domain...
Les réservations (p.40-45)
27
Fonctionnalité la plus importante
Triple vérification de l'entrée utilisateur
Les réservations (p.40-45)
28

Requête au choix de la chambre
Formulaire
Les réservations (p.40-45)
28

Requête au choix de la chambre
Construction du calendrier (dates bloquées)
Formulaire
Les réservations (p.40-45)
29
Le script évènementiel
Vérification des entrées utilisateurs en front
Les réservations (p.40-45)
29
Le script évènementiel
Vérification des entrées utilisateurs en front
Alerte en cas de non cohérence
Les réservations (p.40-45)
29
Le script évènementiel
Formulaire caché et rempli par la modification du DOM
Vérification des entrées utilisateurs en front
Alerte en cas de non cohérence
Les réservations (p.40-45)
29
Le script évènementiel
Formulaire caché et rempli par la modification du DOM
Vérification des entrées utilisateurs en front
Alerte en cas de non cohérence

Petit problème à la fermeture du calendrier
Les réservations (p.40-45)
29
Le script évènementiel
Formulaire caché et rempli par la modification du DOM
Vérification des entrées utilisateurs en front
Alerte en cas de non cohérence
Petit problème à la fermeture du calendrier

Les réservations (p.40-45)
30
La validation du formulaire
Validator
resa
Les réservations (p.40-45)
30
La validation du formulaire
Validator
Contrainte personnalisée
resa
Les réservations (p.40-45)
30
La validation du formulaire
Validator
Contrainte personnalisée

Message à l'utilisateur
resa
Conclusion
31
Projet assez complet pour terminer ma formation
Conclusion
31
Projet assez complet pour terminer ma formation
Pour aller plus loin :
Quelques pistes d'amélioration (p.45)
Conclusion
31
Projet assez complet pour terminer ma formation
Pour aller plus loin :
Quelques pistes d'amélioration (p.45)
Un mode d'emploi de l'application (p.49-50)
Conclusion
31
Projet assez complet pour terminer ma formation
Pour aller plus loin :
Quelques pistes d'amélioration (p.45)
Un mode d'emploi de l'application (p.49-50)
Merci pour votre attention
Waybox Présentation
By Hypnos
Waybox Présentation
- 113