The Architecture Reference

Modeling the domain

Domain-Driven Design

Most bugs are translation errors between how the business talks and how the code is written. DDD closes that gap: a ubiquitous language inside explicit bounded contexts, and tactical building blocks — aggregates, value objects, domain events — that put the business rules in the model.

Your domain-driven design progress

Mark a topic “learned” on its page and watch the bars fill.

Skill map

Learned nodes light up — the glowing one is your next step. Click any node to jump in.

Strategic Design

Modeling the problem space — ubiquitous language, bounded contexts, subdomains, and context maps that describe how teams and models relate.

Tactical Design

Modeling the solution — value objects, entities, aggregates, domain events, and the architectural patterns (event sourcing, CQRS) that implement them.

Applying DDD

Making it real — distilling the core domain, choosing the right modeling heuristic, EventStorming, and evolving a design as the business changes.

🗺️ Spend your modeling effort on the core domain

Not every part of a system deserves deep modeling. Find the core domain — the part that gives competitive advantage — and lavish DDD’s tactical patterns there. For generic and supporting subdomains, buy or build something simple. The art of DDD is knowing where the complexity is worth it.