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


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.