Click'n Eat
Description succincte du projet
Click'n Eat est une plateforme complète de gestion pour la restauration qui permet aux clients de commander en ligne, réserver des tables et consulter les menus des restaurants. Les restaurateurs peuvent gérer leurs établissements, créer des catégories et des plats, et suivre les commandes et réservations. L'application propose trois interfaces distinctes adaptées aux besoins des clients, restaurateurs et administrateurs.
Date et lieu
- Période: Janvier 2025 - Avril 2025
- Lieu: BTS SIO SLAM, My Digital School
Avec qui
- Projet réalisé individuellement dans le cadre du BTS SIO
- Destiné aux utilisateurs : clients, restaurateurs, administrateurs
- Supervisé par les formateurs du BTS SIO option SLAM
Lien du projet
Contexte
Ce projet a été réalisé dans le cadre du BTS SIO option SLAM pour répondre aux besoins croissants de digitalisation dans le secteur de la restauration. Avec l'essor des commandes en ligne et la nécessité pour les restaurants de disposer d'outils de gestion performants, Click'n Eat apporte une solution complète permettant de :
- Permettre aux clients de consulter les menus, commander en ligne et réserver des tables
- Offrir aux restaurateurs une plateforme de gestion de leur établissement (menus, catégories, plats, tables)
- Fournir aux restaurateurs un suivi des commandes et réservations
- Permettre aux administrateurs de superviser l'ensemble de la plateforme
- Intégrer un système de notation et d'avis pour améliorer la qualité des services
Le projet s'inscrit dans une démarche d'application des compétences acquises durant la formation en utilisant les technologies web modernes et en suivant une méthodologie de développement structurée.
Environnement technique
Technologies utilisées
- Framework Backend : Laravel 10 (PHP 8.1+)
- Base de données : MySQL
- Frontend :
- Bootstrap 5 (interface responsive)
- JavaScript et AJAX (interactions dynamiques)
- AlpineJS (interactions côté client)
- Versioning : Git/GitHub
- Déploiement : GitHub Actions pour CI/CD
- Authentification : Système natif Laravel avec middleware personnalisé pour les rôles
- Tests : Pest (framework de test basé sur PHPUnit)
Architecture technique
- Pattern MVC (Modèle-Vue-Contrôleur) :
- Models : User, Restaurant, Category, Item, Menu, Order, Reservation, Table, Review
- Views : Blade Templates (système de templates Laravel)
- Controllers : Spécifiques à chaque entité avec séparation des responsabilités
- Middlewares pour la gestion des rôles :
- AdminMiddleware
- RestaurateurMiddleware
- ClientMiddleware
- Migrations pour la gestion du schéma de base de données
- Seeders et Factories pour le jeu de données de test
- Routes organisées par type d'utilisateur et fonctionnalité
Sources d'apprentissage
- Documentation officielle Laravel
- Laravel Bootcamp (tutoriels officiels)
- Laracasts (plateforme de vidéos d'apprentissage)
- Documentation Bootstrap 5
- Ressources sur la modélisation de données (MCD, MLD, MPD)
- Tutoriels sur les tests avec Pest
- Documentation sur les meilleures pratiques sécurité
- Ressources sur Git/GitHub
Liste des tâches et planification
Phase d'analyse et conception
- Analyse des besoins fonctionnels et non-fonctionnels
- Conception de l'architecture technique
- Modélisation de la base de données (MCD, MLD, MPD)
- Planification et création des diagrammes UML
Phase de mise en place de l'infrastructure
- Configuration du framework Laravel
- Mise en place des migrations de base de données
- Configuration du système d'authentification
- Implémentation du système de rôles et permissions
- Configuration du versioning Git
Phase de développement
- Développement des fonctionnalités principales (CRUD, gestion des réservations, commandes, menus)
- Création des interfaces utilisateurs (client, restaurateur, admin)
- Intégration du responsive design avec Bootstrap
- Tests unitaires et fonctionnels
Phase de finalisation & documentation
- Correction des bugs
- Optimisation des performances
- Rédaction de la documentation technique
- Préparation des annexes et livrables
Difficultés rencontrées & solutions
| Problème | Solution apportée |
|---|---|
|
Gestion multi-profils (client, restaurateur, admin) Difficulté à séparer clairement les fonctionnalités par rôle et sécuriser les accès |
|
|
Gestion des réservations en temps réel Problèmes de conflit lors de réservations simultanées de tables |
|
|
Gestion des relations complexes entre entités Difficultés avec les relations entre restaurants, catégories, plats, commandes et réservations |
|
|
Sécurisation des accès et des données Protection contre les accès non autorisés et validation des données |
|
|
Déploiement et configuration serveur Complexité de la mise en production avec les migrations et configurations |
|
Bilan personnel
Aptitudes renforcées
- Développement PHP avancé avec Laravel (routing, middleware, Eloquent ORM)
- Modélisation de bases de données relationnelles complexes
- Sécurisation d'applications web (authentification, autorisation, validation)
- Architecture MVC et conception d'applications modulaires
- Versioning avec Git/GitHub et mise en place de CI/CD
- Tests automatisés avec Pest
- Développement d'interfaces utilisateur responsives avec Bootstrap
- Gestion de projet et respect des délais
Axes d'amélioration
- Optimisation des performances pour de grands volumes de données
- Tests automatisés plus complets (couverture de test)
- Expérience utilisateur (UX/UI) plus approfondie
- Architecture API REST pour une séparation frontend/backend
- Mise en cache pour améliorer les performances
- Internationalisation de l'application
- Intégration de paiements en ligne pour les commandes
- Version mobile de l'application
Compétences du BTS SIO SLAM développées
| Compétence du référentiel | Mise en œuvre dans Click'n Eat |
|---|---|
| Gérer le patrimoine informatique |
|
| Répondre aux incidents et aux demandes d'assistance et d'évolution |
|
| Développer la présence en ligne de l'organisation |
|
| Travailler en mode projet |
|
| Mettre à disposition des utilisateurs un service informatique |
|
| Organiser son développement professionnel |
|
Annexes techniques
Architecture de la base de données
Le modèle physique de données montre les relations entre les différentes entités du système :
- Restaurants gérés par des utilisateurs (restaurateurs)
- Catégories appartenant à des restaurants
- Plats (items) classés par catégories
- Menus composés de plats
- Tables associées aux restaurants
- Réservations liées aux tables et aux utilisateurs (clients)
- Commandes passées par des utilisateurs pour des restaurants
- Avis donnés par des utilisateurs sur des restaurants
Diagramme de contexte
Le diagramme de contexte illustre les interactions entre les différents acteurs et le système :
- Client : consultation des restaurants, commande, réservation, avis
- Restaurateur : gestion des restaurants, catégories, plats, tables, commandes
- Administrateur : supervision globale, gestion des utilisateurs, validation des avis
Chaque acteur dispose d'une interface adaptée à ses besoins spécifiques.
Diagramme de package
Le diagramme de package montre l'organisation modulaire du code source selon le pattern MVC :
- Models : définition des entités et relations
- Views : interfaces utilisateur par profil
- Controllers : logique métier et traitement des requêtes
- Middlewares : filtrage des requêtes selon les rôles
- Routes : définition des points d'entrée de l'application
Diagramme de classes
Le diagramme de classes présente les principales entités du système et leurs relations :
- Hiérarchie des classes et héritage
- Attributs et méthodes principales
- Relations d'association, d'agrégation et de composition
- Cardinalités des relations
Documentation technique complète
Retrouvez ci-dessous tous les documents et diagrammes du projet :
- Dictionnaire de données
- Modèle Conceptuel de Données (MCD)
- Modèle Logique de Données (MLD)
- Modèle Physique de Données (MPD)
- Diagramme de Gantt (planification)
- Diagramme de contexte
- Diagramme de package
- Diagramme de classes
- Cartographie technique
- Cahier des charges
- Document d'accès
Le code source complet et documenté est disponible sur le dépôt GitHub.