laravel-ddd/starter
Composer starter kit that turns a fresh Laravel 12/13 app into a Domain-Driven Design structure. Includes base Entity/ValueObject/Repository/Service classes, 12 generators, interactive installer (auth, docs, tests, sample module), API-ready routes, and optional AI context.
composer create-project laravel/laravel mi-proyecto
cd mi-proyecto
composer require laravel-ddd/starter
php artisan ddd:install
ddd:installInstalls the DDD structure interactively in your Laravel project.
Signature:
php artisan ddd:install [--auth=none|breeze|sanctum] [--module=none|users]
Options:
--auth: Choose authentication method (none, breeze, sanctum)--module: Generate sample module (none, users)Example:
php artisan ddd:install --auth=breeze --module=users
What it does:
ddd:make-moduleCreates a complete DDD module with full structure.
Signature:
php artisan ddd:make-module {name} [--force]
Arguments:
name: Module name (e.g., Users, Orders, Products)Options:
--force: Overwrite existing moduleExample:
php artisan ddd:make-module Users
php artisan ddd:make-module Orders --force
Creates:
ddd:make-entityCreates a DDD entity with optional model and migration.
Signature:
php artisan ddd:make-entity {name} {module} [--migration] [--model]
Arguments:
name: Entity name (e.g., User)module: Module name where to create the entityOptions:
--migration: Generate migration file--model: Generate Eloquent modelExample:
php artisan ddd:make-entity User Users
php artisan ddd:make-entity Post Posts --migration --model
ddd:make-serviceCreates a service class for a module.
Signature:
php artisan ddd:make-service {name} {module}
Arguments:
name: Service name (e.g., UserService)module: Module nameExample:
php artisan ddd:make-service UserService Users
php artisan ddd:make-service PostService Posts
ddd:make-repositoryCreates repository interface and optionally Eloquent implementation.
Signature:
php artisan ddd:make-repository {name} {module} [--eloquent]
Arguments:
name: Repository name (e.g., UserRepository)module: Module nameOptions:
--eloquent: Create Eloquent implementationExample:
php artisan ddd:make-repository UserRepository Users --eloquent
ddd:make-value-objectCreates a value object class.
Signature:
php artisan ddd:make-value-object {name} {module}
Arguments:
name: Value object name (e.g., Email)module: Module nameExample:
php artisan ddd:make-value-object Email Users
php artisan ddd:make-value-object Price Products
ddd:make-controllerCreates a thin controller for a module.
Signature:
php artisan ddd:make-controller {name} {module}
Arguments:
name: Controller name (e.g., UserController)module: Module nameExample:
php artisan ddd:make-controller UserController Users
ddd:make-requestCreates a form request for validation.
Signature:
php artisan ddd:make-request {name} {module}
Arguments:
name: Request name (e.g., CreateUserRequest)module: Module nameExample:
php artisan ddd:make-request CreateUserRequest Users
php artisan ddd:make-request UpdateUserRequest Users
ddd:make-resourceCreates an API resource.
Signature:
php artisan ddd:make-resource {name} {module}
Arguments:
name: Resource name (e.g., UserResource)module: Module nameExample:
php artisan ddd:make-resource UserResource Users
php artisan ddd:make-resource PostResource Posts
ddd:make-routesGenerates routes file for a module.
Signature:
php artisan ddd:make-routes {module} [--api]
Arguments:
module: Module nameOptions:
--api: Generate API routesExample:
php artisan ddd:make-routes Users
php artisan ddd:make-routes Posts --api
ddd:listLists all DDD modules in the project with their components.
Signature:
php artisan ddd:list
Example:
php artisan ddd:list
Output:
+----------+----------+----------+--------------+-------------+----------+-----------+
| Module | Entities | Services | Repositories | Controllers | Requests | Resources |
+----------+----------+----------+--------------+-------------+----------+-----------+
| Users | ✓ (1) | ✓ (1) | ✓ (2) | ✓ (1) | ✓ (2) | ✓ (1) |
| Products | ✓ (2) | ✓ (1) | - | ✓ (1) | - | - |
+----------+----------+----------+--------------+-------------+----------+-----------+
Total: 2 module(s)
ddd:testAfter ddd:install, your project will have:
app/
├── Domains/ # Your business logic
│ ├── Base/ # Shared classes
│ │ ├── Entity.php
│ │ ├── ValueObject.php
│ │ ├── RepositoryInterface.php
│ │ └── Service.php
│ └── [Module]/ # e.g., Users, Posts, Orders
│ ├── Entities/
│ ├── ValueObjects/
│ ├── Repositories/
│ ├── Services/
│ ├── Http/
│ │ ├── Controllers/
│ │ ├── Requests/
│ │ └── Resources/
│ ├── Routes/
│ ├── Providers/
│ ├── Database/
│ │ └── Migrations/
│ └── Tests/
├── Application/ # Use cases/Actions
├── Infrastructure/ # External implementations
│ ├── Persistence/
│ └── HTTP/
├── Support/ # Helpers
├── Providers/
├── Http/Controllers/ # Thin controllers
└── Models/ # Eloquent models
routes/
├── api.php
├── web.php
└── domains/ # Module routes
tests/
├── Unit/Domains/
└── Feature/Domains/
php artisan ddd:make-module Posts
php artisan ddd:make-entity Comment Posts --migration --model
php artisan ddd:make-service CommentService Posts
php artisan ddd:make-controller CommentController Posts
php artisan ddd:make-request CreateCommentRequest Posts
php artisan ddd:make-request UpdateCommentRequest Posts
php artisan ddd:make-resource CommentResource Posts
php artisan ddd:make-routes Posts
Then update routes/api.php:
require app_path('Domains/Posts/Routes/Posts.php');
How can I help you explore Laravel packages today?