- In Laravel: controllers handle HTTP, models handle data + relationships, Blade templates handle views.
- Keep controllers focused: one resource per controller, RESTful methods only.
- Use repositories for database access, services for business logic, controllers for HTTP — keep each layer focused on its single responsibility.
- Keep models responsible for data access and relationships; controllers should only coordinate between the request and service layer.
- Use Service classes for complex business logic that spans multiple models.
- Use Blade components (`<x-component>`) for reusable view partials with encapsulated logic.