Read models and Projections
Events tell you what happened, but a screen needs the current state in a shape that’s quick to read: a list of open orders, a customer’s balance. A projection builds that view, called a read model, by applying events one by one. You’ll understand how to design projections, how to rebuild a read model when its logic changes, and how to keep it correct when events arrive twice or late.
The first article covers the basics. The next two show how to rebuild read models safely while the system keeps running, and what to do with cases you can’t fix on the spot. Then come shorter pieces on scaling, nested data, testing, event metadata and transforming events. The last four use specific tools, EventStoreDB and Marten, including sending data to Elasticsearch.
Read the first three in order. Pick the rest by the problem you have.

Guide to Projections and Read Models in Event-Driven Architecture
2023-01-20If I had to choose the killer feature of Event Sourcing, I’d select projections. Why? I’ll explain that in detail in this article. Events are facts; they represent…
Rebuilding Event-Driven Read Models in a safe and resilient way
2026-01-05Let’s make a soup today: a blog soup. We’ll mix multiple ingredients like: events (obviously), read models, inline and async projections, rebuilding read models…
On rebuilding read models, Dead-Letter Queues and Why Letting Go is Sometimes the Answer
2026-01-19In the last article, I explained how to rebuild Event-Driven Read Models in a safe and resilient way. I asked readers to let me know if they find any blind spots in my…
How to scale projections in the event-driven systems?
2021-05-26People want to scale up everything. In the past, the recipe for everything was to buy a larger server. Today, the answer is to add another instance. Does it always make…
How to create projections of events for nested object structures?
2021-04-07Did you ever feel so encouraged so much that you immediately thought, “This is great, let’s do it!“. I’m sure you did. I’m also sure that few times you got backslash…
Writing and testing event-driven projections with Emmett, Pongo and PostgreSQL
2024-08-14In the previous article, I told what happened when Emmett and Pongo walked into a bar. In other words, I announced that you can now do Event Sourcing in Node.js on top of…
Using event metadata in event-driven projections
2024-08-25Some time ago, I wrote about the dangers that come from the I’ll just add one more field” attitude. Have you heard about the Broken Window Theory? Authors (James Q…
Event transformations, a tool to keep our processes loosely coupled
2023-08-31One of the biggest pains in traditional software design is accidental complexity. We want to understand and reflect on the business process in the code, but our…
Persistent vs catch-up, EventStoreDB subscriptions in action
2022-05-04Events can be a great facilitator and glue for business workflows. Subscriptions are an essential block of the event-driven system. They notify us about each of the…
Event-driven projections in Marten explained
2023-02-12Projections are a neverending story. One does not simply write a single guide. One needs to write more examples of more advanced cases. That’s precisely what one here…
Projecting Marten events to Elasticsearch
2023-03-18I told you already that Projections are an Event Sourcing killer feature, and today I’d like to repeat that. In Marten, we embraced that and provide various ways of…
Publishing read model changes from Marten
2023-04-23Integrations have different names, shades and colours, but only one adjective: challenging. Trying to glue systems together requires matching two visions into one. That’s…