Perline Cookies
Une boutique de cookies artisanaux, du choix du produit jusqu'au paiement Stripe. Côté gérant, un dashboard pour suivre les commandes et ne jamais tomber en rupture de stock.
Contexte
Le point de départ
Une artisane pâtissière vendait ses cookies en direct et voulait passer à la vente en ligne. Le besoin : que les clients composent leur box et paient depuis leur téléphone en quelques minutes, et qu'elle puisse suivre ses commandes et ses stocks d'un coup d'œil. Le tout sans perdre l'univers chaleureux de sa marque.
Objectifs
- Donner envie dès la première image : de grandes photos, une palette crème et rose fidèle à la marque
- Commander vite : choix d'une box de 6, 12 ou 24 cookies, puis paiement en trois étapes
- Penser mobile d'abord, puisque la majorité des clients commandent depuis leur téléphone
- Ne valider une commande qu'une fois le paiement confirmé par Stripe
- Donner à la gérante une vue claire de ce qu'il reste à préparer
Démarche
Du cadrage à la mise en ligne
Direction artistique
J'ai démarré avec Tailwind, puis je suis passé à du CSS écrit à la main en BEM pour garder la main sur chaque détail de la palette crème et rose.
Modélisation des données
Produits, box, commandes, adresses et utilisateurs avec Doctrine. Les box de 6, 12 ou 24 cookies ont chacune leur prix, ce qui a demandé de bien penser les relations entre entités.
Parcours d'achat
Panier en session, connexion obligatoire avant le paiement, choix de l'adresse. J'ai corrigé plusieurs bugs de panier (quantités, suppression) pour que le parcours ne casse jamais.
Paiement Stripe
Une commande n'est validée qu'une fois le paiement confirmé par un webhook signé. Un contrôle bloque les doublons si Stripe envoie deux fois la même notification.
Sécurité et emails
Connexion limitée à 5 tentatives par quart d'heure. Emails de confirmation via Symfony Mailer, après avoir réglé un conflit avec la file d'attente Messenger.
Mise en production
Quatre conteneurs Docker sur un VPS Hetzner, certificat SSL renouvelé automatiquement. Je gère le serveur de bout en bout.