Documentation Technique - Click'n Eat

Présentation du projet

Click'n Eat est une application web de commande de nourriture en ligne permettant aux utilisateurs de commander des repas auprès de différents restaurants partenaires. L'application offre une interface intuitive pour les clients, ainsi qu'un tableau de bord pour les restaurateurs, employés et administrateurs, chacun avec des accès adaptés à leur rôle.

Installation du projet

Prérequis :

  • PHP 8.0 ou supérieur
  • Composer (gestionnaire de dépendances PHP)
  • MySQL 5.7 ou supérieur
  • Serveur web (Apache, Nginx)

Étapes d'installation :

  1. Cloner le dépôt Git : git clone https://github.com/votre-compte/clickneat.git
  2. Installer les dépendances : composer install
  3. Copier le fichier d'environnement : cp .env.example .env
  4. Générer la clé d'application : php artisan key:generate
  5. Configurer la base de données dans le fichier .env
  6. Exécuter les migrations : php artisan migrate
  7. Lancer le serveur de développement : php artisan serve
Architecture technique

Technologies utilisées :

  • Framework Laravel (PHP) pour le backend
  • MySQL pour la base de données
  • HTML5, CSS3, JavaScript pour le frontend
  • Bootstrap pour le design responsive
  • Blade comme moteur de templates
  • XAMPP pour l'environnement de développement
Structure de la base de données

La base de données est organisée autour des entités principales suivantes :

  • Users : Stocke les informations des utilisateurs avec différents rôles (admin, restaurateur, employé, client)
  • Restaurants : Contient les informations sur les restaurants avec relations vers les restaurateurs et employés
  • Categories : Catégories de plats liées aux restaurants
  • Items : Plats proposés par les restaurants, liés aux catégories
  • Orders : Commandes passées par les utilisateurs (fonctionnalité à venir)
  • Order_items : Éléments individuels d'une commande
  • Reservations : Réservations de tables

La base de données utilise des relations bien définies entre ces tables pour assurer l'intégrité des données :

  • Relation one-to-many entre Restaurants et Items
  • Relation many-to-many entre Items et Categories
  • Relation one-to-many entre Users et Orders
  • Relation one-to-many entre Orders et Order_items
Architecture MVC

L'application suit le modèle MVC (Modèle-Vue-Contrôleur) de Laravel :

  • Modèles : Définissent la structure des données et les relations entre les tables
  • Vues : Utilisation du moteur de templates Blade pour générer l'interface utilisateur
  • Contrôleurs : Gèrent la logique métier et les interactions entre les modèles et les vues

L'architecture inclut également :

  • Middleware : Pour la gestion de l'authentification et des autorisations
  • Routes : Définition des points d'entrée de l'API et des pages web
  • Migrations : Pour la gestion des versions de la base de données
  • Seeds : Pour peupler la base de données avec des données de test
Fonctionnalités principales
Système d'authentification

L'application utilise le système d'authentification de Laravel avec des rôles différenciés :

  • Administrateur : Gestion complète de la plateforme
  • Restaurateur : Gestion de son restaurant et de ses menus
  • Employé : Accès limité aux fonctionnalités du restaurant où il travaille
  • Client : Navigation, commande et réservation
Gestion des restaurants et menus

Les restaurateurs peuvent :

  • Gérer les informations de leur restaurant (horaires, adresse, etc.)
  • Créer et modifier des catégories de plats
  • Ajouter, modifier et supprimer des plats
  • Gérer les disponibilités
Système de commande

Les clients peuvent :

  • Parcourir les restaurants par catégorie ou localisation
  • Consulter les menus et ajouter des plats au panier
  • Personnaliser leur commande (options, allergènes, etc.)
  • Suivre l'état de leur commande en temps réel
Système de réservation

Fonctionnalité permettant aux clients de réserver une table dans un restaurant en spécifiant :

  • Date et heure
  • Nombre de personnes
  • Préférences particulières
Tableau de bord

Interface d'administration permettant :

  • Suivi des statistiques (commandes, chiffre d'affaires, etc.)
  • Gestion des utilisateurs
  • Suivi des réservations
  • Gestion des commandes en cours
Sécurité

Plusieurs mesures de sécurité ont été mises en place :

  • Authentification : Utilisation du système d'authentification sécurisé de Laravel
  • Autorisation : Contrôle d'accès basé sur les rôles (RBAC)
  • Protection CSRF : Contre les attaques Cross-Site Request Forgery
  • Validation des données : Validation côté serveur de toutes les entrées utilisateur
  • Hachage des mots de passe : Utilisation de l'algorithme Bcrypt
  • Protection XSS : Échappement automatique des données dans les vues Blade
Tests et validation

L'application a été testée à plusieurs niveaux :

  • Tests unitaires : Vérification des fonctions individuelles
  • Tests d'intégration : Validation des interactions entre les composants
  • Tests fonctionnels : Simulation des actions utilisateur
  • Tests de charge : Vérification des performances sous charge
  • Tests de compatibilité : Validation sur différents navigateurs et appareils
Déploiement

L'application est déployée sur un VPS OVH avec :

  • Serveur web Nginx
  • PHP-FPM pour le traitement PHP
  • MySQL pour la base de données
  • Configuration de SSL avec Let's Encrypt
  • Mise en place de sauvegardes automatiques
Perspectives d'évolution

Plusieurs améliorations sont envisagées pour les versions futures :

  • Intégration d'un système de paiement en ligne
  • Développement d'applications mobiles natives
  • Mise en place d'un système de fidélité
  • Intégration avec des services de livraison externes
  • Implémentation d'un système de notation et d'avis
  • Ajout de fonctionnalités de géolocalisation avancées