← ClaudeAtlas

ddd-vuelisted

Structure a Vue frontend with Domain-Driven Design — bounded-context feature folders, a domain layer of entity and command classes that carry behaviour, assemblers as an anti-corruption layer against the backend API, Pinia stores, and a presentation layer of views and components. Use when organizing or refactoring a Vue app by business domain rather than by technical type, isolating API payloads 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, Vue framework how-to, or backend domain modeling.
salimramirez/agent-skills · ★ 4 · Web & Frontend · score 78
Install: claude install-skill salimramirez/agent-skills
# DDD in Vue Structure a **Vue** 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 Vue 3 with `<script setup>`, Pinia, Vue Router and axios, written in **JavaScript with JSDoc** rather than TypeScript. JSDoc is not decoration here — with no compiler in the picture, it is where the shape of every class, store and function is written down. ## 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. What the frontend *does* gain from DDD is **structure**: organizing the app by the domain (not by technical type), speaking the same **ubiquitous language** as the backend and the experts, keeping a client-side model of the domain separate from the UI, and pushing logic out of components. So treat what follows as **DDD-inspired organization**, not as a place to re-enforce busines