Paquete Open Source
Laravel DDD Starter Kit
Un paquete Composer que transforma un proyecto Laravel nuevo en una arquitectura completamente estructurada con Domain-Driven Design.
Estructura DDD Completa
Organizada por dominios/módulos con clases base.
12 Comandos Artisan
Genera módulos, entidades, servicios y más.
Tests Automáticos
PHPUnit, Pest o ninguno — tests generados con cada comando.
Este paquete proporciona una base completa de Domain-Driven Design para proyectos Laravel. Incluye clases base, generadores de código y un instalador interactivo que configura autenticación, módulos de ejemplo, documentación y configuración de tests.
El objetivo es ofrecer a los desarrolladores un punto de partida arquitectónico sólido que siga los principios DDD manteniendo la flexibilidad y facilidad de extensión.
Características Principales
- Estructura DDD Completa — Organizada por dominios/módulos
- Clases Base — Entity, ValueObject, Repository, Service
- 12 Comandos Artisan — Genera módulos, entidades, servicios y más
- Instalación Interactiva — Elige autenticación, módulo de ejemplo, docs, paquete de tests y contexto IA
- Generación Automática de Tests — PHPUnit, Pest o ninguno
- Módulo de Ejemplo — Módulo Users opcional con ejemplos completos
- API Ready — Rutas organizadas por dominio
- AI Agent Ready — AGENTS.md opcional para contexto de IA
- Soporte Laravel 13 y 12 — Funciona con ambas versiones
- PHP 8.4+ — Requisitos modernos de PHP
Estructura del Proyecto
Tras la instalación, tu proyecto sigue una organización DDD limpia:
- Domains/ — Domains/ — Lógica de negocio organizada por módulo (Entidades, Repositorios, Servicios, Controladores, Rutas)
- Application/ — Application/ — Casos de uso y acciones
- Infrastructure/ — Infrastructure/ — Implementaciones externas (repositorios Eloquent, adaptadores HTTP)
- Support/ — Support/ — Helpers y utilidades
- Models/ — Models/ — Modelos Eloquent sin lógica de negocio
- routes/domains/ — routes/domains/ — Archivos de rutas específicos por dominio
- tests/ — tests/Unit/Domains/ & tests/Feature/Domains/ — Tests generados por módulo
Comandos Disponibles
El paquete incluye 12 comandos Artisan paraAndamiar tu arquitectura DDD:
- ddd:install — Instalador interactivo de estructura DDD
- ddd:make-module — Crear un módulo completo
- ddd:make-entity — Crear una entidad con modelo y migración
- ddd:make-service — Crear una clase de servicio
- ddd:make-repository — Crear interfaz e implementación de repositorio
- ddd:make-value-object — Crear un objeto valor
- ddd:make-controller — Crear un controlador delgado
- ddd:make-request — Crear una petición de formulario
- ddd:make-resource — Crear un recurso API
- ddd:make-routes — Generar rutas para un módulo
- ddd:list — Listar todos los módulos DDD
- ddd:test — Ejecutar tests del proyecto
Principios Arquitectónicos
Entity
Clase base para entidades de dominio. Contiene lógica de negocio relacionada con la propia entidad.
Value Object
Objetos inmutables que representan valores en tu dominio, con igualdad basada en sus atributos.
Repository
Capa de abstracción entre el dominio y la persistencia de datos. Las interfaces viven en el dominio, las implementaciones en infraestructura.
Service
Orquesta operaciones de negocio usando repositorios. Contiene lógica de casos de uso que abarca múltiples entidades.
Controller
Controlador delgado que delega en servicios. Sin lógica de negocio, solo manejo HTTP.
Instalación Rápida
- Crea un nuevo proyecto Laravel: composer create-project laravel/laravel my-project
- Requiere el paquete: composer require laravel-ddd/starter
- Ejecuta el instalador interactivo: php artisan ddd:install
- Elige tus preferencias: autenticación, módulo de ejemplo, documentación, paquete de tests y contexto IA
Ejemplo: Construir un Blog
Así crearías un blog con Posts y Comments usando los comandos DDD:
- Crea el módulo Posts: php artisan ddd:make-module Posts
- Crea la entidad Comment: php artisan ddd:make-entity Comment Posts --migration --model
- Crea form requests: php artisan ddd:make-request StorePostRequest Posts
- Crea recursos API: php artisan ddd:make-resource PostResource Posts
- Actualiza routes/api.php para incluir las rutas del módulo
- Ejecuta las migraciones: php artisan migrate
¿Listo para construir con DDD?
Comienza tu próximo proyecto Laravel con una base sólida de Domain-Driven Design.