Viklund Random thoughts


estorm: Event Storming boards as plain text

Event Storming workshops are great. What comes after them usually isn’t: a few photos of a wall full of stickies that nobody looks at again, and that go stale the moment the model changes.

estorm is my attempt at fixing that. You write the flow as plain text and get a board of stickies, rendered as SVG:

== Sales ==
Customer: Place order -> (Order) -> OrderPlaced
  after 30 minutes unless PaymentCaptured
    then Cancel unpaid order -> (Order) -> OrderCancelled

== Payments ==
when OrderPlaced
  then Charge card -> [Payment provider] -> PaymentCaptured
  ! What if the charge succeeds but our callback times out?

The board estorm renders from the text above: Sales and Payments swimlanes of stickies, with a policy that cancels unpaid orders after 30 minutes and a hotspot about the payment callback timing out

Open this board in the editor and change it to see the board redraw as you type.

Actors, commands, aggregates, external systems, policies, read models and hotspots each have a short notation, and bounded contexts become swimlanes.

It’s not meant to replace the workshop itself. Run that with paper or a whiteboard, then capture the result in text. The board lives in the repository next to the code, changes go through review, and the diffs are readable.

There are a few ways to use it:

The source is on GitHub.