E-commerce headless : pourquoi découpler le frontend ?
Dans une architecture headless, la boutique se compose de deux couches indépendantes : un backend qui gère le catalogue, les commandes et les paiements via une API, et un frontend que vous développez — ou que vous remplacez — sans toucher à la logique métier.
Cela change concrètement trois choses. D'abord, la performance : votre vitrine Next.js est pré-rendue, servie depuis un CDN, sans requête PHP à chaque visite. Ensuite, la flexibilité : vous pouvez lancer un site web, une application mobile et un kiosque physique depuis la même API, sans dupliquer le catalogue. Enfin, l'évolutivité : changer de design ou de framework frontend n'implique pas de migrer la base de données.
Saleor pousse cette logique jusqu'au bout. Chaque fonctionnalité — produits, canaux de vente, promotions, expéditions — est accessible via GraphQL. Le tableau de bord React livré avec Saleor sert à administrer, pas à vendre : c'est votre frontend qui vend.
Ce que Saleor apporte sur un VPS ServOrbit
- API GraphQL complète — produits, variantes, attributs, collections, commandes, clients, paiements, expéditions : tout est interrogeable et mutable via GraphQL.
- Multi-canal natif — une boutique marocaine en MAD, une française en EUR, un catalogue B2B en gros : trois canaux indépendants, un seul admin.
- Tableau de bord React inclus — gérez votre catalogue, vos stocks, vos promotions et vos commandes sans écrire une ligne de code.
- Worker Celery pour les tâches de fond — webhooks sortants, notifications e-mail, traitement asynchrone des commandes : rien ne bloque la requête HTTP.
- PostgreSQL 15 + Valkey 8 — base relationnelle robuste et cache/broker rapide, tous deux dans des conteneurs éphémères avec volumes persistants.
- Licence BSD-3-Clause — aucune commission par transaction, aucun accès feature derrière un abonnement commercial, code source entièrement auditable.
Architecture : sept conteneurs, un seul port exposé
La stack Saleor sur ServOrbit tourne en sept services Docker Compose :
1. db — PostgreSQL 15, données persistantes dans un volume.
2. cache — Valkey 8, cache Django et broker Celery sur deux bases Redis distinctes.
3. init — s'exécute une seule fois, applique les migrations, génère la clé RSA pour les JWT et crée le compte admin.
4. api — Uvicorn + Django, sert l'API GraphQL sur le port 8000 (loopback uniquement).
5. worker — Celery, traite la file de tâches asynchrones.
6. dashboard — image React pré-compilée, interface d'administration.
7. proxy — Nginx, point d'entrée unique sur le port exposé. Route /graphql/, /static/, /media/ vers l'API ; tout le reste vers le dashboard.
Un seul port est exposé sur 127.0.0.1, derrière le reverse proxy géré par ServOrbit. L'API ne répond directement à personne — tout passe par Nginx.
Déploiement depuis le Marketplace ServOrbit
Commander un VPS 4 Go RAM
la pile complète (API, Celery, PostgreSQL, Valkey, dashboard) est à l'aise dans 4 Go. 2 Go est le minimum absolu, mais PostgreSQL manquera de marge sous charge.
Attacher votre domaine avant de déployer
Saleor ancre l'URL de l'API du dashboard et la liste
ALLOWED_CLIENT_HOSTSà votre domaine dès le premier démarrage. Cette valeur ne peut plus changer sans recréer les volumes. Faites-le avant, pas après.Lancer le déploiement
dans votre espace client ServOrbit : Marketplace → E-commerce → Saleor → Déployer. Le service
initapplique les migrations, génère la clé RSA et crée le compte[email protected]avec le mot de passe affiché dans votre espace client.Attendre 90 à 120 secondes
le premier démarrage télécharge les images (~1 Go) et applique les migrations de schéma. L'API est prête quand le healthcheck Nginx passe.
Créer un canal de vente
dans le tableau de bord (
https://votre-domaine/), allez dans Catalogue → Canaux → Créer un canal. Renseignez un nom, une devise (MAD, EUR…) et un pays. Sans canal, vous ne pouvez pas créer de produits.Connecter votre vitrine
pointez votre frontend Next.js (ou autre) sur
https://votre-domaine/graphql/. La documentation GraphQL interactive est disponible sur/graphql/en mode debug.
Connecter une passerelle de paiement
Saleor gère les paiements via des Saleor Apps — de petits services qui implémentent le protocole webhook de Saleor et se connectent à votre PSP. L'écosystème officiel couvre Stripe, Adyen et PayPal. Pour le Maroc, une intégration CMI via le Saleor App SDK est envisageable : le SDK expose les hooks nécessaires (payment-gateway-initialize-session, transaction-process-session).
Dans le tableau de bord, allez dans Apps → Explorer les apps pour installer une app depuis la marketplace Saleor, ou Apps → Installer une app personnalisée pour pointer sur votre propre service. L'URL doit être accessible depuis le serveur Saleor (HTTPS requis en production).
Une fois l'app installée, elle apparaît dans Catalogue → Canaux → votre canal → Passerelles de paiement.
Saleor vs PrestaShop vs WooCommerce
PrestaShop et WooCommerce sont des solutions monolithiques : le template, le panier et l'API vivent dans le même process PHP. C'est simple à démarrer, mais difficile à personnaliser profondément — vous devez vivre dans le système de templates de la plateforme.
Saleor adopte la philosophie inverse : zéro template, tout via GraphQL. Vous perdez le « prêt à l'emploi » d'une boutique visible en dix minutes, mais vous gagnez une liberté totale sur le frontend. C'est le bon choix si vous avez des développeurs capables d'écrire un storefront Next.js ou React Native, ou si votre cas d'usage dépasse les contraintes d'un thème standard.
En termes de ressources serveur, Saleor (Python/Django) consomme plus de RAM qu'une installation WooCommerce légère, mais beaucoup moins qu'un Magento ou un Sylius en production. Sur un VPS 4 Go, la pile tourne confortablement avec de la marge pour PostgreSQL.