Skip to content

Blog Articles

WARNING

We created this page with the help of the GenAI tool.

We're currently double-checking it to ensure the information is 100% correct and free of hallucinations.

A curated collection of articles about Emmett, Event Sourcing patterns, and related topics from event-driven.io.

Getting Started with Emmett

Start here if you're new to Emmett or Event Sourcing.

ArticleDescription
Announcing Emmett!Introduction to Emmett and its design philosophy
Event Sourcing on PostgreSQL in Node.jsSetting up the PostgreSQL event store
Testing Event Sourcing, Emmett editionComprehensive testing strategies

Projections & Read Models

Learn how to build and maintain read models from events.

ArticleDescription
Writing and testing event-driven projectionsProjection patterns with Pongo and PostgreSQL
Using event metadata in projectionsAdvanced projection techniques with metadata
Dealing with Race Conditions in Read ModelsHandling concurrent updates to projections

Message Processing

Deep dives into messaging patterns and consumers.

ArticleDescription
Consumers, projectors, reactors and all that messaging jazzUnderstanding Emmett's messaging model
Checkpointing the message processingReliable message processing with checkpoints
Multi-tenancy and dynamic messaging workload distributionScaling message processing
Idempotent Command HandlingEnsuring exactly-once semantics

Event Store Implementations

Building and understanding event stores.

ArticleDescription
How to build MongoDB Event StoreMongoDB as an event store
Let's build an Event Store in one hour!Understanding event store internals
Event stores are key-value databasesMental model for event stores

Pongo (PostgreSQL Document Database)

Emmett's companion library for document storage in PostgreSQL.

ArticleDescription
Pongo - Mongo but on PostgresIntroduction to Pongo
Pongo behind the scenesHow Pongo works internally
Pongo gets strongly-typed client, migrations, and CLIAdvanced Pongo features
Running regular SQL on Pongo documentsSQL interoperability

TypeScript & Patterns

General patterns useful for event-driven development.

ArticleDescription
How TypeScript can help in modelling business workflowsTypeScript patterns for workflows
How to build an in-memory Message Bus in TypeScriptMessage bus implementation
How to tackle ESM compatibility issuesManaging module compatibility
Mocking the native Node.js Test RunnerTesting techniques

Infrastructure & DevOps

Practical guides for running Emmett in production.

ArticleDescription
How to configure a custom TestContainerEventStoreDB TestContainer setup
Docker Compose ProfilesManaging Docker environments

Event Sourcing Concepts

Deeper understanding of Event Sourcing principles.

ArticleDescription
Event Streaming is not Event SourcingKey distinctions
How to get the current entity state from events?State aggregation patterns
Should you throw an exception when rebuilding state?Error handling in evolve functions
Slim your entities with Event SourcingKeeping state focused
Optimistic concurrency for pessimistic timesConcurrency control strategies
How to use ETag header for optimistic concurrencyHTTP-based concurrency

Community Articles

Articles written by the community.

ArticleAuthorDescription
Event Sourcing with Emmett: Reducing the Entry Barrier@mbnetoGetting started perspective

Learning Paths

Beginner Path

  1. Announcing Emmett! - Understand the motivation
  2. Event Sourcing on PostgreSQL in Node.js - Set up your first event store
  3. Testing Event Sourcing, Emmett edition - Learn testing patterns

Intermediate Path

  1. Complete Beginner Path
  2. Writing and testing event-driven projections - Build read models
  3. Consumers, projectors, reactors - Understand message processing
  4. Checkpointing the message processing - Reliable processing

Advanced Path

  1. Complete Intermediate Path
  2. Dealing with Race Conditions in Read Models - Handle edge cases
  3. Multi-tenancy and dynamic messaging - Scale your system
  4. Idempotent Command Handling - Production resilience

Stay Updated

See Also