Exports & ESDM
Full JSON export at any time — plus ESDM, an optional open YAML export that carries your model into code and tooling.
Your model lives in your ddd-studio workspace (see Storage & sync). Nothing about your model is locked in there — it can leave the studio completely, in two ways.
The JSON export: the complete model
Save… downloads the whole model as a single .json file — every
artifact, plus studio-specific state like flows and canvas layout. It's
the studio's native format: restore it any time via Open File… on the
start screen, hand it to a colleague, or keep it as a backup.
If you just want your model out, this is the export to use.
ESDM: taking the model into code
Additionally, ddd-studio can export the model as ESDM (Event-Sourced Domain Modeling, esdm.io) — an open YAML format with one file per artifact. This is the bridge from modeling to development:
- the export works with the official ESDM tooling (
esdm lintto validate,esdm viewto render); - one readable YAML file per artifact means the model can live in the project repo, next to the code, with every change showing up as a reviewable diff;
- code generation and other ESDM-based tooling can pick it up from there.
Export ESDM downloads a ZIP of .esdm.yaml files, structured by
scope:
<workspace>/
├── domain.esdm.yaml
├── <bounded-context>/
│ ├── bounded-context.esdm.yaml
│ ├── <aggregate>.esdm.yaml
│ ├── <command>.esdm.yaml
│ ├── <event>.esdm.yaml
│ ├── <read-model>.esdm.yaml
│ └── <query>.esdm.yaml
└── policies/
└── <policy>.esdm.yaml
The export also carries studio metadata (flows, canvas layout) in a
separate folder that esdm lint ignores cleanly — your flows and layout
survive a round-trip through Git and re-import.
The reverse direction works too: Import ESDM Folder… (on the start
screen) reads a folder of .esdm.yaml files into a new workspace.
Chromium-based browsers get a native folder picker; other browsers use a
file-upload fallback.
Given–When–Then scenarios travel with the export as well, via ESDM's
given-when-then/v1 extension — features attached to an aggregate or
read model, with concrete example data.
Inside the studio, every artifact has a raw ESDM YAML detail view with live linting next to its structured field editor, so you can always see the ESDM representation while you model.
Supported artifact kinds
The ESDM spec defines 17 artifact kinds; ddd-studio currently implements 12 of them:
| Kind | Status |
|---|---|
domain | ✅ implemented |
bounded-context | ✅ implemented |
aggregate | ✅ implemented |
command | ✅ implemented |
event | ✅ implemented |
read-model | ✅ implemented |
query | ✅ implemented |
policy | ✅ implemented |
actor | ✅ implemented |
external-system | ✅ implemented |
event-handler | ✅ implemented |
domain-service | ✅ implemented |
process-manager | ⏭️ planned |
dynamic-consistency-boundary | ⏭️ planned |
subdomain | ⏭️ planned |
context-mapping | ⏭️ planned |
value-object | ⏭️ planned |
For the full field catalog per kind, see the ESDM core schema reference.