How matheuspdias/laravel-clean-arch works
This is a Laravel REST API for user CRUD and Sanctum-based authentication, organized around Clean Architecture and DDD. The main workflow is an HTTP request routed to a controller, delegated to a use case, and handled through domain logic and repository persistence before a JSON response is returned. The graph preserves user CRUD, authentication, domain modeling, and Eloquent persistence. Some use-case implementations and route details were not excerpted; documented capabilities and SOURCE INDEX references support those links, while uncertain wiring is omitted.
Main entry points: UseCases User use cases · UserRepository.php Repository contract · AuthController.php Auth controller · api.php API routes
Components 16
HTTP API
- API routes
routes/api.php - User controller
app/Modules/User/Http/Controllers/UserController.php - User resource
app/Modules/User/Http/Resources/UserResource.php - Auth controller
app/Modules/Auth/Http/Controllers/AuthController.php
Application and Domain
- User use cases
app/Modules/User/Application/UseCases - Login use case
app/Modules/Auth/Application/UseCases/LoginUseCase.php - Logout use case
app/Modules/Auth/Application/UseCases/LogoutUseCase.php - User domain
app/Modules/User/Domain/Entities/User.php - User domain service
app/Modules/User/Domain/Services/UserDomainService.php - Repository contract
app/Modules/User/Domain/Repositories/UserRepository.php - User value objects
app/Modules/User/Domain/ValueObjects
Persistence
- Eloquent repository
app/Modules/User/Infrastructure/Persistence/Eloquent/EloquentUserRepository.php - User model
app/Modules/User/Infrastructure/Persistence/Eloquent/UserModel.php
Authentication
- Token contract
app/Modules/Auth/Application/Contracts/TokenService.php - Sanctum token service
app/Modules/Auth/Infrastructure/SanctumTokenService.php
Other components
- API client
Connections 22
- API client → API routes: sends request
routes/api.php - API routes → User controller: routes users
routes/api.php - API routes → Auth controller: routes auth
routes/api.php - User controller → User use cases: invokes
app/Modules/User/Http/Controllers/UserController.php - User controller → User resource: formats response
app/Modules/User/Http/Controllers/UserController.php - User use cases → Repository contract: uses repository
app/Modules/User/Application/UseCases/GetUserUseCase.php - User use cases → User domain: handles users
app/Modules/User/Application/UseCases/GetUserUseCase.php - User use cases → User value objects: uses identifiers
app/Modules/User/Application/UseCases/GetUserUseCase.php - User use cases → User domain service: checks profile
app/Modules/User/Application/UseCases/UpdateUserUseCase.php - User domain service → Repository contract: checks email
app/Modules/User/Domain/Services/UserDomainService.php - Repository contract → User domain: returns entities
app/Modules/User/Domain/Repositories/UserRepository.php - Eloquent repository → User model: queries and saves
app/Modules/User/Infrastructure/Persistence/Eloquent/EloquentUserRepository.php - User model → User domain: maps entity
app/Modules/User/Infrastructure/Persistence/Eloquent/UserModel.php - Eloquent repository → Repository contract: implements
app/Modules/User/Infrastructure/Persistence/Eloquent/EloquentUserRepository.php - Auth controller → Login use case: invokes login
app/Modules/Auth/Http/Controllers/AuthController.php - Auth controller → Logout use case: invokes logout
app/Modules/Auth/Http/Controllers/AuthController.php - Auth controller → User resource: formats profile
app/Modules/Auth/Http/Controllers/AuthController.php - Login use case → Repository contract: looks up user
app/Modules/Auth/Application/UseCases/LoginUseCase.php - Login use case → Token contract: creates token
app/Modules/Auth/Application/UseCases/LoginUseCase.php - Logout use case → Token contract: revokes token
app/Modules/Auth/Application/UseCases/LogoutUseCase.php - Sanctum token service → Token contract: implements
app/Modules/Auth/Infrastructure/SanctumTokenService.php - Sanctum token service → User model: creates user token
app/Modules/Auth/Infrastructure/SanctumTokenService.php