MFMathis Fornari
Tous les projets
Étude de cas · stage de 1re année

Sithinem, la commande à emporter en ligne.

Un site de commande pour un restaurant traiteur asiatique : le client choisit ses plats et son heure de retrait, le restaurant gère sa carte, ses créneaux et ses commandes depuis un seul espace.

Cadre
Stage, projet client
Rôle
Seul, de la maquette à la mise en ligne
Technologies
Laravel 13, Livewire 4
En ligne
demo.codenyr.fr
Page d’accueil du site Sithinem sur ordinateur
Page d’accueil du site Sithinem sur téléphone

Le site est publié à une adresse provisoire, en attendant le nom de domaine définitif du restaurant.

Le contexte

Sithinem est un restaurant traiteur qui cuisine à la commande, uniquement à emporter, avec un paiement au moment du retrait. Le restaurant voulait permettre à ses clients de commander en ligne et de choisir leur heure de passage.

La contrainte principale était la cuisine : elle ne peut préparer qu’un certain volume de commandes en même temps. Le site devait donc répartir les commandes sur la soirée au lieu de les accepter sans limite.

Ce que j’ai réalisé

Côté client

  • Une carte filtrable par catégories (entrées, plats, plats du chef, desserts, boissons, offres) avec photos et descriptions.
  • Des formules de menu à composer soi-même, avec un prix fixe. Le site propose automatiquement une formule quand elle revient moins cher que les mêmes plats à la carte.
  • Le choix d’un créneau de retrait de 20 minutes, au moins 30 minutes à l’avance et jusqu’à 30 jours.
  • Un compte client avec vérification du numéro de téléphone et l’historique des commandes.

Côté restaurant

  • Un espace de gestion : commandes, créneaux, horaires et fermetures exceptionnelles, catégories, plats, formules, offres et statistiques.
  • La saisie des commandes prises au téléphone ou au comptoir, qui passent par les mêmes règles que les commandes en ligne.
  • Une application Windows (Electron) avec installateur, qui ouvre la gestion et imprime automatiquement les tickets de commande sur une imprimante de 58 ou 80 mm.
  • Des notifications push à chaque nouvelle commande.

La difficulté

Chaque créneau a une capacité exprimée en montant, par exemple 200 € de commandes au maximum. Le problème : si deux clients valident leur panier au même moment pour le dernier créneau disponible, les deux commandes pourraient passer et dépasser la capacité de la cuisine.

La solution : toute la prise de commande se fait dans une transaction de base de données, après avoir verrouillé le créneau (SELECT … FOR UPDATE sous PostgreSQL). La seconde commande attend la fin de la première, puis voit la capacité restante réelle. Une clé de validation unique empêche aussi qu’un double clic crée deux commandes.

Le panier est toujours recalculé côté serveur : les prix envoyés par le navigateur ne sont jamais pris en compte.

Qualité et résultat

  • 145 tests automatisés avec Pest, analyse statique avec PHPStan et formatage avec Pint.
  • Bandeau de cookies conforme au RGPD : aucun traceur publicitaire ni mesure d’audience.
  • Site responsive, pensé d’abord pour le téléphone, d’où passent la plupart des commandes.

Le client est très satisfait du résultat. Ce stage m’a appris à recueillir un besoin réel, à le traduire en règles précises, puis à les faire valider avec le gérant.

Compétences mobilisées

Concevoir et développer une solution applicative Gérer les données Développer la présence en ligne Mettre à disposition un service informatique Travailler en mode projet

Voir le tableau de synthèse complet