Context

Frameworks tend to absorb libraries into framework concepts — a "pipe" for validation, a "provider" for a repository. That coupling is the weight this design is trying to avoid.

Decision

Zod, an ORM, the job/cron primitives — call them directly where you need them. The framework doesn't wrap them. Shared infrastructure lives in a normal module (app/_platform/) exposed through its public API.

Consequences

No framework-specific way to validate or query; you use the library's own API and docs. Upgrades and swaps are independent of the framework. Cost: less prescription — teams pick their own conventions for these concerns.

Patties design specifications · a design exploration · All decisions