- Clean Architecture keeps business rules independent from delivery so changes in frameworks never break core logic.
- Dependencies flow inward:
infrastructure → adapters → application → domain. - Use cases expose ports; adapters implement them; infrastructure wire everything together under
cmd/entrypoints.
- Separation of concerns: Domain logic lives in entities/value objects; use cases orchestrate; adapters translate boundaries; infrastructure provide tooling (frameworks and drivers) only.
- Dependency rule: Inner layers know nothing about outer layers—never import adapters or infrastructure from the domain or application packages.