Event sourcing + CQRS
Commands → aggregate → events → projections → queries.
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" }
]
}