ADR-002 · apps/client · Ratified
ADR-002: Strict Layer Boundaries & Unidirectional Import Flow
HTTP route handlers and Server Actions are thin transport adapters that must never import Prisma directly.
Context
When route handlers mix HTTP parsing, rate limiting, and raw Prisma queries, business invariants get duplicated across REST routes and Server Actions.
Decision
Enforce a strict unidirectional import graph: Facades → Route/Action Adapters → Domain Services → Mappers → Repositories → @build/db. Adapters may only call .safeParse(), rate limiters, idempotency guards, and domain services.
Consequences
Domain services can be tested in isolation without mocking Next.js Request/Response objects.