laravel-modular maintained by danielalva
🚀 Laravel Modular Architecture
Arquitectura modular profesional, elegante y ligera para Laravel (Modular Monolith) creada por Daniel Alva.
👨💻 Autor y Contacto
- Creador: Daniel Alva (Luis Daniel Alva Luján)
- LinkedIn: https://www.linkedin.com/in/luis-daniel-alva-lujan/
- GitHub: @luisdaniel9986
💡 ¿Por qué usar Laravel Modular?
En proyectos medianos y grandes de Laravel, las carpetas por defecto (app/Http/Controllers, app/Models, database/migrations) tienden a saturarse con cientos de archivos mezclados.
Laravel Modular resuelve esto transformando cada funcionalidad en un módulo autocontenido:
modules/
├── Productos/
│ ├── Controllers/
│ │ └── ProductoController.php
│ ├── Models/
│ │ └── Producto.php
│ ├── Migrations/
│ │ └── 2026_10_29_000000_create_productos_table.php
│ ├── Routes/
│ │ ├── web.php
│ │ └── api.php
│ ├── Views/
│ │ └── index.blade.php
│ └── Requests/
└── Ventas/
└── ...
📦 Instalación
En tu proyecto Laravel:
composer require danielalva/laravel-modular
Gracias al Package Discovery de Laravel, el paquete se registra automáticamente.
Configurar Autoload de Composer
Añade el namespace de los módulos a tu composer.json principal:
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "modules/"
}
}
Luego regenera el autoloader:
composer dump-autoload
⚡ Uso y Comandos Artisan
1. Crear un Módulo Completo
php artisan make:module Productos
Crea al instante la estructura completa del módulo con su controlador, modelo, migración base, rutas (web y api) y vista Blade.
2. Crear un Controlador en un Módulo
php artisan module:controller Productos DetalleController
3. Crear un Modelo (con migración opcional)
php artisan module:model Productos Categoria -m
4. Crear una Migración adicional
php artisan module:migration Productos add_stock_to_productos_table
🔄 Carga Automática de Componentes
- Rutas Web: Se cargan desde
modules/{Modulo}/Routes/web.phpcon middlewareweb. - Rutas API: Se cargan desde
modules/{Modulo}/Routes/api.phpcon prefijo/apiy middlewareapi. - Migraciones: Se integran automáticamente a
php artisan migrate. - Vistas Blade: Se invocan usando el namespace del módulo en minúsculas:
return view('productos::index');
⚙️ Configuración (Opcional)
Si deseas cambiar el directorio base de los módulos o deshabilitar alguna carga automática, publica la configuración:
php artisan vendor:publish --tag=modular-config
📄 Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.