Design Laravel app architecture with services, repositories, actions, and clean code patterns. Use when structuring projects, creating services, implementing DI, or organizing code layers.
日本語に翻訳
name: laravel-architecture
description: Design Laravel app architecture with services, repositories, actions, and clean code patterns. Use when structuring projects, creating services, implementing DI, or organizing code layers.
versions:
laravel: "12.46"
php: "8.5"
user-invocable: true
references: references/container.md, references/providers.md, references/facades.md, references/contracts.md, references/structure.md, references/lifecycle.md, references/configuration.md, references/installation.md, references/upgrade.md, references/releases.md, references/sail.md, references/valet.md, references/homestead.md, references/octane.md, references/artisan.md, references/helpers.md, references/filesystem.md, references/processes.md, references/context.md, references/pennant.md, references/mcp.md, references/concurrency.md, references/deployment.md, references/envoy.md, references/logging.md, references/errors.md, references/packages.md
related-skills: solid-php, laravel-api, laravel-eloquent
Laravel Architecture Patterns
Agent Workflow (MANDATORY)
Before ANY implementation, launch in parallel:
fuse-ai-pilot:explore-codebase - Analyze existing architecture
fuse-ai-pilot:research-expert - Verify Laravel patterns via Context7
mcp__context7__query-docs - Check service container and DI patterns
After implementation, run fuse-ai-pilot:sniper for validation.
Overview
Laravel architecture focuses on clean separation of concerns, dependency injection, and maintainable code organization. This skill covers everything from project structure to production deployment.
When to Use
Structuring new Laravel projects
Implementing services, repositories, actions
Setting up dependency injection
Configuring development environments
Deploying to production
Critical Rules
Thin controllers - Delegate business logic to services
Interfaces in app/Contracts/ - Never alongside implementations
DI over facades - Constructor injection for testability
Files < 100 lines - Split larger files per SOLID
Environment separation - .env never committed
Architecture
app/
├── Actions/ # Single-purpose action classes
├── Contracts/ # Interfaces (DI)
├── DTOs/ # Data transfer objects
├── Enums/ # PHP 8.1+ enums
├── Events/ # Domain events
├── Http/
│ ├── Controllers/ # Thin controllers
│ ├── Middleware/ # Request filters
│ ├── Requests/ # Form validation
│ └── Resources/ # API transformations
├── Jobs/ # Queued jobs
├── Listeners/ # Event handlers
├── Models/ # Eloquent models only
├── Policies/ # Authorization
├── Providers/ # Service registration
├── Repositories/ # Data access layer
└── Services/ # Business logic
Reference Guide
Core Architecture
Configuration & Setup
Development Environments
Utilities & Tools
Advanced Features
Operations
Templates
Feature Matrix
Feature Reference Priority Service Container container.md High Service Providers providers.md High Directory Structure structure.md High Configuration configuration.md High Installation installation.md High Octane (Performance) octane.md High Sail (Docker) sail.md High Artisan CLI artisan.md Medium Deployment deployment.md Medium Envoy (SSH) envoy.md Medium Facades facades.md Medium Contracts contracts.md Medium Valet (macOS) valet.md Medium Upgrade Guide upgrade.md Medium Logging logging.md Medium Errors errors.md Medium Lifecycle lifecycle.md Medium Filesystem filesystem.md Medium Helpers helpers.md Low Pennant (Flags) pennant.md Low Context context.md Low Processes processes.md Low Concurrency concurrency.md Low MCP mcp.md Low Packages packages.md Low Releases releases.md Low Homestead homestead.md Low
Quick Reference
Service Injection
public function __construct(
private readonly UserServiceInterface $userService,
) {}
Service Provider Binding
public function register(): void
{
$this->app->bind(UserServiceInterface::class, UserService::class);
$this->app->singleton(CacheService::class);
}
Artisan Command
php artisan make:provider CustomServiceProvider
php artisan make:command ProcessOrders
Environment Access
$debug = env('APP_DEBUG', false);
$config = config('app.name');