Bagisto : La Plateforme E-Commerce Open Source construite avec Laravel
Guide complet sur Bagisto, le framework e-commerce open source basé sur Laravel et Vue.js. Installation, fonctionnalités, architecture et cas d'usage réels.

Si vous êtes dans l'écosystème PHP et Laravel depuis un certain temps, il est probable que vous ayez déjà dû évaluer des plateformes e-commerce. WooCommerce, Magento, PrestaShop — le marché regorge d'options. Mais Bagisto est un cas à part : une plateforme construite nativement sur Laravel et Vue.js, conçue pour les développeurs qui veulent un contrôle réel sur leur architecture sans sacrifier la vitesse de développement.
Dans cet article, j'explore Bagisto en profondeur : son architecture, ses fonctionnalités clés, quand l'utiliser et comment il se compare aux autres alternatives du marché.
Qu'est-ce que Bagisto ?
Bagisto est un framework e-commerce open source lancé en 2018 par Webkul Software. Il est construit sur une stack que de nombreux développeurs PHP connaissent déjà bien :
Contrairement à Magento — qui a une courbe d'apprentissage brutale et une architecture qui peut sembler étrangère — ou à WooCommerce — qui vit dans l'écosystème WordPress —, Bagisto a été conçu dès le départ comme une application Laravel. Si vous connaissez déjà Laravel, vous vous déplacerez naturellement dans le code.
Dépôt officiel : github.com/bagisto/bagisto
Plus de 13 000 étoiles GitHub et une communauté active avec des versions régulières.
Architecture Technique
Structure des Paquets
Bagisto implémente une architecture modulaire basée sur les paquets Laravel. Le noyau est divisé en plusieurs paquets dans packages/Webkul/ :
packages/
└── Webkul/
├── Admin/ # Panneau d'administration
├── Attribute/ # Système d'attributs EAV
├── Cart/ # Panier d'achat
├── Catalog/ # Produits et catégories
├── Category/ # Arborescence des catégories
├── Checkout/ # Processus de paiement
├── Core/ # Fonctionnalités de base
├── Customer/ # Gestion des clients
├── Inventory/ # Contrôle des stocks
├── Order/ # Gestion des commandes
├── Payment/ # Passerelles de paiement
├── Product/ # Types de produits
├── Sales/ # Module de ventes
├── Shipping/ # Méthodes d'expédition
├── Tax/ # Calcul des taxes
└── User/ # Gestion des utilisateurs admin
Cette séparation en paquets facilite la maintenance, l'extensibilité et les tests isolés. Chaque paquet enregistre ses propres routes, vues, migrations et fournisseurs de services.
Le Modèle EAV
Bagisto utilise le modèle Entity-Attribute-Value (EAV) pour les attributs de produits, similaire à Magento. Cela offre une flexibilité pour définir des attributs personnalisés sans modifier le schéma de la base de données. Cependant, comme toute implémentation EAV, cela a un coût en complexité de requêtes — un point à considérer lorsque le catalogue atteint des centaines de milliers de produits.
Frontend : Blade + Vue.js
Le panneau d'administration est construit avec Vue.js et utilise intensivement des composants réactifs. La boutique publique utilise des templates Blade avec Vue pour les composants interactifs (panier, recherche en temps réel, filtres).
Bagisto offre également une API REST et GraphQL complète, ce qui le rend viable comme backend headless pour des frontends en Next.js, Nuxt ou applications mobiles.
Fonctionnalités Principales
Gestion du Catalogue
Multi-Canal et Multi-Langue
L'un des points forts de Bagisto est son support natif pour plusieurs canaux, langues et devises :
// Chaque canal peut avoir son propre domaine, thème, catalogue et configuration
Channel::create([
'code' => 'eu_store',
'name' => 'European Store',
'hostname' => 'eu.mystore.com',
'locales' => ['en', 'de', 'fr', 'es'],
'currencies' => ['EUR'],
'root_category_id' => 2,
]);
C'est particulièrement utile pour les projets à présence internationale ou les agences gérant plusieurs boutiques depuis une seule installation.
Système de Tarification
Passerelles de Paiement
Bagisto inclut des intégrations avec :
Pour les projets au Costa Rica et en Amérique latine, l'intégration Stripe est tout à fait viable via Stripe Connect, bien qu'il soit utile de valider la méthode de paiement locale disponible dans chaque pays.
Gestion des Stocks
Installation et Configuration
Prérequis Système
PHP >= 8.1
Laravel >= 10.x
MySQL >= 8.0 / PostgreSQL >= 13
Composer 2.x
Node.js >= 18.x
Installation avec Composer
# Créer le projet
composer create-project bagisto/bagisto my-store
cd my-store
# Configurer les variables d'environnement
cp .env.example .env
# Modifier .env avec les identifiants de la base de données
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_DATABASE=bagisto_db
# DB_USERNAME=root
# DB_PASSWORD=secret
# Exécuter l'installateur
php artisan bagisto:install
# Compiler les assets
npm install && npm run build
La commande bagisto:install exécute les migrations, les seeders avec données initiales et configure le stockage. Une fois terminé, le panneau d'administration est disponible sur /admin.
Installation avec Docker
Pour les environnements de développement ou de production avec Docker :
# docker-compose.yml simplifié
version: '3.8'
services:
app:
image: bagisto/bagisto:latest
ports:
- "8000:80"
environment:
DB_HOST: db
DB_DATABASE: bagisto
DB_USERNAME: bagisto_user
DB_PASSWORD: secret
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: bagisto
MYSQL_USER: bagisto_user
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: rootsecret
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Extensibilité : Créer un Paquet Personnalisé
La bonne façon d'étendre Bagisto est d'utiliser des paquets Laravel. Le cœur n'est jamais modifié directement.
php artisan package:make Acme/CustomModule
Cela génère la structure de base dans packages/Acme/CustomModule/ :
CustomModule/
├── src/
│ ├── Config/
│ │ └── menu.php # Entrées du menu admin
│ ├── Http/
│ │ ├── Controllers/
│ │ └── Middleware/
│ ├── Models/
│ ├── Repositories/
│ ├── Resources/
│ │ ├── assets/
│ │ └── views/
│ ├── Routes/
│ │ ├── admin-routes.php
│ │ └── shop-routes.php
│ └── Providers/
│ └── CustomModuleServiceProvider.php
└── package.json
Bagisto utilise le pattern Repository au lieu d'accéder directement aux modèles, ce qui facilite les tests et la substitution d'implémentations :
// Au lieu de :
$product = Product::find($id);
// Bagisto utilise :
$product = $this->productRepository->find($id);
API REST et Commerce Headless
Bagisto expose une API REST complète sous /api/v1/. Elle permet de construire des frontends découplés ou des intégrations avec des systèmes externes.
# Authentification
POST /api/v1/customer/login
# Catalogue
GET /api/v1/products
GET /api/v1/products/{id}
GET /api/v1/categories
# Panier
POST /api/v1/checkout/cart/add
GET /api/v1/checkout/cart
DELETE /api/v1/checkout/cart/remove/{id}
# Commandes
POST /api/v1/checkout/order
GET /api/v1/orders
De plus, Bagisto prend en charge GraphQL via le paquet bagisto/headless-ecommerce, idéal pour les projets avec des frontends dans des frameworks modernes comme Nuxt ou React.
Comparatif : Bagisto vs Autres Plateformes
| Fonctionnalité | Bagisto | Magento 2 | WooCommerce | Sylius |
|---|---|---|---|---|
| Stack de base | Laravel + Vue | Propriétaire + KO | WordPress + PHP | Symfony + Twig |
| Courbe d'apprentissage | Moyenne (Laravel) | Élevée | Faible | Élevée (Symfony) |
| Multi-boutique | ✅ Natif | ✅ Natif | Extension | ✅ Natif |
| API REST | ✅ Complète | ✅ Complète | ✅ Complète | ✅ Complète |
| GraphQL | ✅ Paquet | ✅ Natif | Extension | ❌ |
| Prêt pour headless | ✅ | ✅ | Partiel | ✅ |
| Licence | MIT | OSL/EE commercial | GPL | MIT |
| Performances | Élevées | Moyennes-Faibles | Moyennes | Élevées |
| Communauté | En croissance | Grande | Très grande | Moyenne |
Quand choisir Bagisto :
Quand ne pas choisir Bagisto :
Performance et Optimisation
Bagisto exploite les outils d'optimisation de Laravel :
# Mettre en cache la configuration, les routes et les vues
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Optimisation Composer
composer install --optimize-autoloader --no-dev
Pour la production, il est recommandé d'utiliser :
Cas d'Usage Réels
Bagisto est particulièrement adapté pour :
Conclusion
Bagisto est un pari sérieux pour les projets e-commerce qui nécessitent flexibilité, architecture propre et contrôle total sur le code. Ce n'est pas l'option la plus simple si vous cherchez quelque chose de prêt à l'emploi en quelques heures, mais si votre contexte implique une équipe avec de l'expérience Laravel et des exigences qui vont au-delà d'une boutique standard, cela vaut la peine de l'évaluer attentivement.
Le pari sur Laravel comme base garantit que le code est maintenable, testable et extensible d'une manière que les plateformes plus monolithiques ne permettent tout simplement pas. Et l'adoption croissante de l'approche headless rend son API robuste de plus en plus pertinente.
Si vous évaluez Bagisto pour un projet, je recommande d'explorer le dépôt officiel, de consulter la documentation et de lancer une instance locale avec Docker — en moins de 30 minutes, vous aurez un environnement fonctionnel pour évaluer s'il répond à vos besoins.
Ressources
Vous travaillez avec Bagisto ou vous évaluez des plateformes e-commerce pour un projet Laravel ? Vous pouvez me contacter via mon portfolio ou sur GitHub.