
À propos du projet
La boutique en ligne d'un distributeur tunisien de courant faible, vidéosurveillance et télédistribution, reconstruite depuis PrestaShop vers une plateforme trilingue sur mesure connectée à l'ERP de l'entreprise.
Mon rôle: Développeur full stack de la plateforme de remplacement et de son intégration au back office.
IMC vend du matériel de courant faible, de vidéosurveillance et de télédistribution, et sa boutique tournait à l'origine sur PrestaShop. Cela fonctionnait, mais chaque besoin réel se battait contre la plateforme. L'arabe ne s'affichait jamais correctement, les prix s'arrondissaient d'une manière qui ne correspondait pas aux factures, et le timbre fiscal devait se retenir plutôt que s'appliquer. Pire encore, la boutique ignorait tout du stock du back office, si bien qu'un produit pouvait être vendu deux fois.
J'ai reconstruit la boutique sur la plateforme en marque blanche que j'avais déjà développée pour d'autres enseignes tunisiennes, plutôt que de repartir de zéro. IMC dispose ainsi d'un catalogue trilingue avec un vrai support de la lecture de droite à gauche pour l'arabe, d'un modèle monétaire stocké en millimes pour que les totaux ne dérivent jamais, et du paiement à la livraison en chemin principal plutôt qu'en option ajoutée. Le timbre fiscal s'applique à chaque commande parce qu'il appartient au domaine de la commande.
La partie la plus importante ne se voit pas sur le site. Les commandes passées en ligne sont ingérées directement dans l'ERP de l'entreprise, si bien que la boutique et le back office partagent un seul niveau de stock, une seule liste de prix et une seule fiche client. Vendre un produit décrémente désormais le stock que compte le magasin. La stack est Next.js 16 avec l'App Router en TypeScript strict, PostgreSQL sur Cloud SQL via Drizzle, et Firebase pour l'authentification, le stockage et l'hébergement.
Fonctionnalités principales
- 🔄 Migration depuis PrestaShop : Le catalogue a rejoint une plateforme sur mesure sans perdre l'historique produit ni la visibilité en recherche.
- 🔗 Intégration ERP en direct : Les commandes en ligne sont ingérées directement dans l'ERP, si bien que la boutique et le magasin partagent un seul niveau de stock.
- 🌍 Catalogue trilingue : Français, anglais et arabe, avec une mise en page de droite à gauche traitée correctement et non approximée.
- 💵 Paiement à la livraison d'abord : Le moyen de paiement local dominant structure le tunnel plutôt que d'y être ajouté en alternative.
- 🪙 Des prix qui correspondent à la facture : Les montants sont stockés en millimes, si bien que ce que le client voit en ligne est ce que la comptabilité facture.
- 🧾 Timbre fiscal automatique : Le timbre légal tunisien fait partie du domaine commande, si bien que chaque facture est conforme sans étape manuelle.
- 📱 Boutique pensée mobile : La mise en page est conçue pour le téléphone, d'où provient l'essentiel du trafic de la boutique.
- ⚡ Rendu moderne : Next.js 16 avec l'App Router remplace la couche thème de PrestaShop, réduisant le poids des pages et améliorant les temps de chargement.
Problèmes et solutions
Problème: La boutique PrestaShop et le back office ne partageaient pas leurs données, si bien que le stock compté en magasin et le stock affiché en ligne étaient deux chiffres différents. Un produit pouvait être vendu après avoir quitté l'étagère, et chaque correction imposait à quelqu'un de comparer deux écrans.
Solution: Reconstruire la boutique sur une plateforme qui ingère les commandes directement dans l'ERP a supprimé l'écart. Stock, tarifs et fiches clients ont désormais une source unique, et une vente en ligne décrémente le stock que compte le magasin.
Problème: Les plateformes internationales génériques ne gèrent correctement ni le millime, ni le timbre fiscal tunisien, ni la mise en page arabe, si bien que chacun était rustiné localement jusqu'à ce que les rustines deviennent le vrai système.
Solution: Ces règles font partie du modèle métier sur la nouvelle plateforme. La monnaie est stockée en millimes, le timbre fiscal est appliqué par la commande elle même, et l'arabe est une locale de premier plan avec une vraie mise en page de droite à gauche.

