Async/await first CQRS+ES and DDD framework for .NET designed to be easy to use and highly configurable.
EventFlow is an async/await-first framework for .NET that implements CQRS (Command Query Responsibility Segregation) and Event Sourcing (ES) with built-in support for Domain-Driven Design (DDD). It helps developers build scalable, maintainable applications by separating command and query responsibilities, storing all state changes as events, and providing tools for aggregates, commands, events, read models, and sagas.
.NET developers and architects building complex, domain-driven applications that require scalability, auditability, and clear separation of concerns, particularly in microservices or event-driven architectures.
Developers choose EventFlow for its ease of use with sensible defaults, high extensibility through interface-based design, and comprehensive support for multiple storage backends and DDD patterns—all under a permissive MIT license.
Async/await first CQRS+ES and DDD framework for .NET
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides out-of-the-box implementations like in-memory event stores and read models, making it easy to start with example applications, as demonstrated in the complete code snippet.
Uses interfaces for every core component, allowing developers to replace or extend features with custom implementations, aligning with its flexible yet opinionated philosophy.
Built with modern asynchronous programming patterns, avoiding manual threading and background workers for better scalability and performance in concurrent environments.
Supports various event stores (e.g., MS SQL, PostgreSQL, EventStore) and read models (e.g., Elasticsearch, SQL databases), offering flexibility in infrastructure choices.
Version 1.0 introduces significant breaking changes and is still under development, with some key packages like EventFlow.AspNetCore not yet ported, requiring careful migration.
Requires defining numerous DDD constructs such as aggregates, commands, and events, which can be overwhelming for teams new to these patterns and increase initial development time.
Certain integrations, including Elasticsearch and Redis, are marked as not yet ported to v1, limiting options for projects that depend on these specific backends.