The Merchant Engine Hire Badii

Une alternative open source à Shopify, hébergée chez vous

Je m’appelle Badii Boutar. Je crée des boutiques en ligne pour des clients, et The Merchant Engine est l’outil que j’ai construit pour ce travail. Je l’ai publié sous licence MIT. C’est une boutique complète : une API, un tableau de bord d’administration, une vitrine, et un installateur qui met le tout sur un serveur Linux que vous contrôlez. La version 1.0.0, la première publique, est sortie le 27 octobre 2026.

Une précision avant de commencer : la documentation est en anglais pour l’instant, donc les liens vers les docs de cet article mènent à des pages en anglais. Les pages de Shopify citées ici sont en français quand Shopify en publie une.

Voici d’abord ce que le projet ne fait pas. Si l’un de ces points vous bloque, vous pouvez arrêter ici, je ne le prendrai pas mal.

Ce qu’il ne fait pas encore

  • Stripe est le seul prestataire de carte pour l’instant. Le paiement à la livraison, le virement bancaire manuel et les cartes-cadeaux ne demandent aucun identifiant. Depuis la v1.0.1, un client peut aussi payer par carte, et vous saisissez les clés Stripe dans l’admin. La marche à suivre pour ajouter un autre prestataire est écrite.
  • Pas d’import depuis Shopify. Shopify permet d’exporter les produits en CSV, mais sa propre page d’aide précise : « les images associées à chaque produit ne sont pas incluses dans le fichier CSV ». Migrer une boutique demande donc un script qui charge les produits par l’API d’administration et récupère les images à part. Je n’ai pas écrit cet outil.
  • L’administration est en anglais. La vitrine, les factures et les e-mails fonctionnent en arabe, de droite à gauche. Dans le tableau de bord, chaque champ de texte a un onglet pour l’arabe qui s’écrit de droite à gauche, mais l’interface elle-même reste en anglais et n’est pas inversée.
  • Une seule mise en page pour la vitrine. Les couleurs, les polices et le logo viennent des réglages de la boutique. La mise en page, elle, est la même pour toutes. Il n’y a pas de thèmes à choisir.
  • Pas de commande de mise à jour, pas d’images prêtes à l’emploi. Une mise à jour consiste à relancer l’installateur sur une version plus récente du code, et l’installateur construit les images à partir des sources sur votre serveur.
  • Le projet est jeune, et je suis seul. Derrière Shopify, il y a une entreprise. Derrière celui-ci, il y a moi. Pesez-le honnêtement avant d’y mettre l’activité d’un client.

La liste complète est sur la page What you get.

Pourquoi je l’ai construit

Une bonne partie de mes clients vend en Afrique du Nord et dans le Golfe. Là-bas, une boutique a presque toujours besoin de plusieurs langues : l’arabe, qui se lit de droite à gauche, à côté du français ou de l’anglais. D’après mon expérience, presque aucune plateforme ne règle ça proprement. Ces boutiques devaient aussi accepter le paiement à la livraison et afficher les prix avec le bon nombre de décimales, qui est de trois pour certaines devises comme le dinar tunisien.

L’autre manque, c’était le référencement. Presque aucune des plateformes que j’ai utilisées ne se connectait proprement à la Google Search Console, ni ne semblait se soucier que la boutique soit trouvable en ligne. Ce travail était toujours remis à plus tard, une boutique après l’autre.

J’ai donc toujours imaginé un seul moteur qui intègre tout ça dès la première installation. Je voulais aussi que le client possède le code et le serveur, et qu’il ne verse rien à personne sur chaque commande.

C’est ce que j’ai construit. Il est livré en anglais, en français et en arabe, et la vitrine passe de droite à gauche en arabe. Le paiement à la livraison est un moyen de paiement que le propriétaire active, avec un nom traduit dans chaque langue. Les montants s’affichent avec le symbole, les séparateurs et la précision propres à la devise. Côté référencement, l’API génère les sitemaps, le robots.txt et le llms.txt, envoie les pages modifiées à IndexNow, et soumet à nouveau le sitemap à la Search Console une fois que vous l’avez connectée. L’administration affiche ensuite les clics et les impressions que la Search Console remonte. La configuration est décrite sur la page Requirements.

Ce que Shopify fait mieux

Je préfère le dire clairement plutôt que vous le découvriez plus tard.

Shopify est un service hébergé. Quelqu’un d’autre fait tourner les serveurs et gère la panne à 3 heures du matin. Il a ses propres paiements et une boutique d’applications pour laquelle des développeurs extérieurs travaillent, et tellement de boutiques l’utilisent que la plupart des questions ont déjà une réponse quelque part. Si vous voulez vendre cette semaine sans jamais penser à un serveur, Shopify est le meilleur choix.

En revanche, vous ne pouvez pas faire tourner Shopify vous-même. Même en mode headless, la partie commerce reste chez Shopify : sa documentation pour développeurs, en anglais, explique que vous construisez la vitrine et que ses API gèrent le commerce en dessous. Pour la plupart des marchands, ça ne pose aucun problème. Ça compte quand le client veut le code, ou quand le checkout doit fonctionner d’une manière que Shopify n’autorise pas. L’ancienne façon de personnaliser le checkout, checkout.liquid, était réservée aux boutiques Plus, et la documentation de Shopify indique maintenant qu’elle n’est plus prise en charge pour les étapes Informations, Livraison et Paiement.

Où va l’argent

J’ai lu la page des tarifs de Shopify le 29 octobre 2026. Elle m’affichait les prix en dollars américains. En paiement annuel, Basic coûtait 29 $ par mois, Grow 79 $, Advanced 299 $, et Plus commençait à 2 300 $. Au mois, c’est plus cher.

Il y a aussi des frais qu’on remarque moins. La même page indique : « Des frais de transaction tiers peuvent s’appliquer si vous utilisez un fournisseur de services de paiement externe (autre que Shopify Payments). » Ces frais étaient de 2 % sur Basic et descendaient jusqu’à 0,2 % sur Plus. Une boutique Basic qui encaisse 10 000 $ par mois chez un autre prestataire de carte verse donc 200 $ par mois à Shopify, en plus de ce que prend le prestataire.

Le paiement à la livraison, c’est différent. Shopify le classe parmi les paiements manuels, et sa page sur les paiements manuels dit : « Les types de paiements manuels les plus courants sont le paiement à la livraison (COD), les mandats et les virements bancaires. » La même page précise qu’aucuns frais de transaction tiers ne sont facturés pour les paiements manuels. Sur Shopify, les commandes payées en espèces ne vous coûtent donc que l’abonnement.

The Merchant Engine ne coûte rien à télécharger et ne prend rien sur les commandes. Il n’y a pas d’offre payante, pas de clé de licence, pas de télémétrie, et vous pouvez l’utiliser pour autant de boutiques clientes que vous voulez.

Ça ne veut pas dire qu’il est gratuit à faire tourner. Vous payez un serveur : la page des prérequis demande une machine Linux avec deux cœurs et quatre gigaoctets de mémoire pour construire les images, et vingt gigaoctets d’espace disque libre. Il vous faut aussi un bucket compatible S3 pour les images et un domaine Resend pour les e-mails. Et vous payez de votre temps, parce que les mises à jour et les sauvegardes deviennent votre travail. Un abonnement Shopify inclut tout ça, et c’est une grande partie de ce que paie le prix mensuel. Ma comparaison point par point des deux est sur la page Shopify alternative.

Ce que vous obtenez à l’installation

Trois applications et un installateur.

L’API est en NestJS et Prisma, sur PostgreSQL et Redis. C’est une seule API REST pour le catalogue, la recherche, le panier, le checkout, les commandes, les paiements, les zones de livraison, les taxes, les promotions, les cartes-cadeaux, les avis, les clients, l’équipe et ses rôles, et les réglages de la boutique. Passer une commande ou ajuster un stock exige une clé d’idempotence : une requête renvoyée ne crée jamais deux fois la même commande et ne déplace jamais deux fois le même stock. L’API envoie aussi les e-mails de la boutique par Resend.

L’administration est un tableau de bord Angular pour les personnes qui gèrent la boutique. La vitrine est rendue côté serveur avec Analog.js, et elle lit la marque, les langues et la devise de la boutique à chaque page demandée. Vous pouvez la garder, la modifier, ou construire votre propre vitrine sur la même API.

L’installateur est la partie que je regarderais en premier. Il demande chaque valeur dont la boutique a besoin et vérifie chaque intégration en direct avant d’écrire quoi que ce soit : il dépose un objet de test dans votre bucket, envoie un e-mail de test par votre domaine Resend, et vérifie votre clé secrète Turnstile auprès de Cloudflare. Ensuite il construit les images, crée la base de données, obtient les certificats TLS, charge les données de départ et crée le compte du propriétaire. S’il échoue en cours de route, vous le relancez et il reprend là où il s’est arrêté. Sur un serveur, il met aussi en place le renouvellement des certificats et une sauvegarde de la base chaque nuit. Copiez ces sauvegardes ailleurs que sur la machine : une sauvegarde sur le même disque que la boutique ne sert pas à grand-chose.

L’essayer

Pas besoin de serveur pour y jeter un œil. Sur un ordinateur portable avec Docker Desktop, donnez au moins 4 Go de mémoire à Docker, clonez le dépôt et lancez :

./setup.sh --local

Sous Windows, c’est .\setup.ps1. Le profil local n’a pas de TLS, garde les e-mails sur votre machine et charge un catalogue de démonstration. Une première installation a pris sept minutes sur un portable Windows, et une relance vingt-six secondes. Les étapes sont sur Install locally, et la version serveur sur Install on a server.

Le code est sur GitHub. Si vous l’essayez et que quelque chose casse, ou si une affirmation de cette page se révèle fausse, ouvrez une issue. Elle arrive directement chez moi.

Dernière mise à jour . Chaque affirmation sur un autre produit renvoie à la page où je l’ai lue.

// Get started

Run it yourself. Or hand it to Badii.