Click'n Eat

Aperçu interface client Click'n Eat
Aperçu interface restaurateur Click'n Eat
Interface administrateur de Click'n Eat
Interface client de Click'n Eat
Interface restaurateur de 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
  • Création de middlewares spécifiques à chaque rôle (AdminMiddleware, RestaurateurMiddleware, ClientMiddleware)
  • Séparation des routes par middleware et groupe
  • Implémentation d'une logique de vérification dans chaque contrôleur avec des méthodes de vérification (`isAdmin()`, `isRestaurateur()`, etc.)
  • Utilisation des Gates Laravel pour les vérifications d'autorisation plus complexes
Gestion des réservations en temps réel
Problèmes de conflit lors de réservations simultanées de tables
  • Utilisation d'AJAX pour vérifier la disponibilité des tables sans rechargement de page
  • Implémentation d'un système de vérification en deux temps (pré-vérification côté client, confirmation côté serveur)
  • Utilisation de transactions de base de données pour éviter les conflits
  • Mise en place d'un délai de réservation pour éviter les doubles réservations
Gestion des relations complexes entre entités
Difficultés avec les relations entre restaurants, catégories, plats, commandes et réservations
  • Modélisation précise avec des relations Eloquent (ORM de Laravel)
  • Utilisation de relations polymorphiques quand nécessaire
  • Optimisation des requêtes avec le eager loading (`with()`) pour éviter le problème N+1
  • Tests approfondis des différentes relations avec des cas d'utilisation réels
Sécurisation des accès et des données
Protection contre les accès non autorisés et validation des données
  • Validation systématique des entrées utilisateur avec les FormRequest de Laravel
  • Vérifications d'appartenance (ex: un restaurateur ne peut modifier que ses propres restaurants)
  • Protection CSRF sur tous les formulaires
  • Authentification robuste avec hashage des mots de passe
  • Limitation des tentatives de connexion pour prévenir les attaques par force brute
Déploiement et configuration serveur
Complexité de la mise en production avec les migrations et configurations
  • Configuration d'un pipeline CI/CD avec GitHub Actions
  • Création de scripts de déploiement automatisés
  • Utilisation de variables d'environnement pour les configurations sensibles
  • Documentation détaillée du processus de déploiement
  • Tests automatisés avant déploiement

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
  • Mise en place d'une architecture applicative robuste avec Laravel
  • Configuration et administration de la base de données MySQL
  • Utilisation de GitHub comme outil de versioning et de déploiement
  • Documentation technique complète du projet
Répondre aux incidents et aux demandes d'assistance et d'évolution
  • Mise en place d'un système de notification pour les erreurs
  • Tests approfondis pour identifier et corriger les bugs
  • Système modulaire permettant des évolutions futures
  • Documentation pour les utilisateurs finaux
Développer la présence en ligne de l'organisation
  • Création d'une application web responsive et moderne
  • Implémentation de fonctionnalités de partage et d'avis
  • Interface utilisateur intuitive pour améliorer l'expérience client
  • Système d'avis et de notation pour les restaurants
Travailler en mode projet
  • Planification avec diagramme de Gantt
  • Découpage du projet en phases distinctes
  • Analyse des besoins et conception avant développement
  • Tests et validation avant déploiement
  • Documentation technique et fonctionnelle
Mettre à disposition des utilisateurs un service informatique
  • Développement d'interfaces adaptées à chaque profil d'utilisateur
  • Système de commande et réservation en ligne
  • Administration complète pour les gestionnaires de restaurant
  • Déploiement de l'application sur un serveur accessible
  • Respect des normes d'accessibilité web
Organiser son développement professionnel
  • Autoformation sur Laravel et les technologies modernes
  • Utilisation des ressources en ligne (documentation, tutoriels)
  • Veille technologique sur les bonnes pratiques de développement
  • Identification des axes d'amélioration personnels

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

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

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
Mentions légales