Gamma Hotel

Site vitrine d'un hotel avec visualisation des chambres et système de réservations en ligne.

Conception frontend / backend avec Symfony - Base de données SQL

Github
Clients

Projet scolaire

Besoin

Développer un site présentant les logements d'un hotel et permettre aux clients d'effectuer des réservations en ligne. L'administrateur du site souhaite pouvoir gérer la liste des logements ainsi que les types (chambre, appartement, studio) et les catégories (standard, supérieur) de logement disponibles. Il souhaite également que les clients puissent effectuer des réservations en ligne (pour le moment, sans système de paiement).

Conception

Analyse technique, reflexion UML et création de la base de données SQL. Développement du projet sous Symfony avec Twig pour les templates et de Webpack-encore pour la gestion des assets et du SCSS. Utilisation du bundle EasyAdmin pour  mettre en place rapidement une interface d'administration pour la gestion des contenus par l'administrateur.

Couleurs

#e6ba0f

#000000

#7f7f7f

preview

Diagramme UML

Réflexion et modélisation du schéma de base de données sous forme de diagramme UML.

Création de fixtures

Afin de gagner du temps sur l'intégration du projet et optimiser les tests de l'application, mise en place de données de test avec le bundle doctrine-fixtures-bundle. Utilisation en parallèle de la librairie Fakers pour générer une dizaine d'utilisateurs et de réservations fictives.

Affichage des chambres

Affichage dynamique de l'ensemble des logements sur la page d'accueil avec visualisation des détails lors du clic sur un logement. Pour l'affichage des différents logements, une requête personnalisée (plus précise que findAll())a été mise en place pour optimiser et réduire le nombre de requête depuis le serveur.

Formulaire de recherche

Ajout d'un bandeau de recherche de logement selon des critères de prix sur la page d'accueil avec affichage dynamique de la liste des types de logements.

Utilisation d'un formulaire Symfony (buildform) pour sécuriser plus facilement (validation des données et éviter les injections SQL) et ajout de contrainte dans les entités pour éviter les requêtes inutiles.

Détails d'un logement

Lors de la sélection d'un logement, le client peut voir les détails de celui-ci et avoir accès à un formulaire de réservation (accès restreint et obligation d'être connecté pour pouvoir faire une réservation).

Administration avec EasyAdmin

Utilisation du bundle EasyAdmin pour  mettre en place rapidement l'interface d'administration pour la gestion des contenus par l'administrateur. Mise en place d'un système de connexion sécurisé avec gestion de rôle par l'administrateur et d'une partie sécurisé pour l'utilisateur (notamment pour pouvoir effectuer une réservation). Pour éviter les problèmes de sécurité et avoir une protection contre les attaques CSRF, la gestion des tokens est géré par Symfony.

Résumé de la réservation

Si la réservation de l'utilisateur a réussie, affichage d'une nouvelle page par redirection résumant les détails de celle-ci.

Top 3 des logements

sur la page d'accueil, ajout d'un slider pour afficher en défilement les 3 logements les plus réservés (création d'une requête Doctrine personnalisée).