One Bite Candy
E-commerce de confiserie : catalogue, panier, livraison à domicile et stop-desk avec suivi transporteur, et back-office complet.
- Mon rôle
- Développeur Full Stack
- Période
- juin 2026 — août 2026
- Statut
- Livré

One Bite Candy est la boutique en ligne d'une marque de confiserie, en production sur onebitecandy.com. Le client parcourt le catalogue de sucreries, compose son panier et commande en paiement à la livraison, en choisissant entre livraison à domicile et retrait dans un stop-desk du transporteur — les bureaux de retrait qu'Ecotrack opère, à raison d'un par commune.
Sous le capot, la base de code est en TypeScript de bout en bout : boutique et back-office en Next.js, API Node.js et base PostgreSQL. Les médias produits sont stockés sur Cloudflare R2, chaque entité métier suit une convention de suppression logique, et la plateforme est déployée sur un serveur de production via une chaîne CI/CD.
Le problème à résoudre
Le réseau de livraison d'Ecotrack s'organise autour de stop-desks, chaque desk correspondant à une commune — et un checkout qui propose une liste de desks obsolète, ou un champ de retrait en texte libre, génère des commandes que le transporteur ne peut pas honorer. Comme tout se règle à la livraison, une remise ratée signifie qu'aucun paiement n'est encaissé. Le vrai problème consistait à modéliser cette géographie du transporteur dans la plateforme et à la maintenir synchronisée, pour que le checkout ne propose que des points de retrait réellement en service.

Comment cela a été construit
La plateforme maintient sa propre table de desks, synchronisée depuis Ecotrack, et le sélecteur de stop-desk du checkout lit directement cette table : le client choisit sa commune et obtient le desk que le transporteur y opère réellement, la livraison à domicile restant l'alternative. Une fois la commande expédiée, son statut est suivi en direct via la même intégration.
Autour de ce cœur, le back-office gère produits et commandes ; les médias produits sont déportés sur Cloudflare R2 plutôt que sur le serveur applicatif ; et toutes les entités métier sont en suppression logique, si bien que retirer un produit ne casse jamais l'historique des commandes qui y font référence. L'ensemble tourne sur un serveur de production, avec des déploiements assurés par une chaîne CI/CD.
Ce que ça fait
Catalogue et panier
Les clients parcourent la gamme de confiseries et composent un panier multi-articles avant de passer commande.
Paiement à la livraison
La commande se passe sans aucun paiement en ligne : le client règle en espèces au transporteur à la remise du colis.
Sélecteur de stop-desk
Une table de desks synchronisée depuis Ecotrack alimente le sélecteur du checkout ; chaque desk correspondant à une commune, le client ne choisit que des points de retrait réellement en service.
Suivi transporteur en direct
Les expéditions passent par l'intégration Ecotrack et le statut de livraison de chaque commande se suit en direct.
Back-office d'administration
Une interface d'administration dédiée gère le catalogue produits et le flux des commandes de bout en bout.
Suppression logique
Aucune entité métier n'est supprimée physiquement : les enregistrements sont simplement marqués, et l'historique des commandes reste intact quand un produit quitte la vente.

De plus près

Construit avec
Frontend
Next.js rend le catalogue et les fiches produit côté serveur — pages rapides et indexables — tandis que la boutique et le back-office partagent la même base React.
TypeScript type tout le chemin du payload de checkout jusqu'à l'appel API du transporteur : les écarts avec les structures de données d'Ecotrack apparaissent à la compilation, pas sur une commande réelle.
Tailwind habille la boutique et le back-office avec un même vocabulaire utilitaire, ce qui permet d'itérer vite tout en gardant un rendu cohérent sur les deux surfaces.
Backend
L'API Node.js porte le flux des commandes et les appels Ecotrack : la synchronisation des desks et la création d'expéditions sont des tâches d'E/S qui conviennent à son modèle asynchrone, dans le même langage que le front.
Données
PostgreSQL maintient produits, commandes et la table de desks synchronisée sous de vraies contraintes relationnelles, et rend la suppression logique — marquer la ligne, jamais de DELETE — simple à appliquer sur toutes les entités métier.