Bagisto: La Plataforma de E-Commerce Open Source Construida con Laravel
Guía completa sobre Bagisto, el framework de e-commerce open source basado en Laravel y Vue.js. Instalación, características, arquitectura y casos de uso reales.

Si llevas tiempo en el ecosistema PHP y Laravel, es probable que en algún momento hayas tenido que evaluar plataformas de e-commerce. WooCommerce, Magento, PrestaShop... el mercado está lleno de opciones. Pero Bagisto es un caso aparte: una plataforma construida nativamente sobre Laravel y Vue.js, pensada para desarrolladores que quieren control real sobre su arquitectura sin sacrificar velocidad de desarrollo.
En este artículo exploro Bagisto en profundidad: su arquitectura, sus características más importantes, cuándo tiene sentido usarlo y cómo se compara con otras alternativas del mercado.
¿Qué es Bagisto?
Bagisto es un framework de e-commerce open source lanzado en 2018 por Webkul Software. Está construido sobre el stack que muchos desarrolladores PHP ya conocen bien:
A diferencia de Magento —que tiene una curva de aprendizaje brutal y una arquitectura que puede sentirse ajena— o de WooCommerce —que vive dentro del ecosistema WordPress—, Bagisto fue diseñado desde cero como una aplicación Laravel. Si ya sabes Laravel, te mueves con naturalidad dentro del código.
Repositorio oficial: github.com/bagisto/bagisto
Más de 13,000 estrellas en GitHub y una comunidad activa con releases regulares.
Arquitectura Técnica
Estructura de Paquetes
Bagisto implementa una arquitectura modular basada en paquetes de Laravel. El núcleo está dividido en múltiples paquetes dentro de packages/Webkul/:
packages/
└── Webkul/
├── Admin/ # Panel de administración
├── Attribute/ # Sistema de atributos EAV
├── Cart/ # Carrito de compras
├── Catalog/ # Productos y categorías
├── Category/ # Árbol de categorías
├── Checkout/ # Flujo de checkout
├── Core/ # Funcionalidades base
├── Customer/ # Gestión de clientes
├── Inventory/ # Control de inventario
├── Order/ # Gestión de órdenes
├── Payment/ # Pasarelas de pago
├── Product/ # Tipos de producto
├── Sales/ # Módulo de ventas
├── Shipping/ # Métodos de envío
├── Tax/ # Cálculo de impuestos
└── User/ # Gestión de usuarios admin
Esta separación en paquetes facilita el mantenimiento, la extensibilidad y el testing de forma aislada. Cada paquete registra sus propias rutas, vistas, migraciones y service providers.
El Modelo EAV
Bagisto utiliza el patrón Entity-Attribute-Value (EAV) para los atributos de productos, de forma similar a Magento. Esto permite flexibilidad al definir atributos personalizados sin necesidad de modificar el esquema de la base de datos. Sin embargo, como todo EAV, implica un costo en complejidad de queries —algo a considerar cuando el catálogo escala a cientos de miles de productos.
Frontend: Blade + Vue.js
El panel de administración está construido con Vue.js y hace uso intensivo de componentes reactivos. El storefront (tienda pública) usa Blade templates con Vue para los componentes interactivos (carrito, búsqueda en tiempo real, filtros).
Bagisto también ofrece una API REST y GraphQL completa, lo que lo hace viable como backend headless para frontends en Next.js, Nuxt, o aplicaciones móviles.
Características Principales
Gestión de Catálogo
Multi-Canal y Multi-Locale
Una de las fortalezas de Bagisto es su soporte nativo para múltiples canales, locales y divisas:
// Cada canal puede tener su propio dominio, tema, catálogo y configuración
Channel::create([
'code' => 'eu_store',
'name' => 'European Store',
'hostname' => 'eu.mystore.com',
'locales' => ['en', 'de', 'fr', 'es'],
'currencies' => ['EUR'],
'root_category_id' => 2,
]);
Esto es especialmente valioso para proyectos con presencia internacional o para agencias que gestionan múltiples tiendas desde una sola instalación.
Sistema de Precios
Pasarelas de Pago
Bagisto incluye integraciones con:
Para proyectos en Costa Rica y América Latina, la integración con Stripe es completamente viable a través de Stripe Connect, aunque conviene validar el método de cobro local disponible en cada país.
Gestión de Inventario
Instalación y Configuración
Requisitos del Sistema
PHP >= 8.1
Laravel >= 10.x
MySQL >= 8.0 / PostgreSQL >= 13
Composer 2.x
Node.js >= 18.x
Instalación con Composer
# Crear proyecto
composer create-project bagisto/bagisto my-store
cd my-store
# Configurar variables de entorno
cp .env.example .env
# Editar .env con credenciales de base de datos
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_DATABASE=bagisto_db
# DB_USERNAME=root
# DB_PASSWORD=secret
# Ejecutar instalador
php artisan bagisto:install
# Compilar assets
npm install && npm run build
El comando bagisto:install ejecuta migraciones, seeders con datos iniciales y configura el almacenamiento. Al finalizar, el panel de administración está disponible en /admin.
Instalación con Docker
Para entornos de desarrollo o producción con Docker:
# docker-compose.yml simplificado
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:
Extensibilidad: Crear un Paquete Personalizado
La forma correcta de extender Bagisto es mediante paquetes Laravel. No se modifica el core directamente.
php artisan package:make Acme/CustomModule
Esto genera la estructura base en packages/Acme/CustomModule/:
CustomModule/
├── src/
│ ├── Config/
│ │ └── menu.php # Entradas del menú admin
│ ├── Http/
│ │ ├── Controllers/
│ │ └── Middleware/
│ ├── Models/
│ ├── Repositories/
│ ├── Resources/
│ │ ├── assets/
│ │ └── views/
│ ├── Routes/
│ │ ├── admin-routes.php
│ │ └── shop-routes.php
│ └── Providers/
│ └── CustomModuleServiceProvider.php
└── package.json
Bagisto utiliza el patrón Repository en lugar de acceder directamente a los modelos, lo que facilita el testing y la sustitución de implementaciones:
// En lugar de:
$product = Product::find($id);
// Bagisto utiliza:
$product = $this->productRepository->find($id);
API REST y Headless Commerce
Bagisto expone una API REST completa bajo /api/v1/. Permite construir frontends desacoplados o integraciones con sistemas externos.
# Autenticación
POST /api/v1/customer/login
# Catálogo
GET /api/v1/products
GET /api/v1/products/{id}
GET /api/v1/categories
# Carrito
POST /api/v1/checkout/cart/add
GET /api/v1/checkout/cart
DELETE /api/v1/checkout/cart/remove/{id}
# Órdenes
POST /api/v1/checkout/order
GET /api/v1/orders
Adicionalmente, Bagisto tiene soporte para GraphQL a través del paquete bagisto/headless-ecommerce, ideal para proyectos con frontends en frameworks modernos como Nuxt o React.
Comparativa: Bagisto vs Otras Plataformas
| Característica | Bagisto | Magento 2 | WooCommerce | Sylius |
|---|---|---|---|---|
| Stack base | Laravel + Vue | PHP propio + KO | WordPress + PHP | Symfony + Twig |
| Curva de aprendizaje | Media (Laravel) | Alta | Baja | Alta (Symfony) |
| Multi-tienda | ✅ Nativo | ✅ Nativo | Plugin | ✅ Nativo |
| API REST | ✅ Completa | ✅ Completa | ✅ Completa | ✅ Completa |
| GraphQL | ✅ Paquete | ✅ Nativo | Plugin | ❌ |
| Headless ready | ✅ | ✅ | Parcial | ✅ |
| Licencia | MIT | OSL/EE comercial | GPL | MIT |
| Performance | Alta | Media-Baja | Media | Alta |
| Comunidad | Creciendo | Grande | Muy grande | Media |
Cuándo elegir Bagisto:
Cuándo no elegir Bagisto:
Performance y Optimización
Bagisto aprovecha las herramientas de optimización de Laravel:
# Cachear configuración, rutas y vistas
php artisan config:cache
php artisan route:cache
php artisan view:cache
# Optimización de Composer
composer install --optimize-autoloader --no-dev
Para producción, se recomienda:
Casos de Uso Reales
Bagisto encaja especialmente bien en:
Conclusión
Bagisto es una apuesta seria para proyectos de e-commerce que requieren flexibilidad, arquitectura limpia y control total sobre el código. No es la opción más sencilla si buscas algo listo para usar en horas, pero si tu contexto implica un equipo con experiencia en Laravel y requerimientos que van más allá de una tienda estándar, vale la pena evaluarlo con atención.
La apuesta por Laravel como base garantiza que el código sea mantenible, testeable y extensible de formas que plataformas más monolíticas simplemente no permiten. Y la adopción creciente del enfoque headless hace que su API robusta sea cada vez más relevante.
Si estás evaluando Bagisto para un proyecto, recomiendo explorar el repositorio oficial, revisar la documentación y levantar una instancia local con Docker —en menos de 30 minutos tienes un entorno funcional para evaluar si se adapta a tus necesidades.
Recursos
¿Estás trabajando con Bagisto o evaluando plataformas de e-commerce para un proyecto Laravel? Puedes contactarme a través de mi portfolio o por GitHub.