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 lint to validate, esdm view to 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:

KindStatus
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.