Skip to content
jamilbachardPublic

About

Malika test app

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

FeastLink

Marketplace de livraison de nourriture multi-restaurants, développée dans le cadre d'un stage. Inspiré du fonctionnement d'Uber Eats : les clients commandent, les restaurants gèrent leurs commandes en temps réel.

Stack technique

  • Ruby 4.0.5
  • Ruby on Rails 8.1.3
  • PostgreSQL : base de données
  • Devise : authentification (clients + restaurants)
  • Bootstrap 5 : interface utilisateur
  • Hotwire / Turbo : navigation sans rechargement de page
  • Solid Queue / Cache / Cable : jobs, cache et WebSocket natifs Rails 8

Fonctionnalités

Côté client

  • Inscription / connexion
  • Parcourir les restaurants et leurs menus
  • Panier persistant en session
  • Commande avec choix du mode de paiement (espèces, carte, mobile)
  • Suivi de commande en temps réel
  • Consultation du reçu
  • Laisser un avis après livraison

Côté restaurant

  • Inscription / connexion
  • Dashboard avec onglets : Commandes / Historique / Revenus / Menu
  • Gestion du cycle de vie des commandes (confirmer → préparer → envoyer → livrer)
  • Génération automatique du reçu au départ en livraison
  • Gestion des livreurs
  • Vue des revenus par jour / mois / total

Installation

Prérequis

  • Ruby 4.0+
  • PostgreSQL
  • Bundler (gem install bundler)

Lancer le projet

# Cloner le repo
git clone https://github.com/Malikabana/p1.git
cd p1

# Installer les dépendances
bundle install

# Créer et migrer la base de données
rails db:create db:migrate

# Charger les données de test
rails db:seed

# Lancer le serveur
rails server

L'application est accessible sur http://localhost:3000

Comptes de test

Rôle Email Mot de passe
Client client@test.com client123
Restaurant amadou@test.com amadou123
Restaurant napoli@test.com napoli123
Restaurant burger@test.com burger123
Restaurant wok@test.com wok123

Architecture

Le projet suit l'architecture MVC de Rails :

app/
├── controllers/   # Reçoivent les requêtes HTTP, orchestrent la logique
├── models/        # Logique métier, validations, interactions avec la DB
└── views/         # Templates HTML (ERB)

db/
├── migrate/       # Historique des modifications de la base de données
└── schema.rb      # État actuel de la base de données

config/
└── routes.rb      # Définition de toutes les URLs de l'application

Modèles principaux

Customer ──── Order ──── OrderItem ──── MenuItem
                │                           │
                │                       Restaurant
                ├── Payment (STI : Card / Cash / Mobile)
                ├── Receipt
                └── Review

Choix techniques notables

  • Devise pour l'authentification : supporte deux modèles simultanés (Customer + Restaurant) via des scopes Warden séparés
  • STI (Single Table Inheritance) pour les paiements : une seule table payments avec trois types (CardPayment, CashOnDelivery, MobilePayment)
  • Machine à états manuelle sur les commandes : transitions explicites avec vérification du statut courant
  • Callbacks ActiveRecord : génération du reçu et confirmation du paiement déclenchées automatiquement lors des transitions d'état
  • includes imbriqués : prévention des N+1 queries sur le dashboard

About

Malika test app

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages