← ClaudeAtlas

ddd-angularlisted

Structure an Angular frontend with Domain-Driven Design — bounded-context feature folders, a domain layer of entities and commands, DTOs and assemblers as an anti-corruption layer against the backend API, signal stores, and a presentation layer of views and components. Use when organizing or refactoring an Angular app by business domain rather than by technical type, isolating API contracts from the app's own model, or deciding where business logic belongs on the frontend. It carries the DDD design rules it depends on, so it works on its own. Not for styling, Angular framework how-to, or backend domain modeling.
salimramirez/agent-skills · ★ 4 · Web & Frontend · score 78
Install: claude install-skill salimramirez/agent-skills
# DDD in Angular Structure an **Angular** app around a domain. Start with the honest part below — DDD on the frontend is *adapted*, not the same as on the backend — then apply the structure and the idioms in the references. This is an **opinionated** house style: for every decision it names one convention and says what that convention buys, rather than listing options. It is one coherent way to do this, not the only correct one; where a choice is genuinely open, the reference says so. Examples use the **QuickBite** food-delivery domain, in an `ordering` bounded context. The idioms are standalone components, signals, and `inject()`. They work unchanged across current Angular versions; newer releases add alternatives — Signal Forms, signal-native data fetching with `httpResource()`, and the `@Service()` decorator as a shorthand for `@Injectable({ providedIn: 'root' })` — that you can adopt without changing anything about the structure here. One caveat, because it bites exactly one class in this skill: `@Service()` supports **only** `inject()`, never constructor injection, so a context API written as `constructor(http: HttpClient)` stays on `@Injectable`. See [house-style.md](references/house-style.md). ## What DDD means on the frontend The backend is the **system of record**: it owns the business rules, the invariants, and the transactional consistency. The frontend cannot enforce those — a determined user can bypass any client-side check — so it should not pretend to. Wh