Ports and adapters in TypeScript
An order use case with two ports, OrderRepository and PaymentGateway, an in-memory adapter, a Postgres adapter, and the composition root that wires them.
The dependency rule, without dogma
What the Clean Architecture dependency rule says, why the arrows point toward the domain, what goes in each layer, and the mistakes I see most often in TypeScript services.