Étude de cas
ecom-platform
Code privé — il sert de base à Sower & Light et à la Brûlerie Méridienne.
Mon moteur e-commerce réutilisable : vitrine, tunnel de paiement, espace client, administration, emails et marketing. Une nouvelle boutique se crée en une commande, avec sa langue, sa devise, ses taxes et son propre backend.
Contexte
Base de code née pour une première boutique en production, puis réutilisée pour la Brûlerie Méridienne et Sower & Light. Fin octobre 2026, un audit a montré que chaque nouvelle boutique refaisait une partie du travail.
Problème
Sans modèle de données générique, chaque nouvelle niche demandait un fork : options produit, impression à la demande, devise, taxes et langue étaient codées pour une seule boutique.
Solution
Une refonte en monorepo : un backend partagé, une boutique de référence (store-starter) livrée avec des données de démonstration, et un script qui crée une nouvelle boutique avec son marché (langue, devise, taxes, marque) et son propre projet Convex.
Mon rôle
Audit, architecture, refonte, internationalisation, fiscalité, documentation et déploiement.
Architecture
- Monorepo pnpm et Turborepo : une app par boutique, des packages partagés
- Convex comme backend, un projet par boutique
- Stripe pour le paiement et Stripe Tax pour la taxe de vente américaine
- Better Auth pour les comptes, Resend pour les emails transactionnels et marketing
- Image Docker et procédure de déploiement Coolify
Difficultés traitées
- Extraire le code propre à une niche sans casser les boutiques existantes
- Rendre la langue, la devise et les taxes configurables par marché
- Traduire la vitrine, les emails et l’administration
- Documenter la création d’une boutique jusqu’à sa mise en ligne
Résultats vérifiables
- Création d’une boutique en une commande (pnpm create-store)
- Boutique de démonstration avec 12 produits, avis, livraison et emails
- Version anglaise complète : vitrine, emails et administration
- Taxe de vente américaine calculée par Stripe Tax
Suite
Lancer les prochaines boutiques directement depuis le starter, sans fork.