Decide the shape BEFORE the first file, and keep the boundaries honest afterwards: what the modules are, which way dependencies point, where state is owned, and what each module is allowed to know. Merges the layering rules (dependency rule, SOLID, component cohesion, Humble Object, entities vs use
Decide the shape BEFORE the first file, and keep the boundaries honest afterwards: what the modules are, which way dependencies point, where state is owned, and what each module is allowed to know. Merges the layering rules (dependency rule, SOLID, component cohesion, Humble Object, entities vs use cases, frameworks-and-DB-as-details) with domain boundaries (ubiquitous language, bounded contexts,