Layered
HTTP controller
→ service façade
→ mediator
→ handler
→ unit of work
→ repositories
→ factory → provider
→ database
Errors leave as thrown domain exceptions and re-enter as ProblemDetails. Request types are copied at the API edge and again in the application layer.