whatisgithub

What is esdm?

thenativeweb/esdm — explained in plain English

Analysis updated 2026-05-18

25GoAudience · developerComplexity · 3/5Setup · easy

In one sentence

esdm lets you describe event-sourced software designs as YAML files, then validates them with a linter so they can be reviewed in pull requests.

Mindmap

mindmap
  root((esdm))
    What it does
      YAML domain modeling
      Event sourcing design
      Opinionated linter
    Tech stack
      Go
      YAML
      Make
    Use cases
      Model aggregates events
      Validate before coding
      Review models in PRs
    Audience
      Developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Model aggregates, events, commands, and bounded contexts as YAML instead of diagrams.

USE CASE 2

Validate event-sourced domain models with an opinionated linter before writing code.

USE CASE 3

Review domain model changes in pull requests alongside code changes.

What is it built with?

GoYAMLMake

How does it compare?

thenativeweb/esdmadisbladis/nix-cache-beaconaspecttaleadapter/adobe-lightroom-classic-15-3-full
Stars252525
LanguageGoGoGo
Setup difficultyeasyhardeasy
Complexity3/54/51/5
Audiencedeveloperops devopsgeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 30min

Full usage docs live outside this repo at esdm.io, this README only covers building from source.

So what is it?

esdm is a tool for describing event-sourced software systems using plain YAML files instead of code or diagrams. Event sourcing is a way of building software where every change to your data is recorded as a sequence of events, rather than just storing the current state. With esdm, you write down the pieces of that design, such as aggregates, events, commands, and bounded contexts, as YAML documents that sit alongside your actual codebase. A big part of the value here is the built in linter. Once you have written your YAML model files, esdm checks them against a set of opinionated rules to make sure the model is consistent and well formed. Because these files live in the same repository as your code, they can be reviewed and updated through normal pull requests, the same way you would review a code change. This means the design of your event-sourced domain stays visible and versioned instead of living only in someone's head or in a separate diagramming tool. The project itself is written in Go and is built from source using a simple make command, which produces the esdm binaries for all the platforms it supports and places them in a build folder. There is also a separate make command for running the project's own quality checks. The README for this repository is intentionally short. Full documentation, including installation steps, a getting started guide, explanations of the core concepts, modeling guides, and a complete reference, is hosted separately at esdm.io. Anyone wanting to actually use esdm to model a domain would need to follow that external documentation rather than relying on this repository alone. This tool is aimed at developers who are already familiar with, or are learning, event-sourced architecture and want a lightweight, text based way to capture and validate their domain models before or alongside writing code. It is not a general purpose programming language, but a modeling and validation layer for one specific architectural style.

Copy-paste prompts

Prompt 1
Explain what aggregates, events, and bounded contexts mean in the context of esdm's YAML modeling.
Prompt 2
Show me an example esdm YAML file describing a simple order aggregate with its events and commands.
Prompt 3
Walk me through building the esdm binary from source using the Makefile.
Prompt 4
How would I set up esdm's linter to check my event-sourced domain models in a CI pipeline?

Frequently asked questions

What is esdm?

esdm lets you describe event-sourced software designs as YAML files, then validates them with a linter so they can be reviewed in pull requests.

What language is esdm written in?

Mainly Go. The stack also includes Go, YAML, Make.

How hard is esdm to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is esdm for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.