Level 2 bounded contexts with use-cases
NestJS on Fastify with pure TypeScript domain layer, one use-case per file, and ports/adapters for cross-context communication.
Stock NestJS feature folders led to bloated services and tight coupling. Bounded contexts with explicit domain/application/infrastructure/presentation layers enforce clear boundaries between identity, catalog, listings, subscriptions, conversations, notifications, content, reports, and admin.