Skip to content
Weave templates

Event sourcing + CQRS

Commands → aggregate → events → projections → queries.

Template previewWeave
Rendering…

Make it your own.

{
  "nodes": [
    { "id":"u","type":"ellipse","label":"User","x":40,"y":80,"fill":"#dbeafe","stroke":"#2563eb" },
    { "id":"c","type":"rect","label":"Command","x":220,"y":80,"fill":"#ede9fe","stroke":"#6d28d9" },
    { "id":"a","type":"rect","label":"Aggregate","x":420,"y":80,"fill":"#fed7aa","stroke":"#c2410c" },
    { "id":"es","type":"rect","label":"Event store","x":620,"y":80,"fill":"#fef3c7","stroke":"#a16207" },
    { "id":"p1","type":"rect","label":"Projection (orders)","x":820,"y":40,"fill":"#dbeafe","stroke":"#2563eb" },
    { "id":"p2","type":"rect","label":"Projection (analytics)","x":820,"y":160,"fill":"#dbeafe","stroke":"#2563eb" },
    { "id":"q","type":"rect","label":"Query API","x":1040,"y":100,"fill":"#dcfce7","stroke":"#15803d" },
    { "id":"u2","type":"ellipse","label":"User (read)","x":1240,"y":100,"fill":"#dcfce7","stroke":"#15803d" }
  ],
  "edges": [
    { "id":"e1","source":"u","target":"c" },
    { "id":"e2","source":"c","target":"a" },
    { "id":"e3","source":"a","target":"es","label":"event" },
    { "id":"e4","source":"es","target":"p1" },
    { "id":"e5","source":"es","target":"p2" },
    { "id":"e6","source":"p1","target":"q" },
    { "id":"e7","source":"q","target":"u2" }
  ]
}