OKTAYKIR/EventFlow.Example
60.2
Adequate · 6 October 2026
799
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is an example application demonstrating the EventFlow framework for implementing Command Query Responsibility Segregation (CQRS) and Event Sourcing patterns in .NET. It showcases core capabilities such as managing aggregate state with MongoDB snapshotting, orchestrating complex workflows via sagas, and scheduling background jobs using Hangfire. The architecture integrates RabbitMQ for event publishing, EventStore for persistence, and PostgreSQL for read models, supported by integration tests to verify end-to-end behavior.
Features
Added EventStore integration extension for EventFlow
Introduced a new extension method in EventStoreExtension.cs that configures the EventFlow framework to use EventStore as the event store backend. This setup connects to a local EventStore instance at tcp://localhost:1113 using default admin credentials, enables verbose logging, and configures automatic reconnection and retry policies.
EventStore · high confidence
Added JobScheduler example demonstrating synchronous event handling
The SyncEventHandler location now includes a complete example application that demonstrates how to configure and run synchronous event subscribers within the EventFlow framework. The entry point (Program.cs) sets up a host using Hangfire for job scheduling and registers an example job, while supporting files (ExampleAggregate.cs, ExampleEvent.cs, ExampleSyncSubscriber.cs) provide the necessary aggregate, event definition, and a synchronous subscriber implementation that logs domain events to the console.
SyncEventHandler · high confidence
Initial EventFlow example application with saga and job scheduling
The EventFlow.Example project introduces a complete demonstration of the EventFlow framework, featuring an ExampleAggregate that manages a magic number and counter with MongoDB-based snapshotting. The example showcases advanced orchestration patterns, including an ExampleSaga that automatically triggers a reset command upon specific events, and a JobScheduler that schedules background jobs. It also includes a custom LogCommandBus decorator for logging, a read model for tracking state, and a synchronous subscriber, all wired together in Program.cs to publish commands via RabbitMQ.
EventFlow.Example · high confidence
Initial commit of EventFlow CQRS/ES example project
This change introduces the initial codebase for an EventFlow-based CQRS and Event Sourcing example application. It includes a Visual Studio solution file defining three projects (Example, EventStore, Tests), a Jekyll configuration for the GitHub Pages site, and a comprehensive README detailing the architecture. The project demonstrates DDD+CQRS+Event-sourcing patterns using EventFlow, configured with RabbitMQ for event publishing, EventStore for the event store, MongoDB for snapshot storage, and PostgreSQL for the read store, targeting .NET Core 2.2.
(repo-wide) · high confidence
Test coverage
Added integration tests for EventFlow example application
Added new test files in EventFlow.Tests to verify the end-to-end behavior of the EventFlow example application. The suite includes an IntegrationTestBase for shared configuration and two specific tests: one validating command execution and aggregate state persistence, and another verifying that read models are correctly updated via asynchronous subscribers.
EventFlow.Tests · high confidence
Dependencies
Initial project structure and dependency configuration for EventFlow samples
This change introduces the initial project files for the EventFlow solution, establishing the dependency baseline for the example application, test suite, event store implementation, and sync event handler. The EventFlow.Example project targets .NET Core 2.2 and references EventFlow 0.77.4077 along with integrations for Autofac, MongoDB, RabbitMQ, and EventStore. The EventFlow.Tests project targets .NET Core 3.1, utilizing xUnit and MongoDB.Driver 2.10.4 to test the example. The EventStore project targets .NET Standard 2.0 and depends on EventFlow.EventStores.EventStore 0.77.4023. The SyncEventHandler project also targets .NET Core 2.2, relying on EventFlow 0.77.4077, EventFlow.RabbitMQ 0.77.4023, and Microsoft.Extensions.Hosting 3.0.0.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 61 → 60 (-0.5)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 73 → 73 (-0.1)
- Architecture 99 → 99 (+0.0)
- Maturity 64 → 68 (+3.7)
- Readiness 49 → 46 (-2.8)
- Security 78 → 73 (-4.5)
- Domain Modelling 100 → 100 (+0.0)
- Performance 71 → 71 (+0.0)
Resolved (7)
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)
- Documentation: no usage examples (README.md)
- Typo in method name: 'SetMagicNumer' is missing the 'b' compared to the property/field name 'MagicNumber' used consistently across the codebase (Sagas, Commands, Snapshots, Events, ReadModels).
- Typo in type name: 'ExampleSnaphost' is used for the snapshot aggregate/root, while 'ExampleSnapshotVersion' uses the correct spelling 'Snapshot'. This creates a confusing inconsistency in the core domain vocabulary.
- redundant comment (EventFlow.Example/Aggregates/ExampleAggregate.cs)
- redundant comment (EventFlow.Example/Aggregates/Sagas/ExampleSaga.cs)
New (6)
- The method 'SetMagicNumer' contains a typo ('Numer' instead of 'Number'), whereas the property and field it modifies are consistently named 'MagicNumber'.
- The type representing a snapshot is misspelled as 'ExampleSnaphost' (missing 's') in the type declaration and its members, while the version type and method parameters correctly use 'Snapshot'. This creates a confusing inconsistency between the snapshot entity and its version/usage.
- Two distinct types named 'ExampleSyncSubscriber' exist in different namespaces ('EventFlow.Documentation.GettingStarted' vs 'EventFlowExample.Aggregates.Subscribers'). While they may serve different purposes (documentation vs implementation), the identical name in a codebase with 'Example' prefixes suggests potential confusion or copy-paste duplication without distinct differentiation in naming.
- Whole file has no live code — 1 debt marker inside it (SyncEventHandler/ExampleEvent.cs)
- Whole file has no live code — 2 debt markers inside it (SyncEventHandler/ExampleAggregate.cs)
- XML-doc coverage: SyncEventHandler (SyncEventHandler/SyncEventHandler.csproj)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
OKTAYKIR/EventFlow.Example was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 6 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 5f1ea82a63176819bda0099a7bc85d570c16072c — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-1f9c535fa862.