1. Testing the domain and use cases without mocks

    In-memory fakes instead of mocks, tests that check state instead of calls, contracts shared between adapters, and the shape of the test pyramid in Clean Architecture.

  2. 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.

  3. 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.