Real Decision
Problem
Business logic spread across controllers and ActiveRecord models quickly becomes difficult to test, maintain and evolve.
Decision
Designed the application around a strict layered architecture where controllers only handle HTTP concerns, services orchestrate business logic, repositories encapsulate persistence and DTOs isolate data transfer between layers. Each layer depends only on the layer below it.