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