Skip to content

Commit 3e70380

Browse files
committed
release v1.0.0
1 parent 8f0fbb0 commit 3e70380

File tree

140 files changed

+13846
-1030
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

140 files changed

+13846
-1030
lines changed

CHANGELOG.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Changelog
2+
3+
All notable changes to SourceFlow.Net will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [1.0.0] - 2025-01-28
9+
10+
### Added
11+
12+
#### Core Framework (SourceFlow.Net)
13+
- Complete event sourcing implementation with Domain-Driven Design (DDD) principles
14+
- CQRS pattern implementation with command/query segregation
15+
- Aggregate pattern for managing root entities within bounded contexts
16+
- Saga orchestration for long-running transactions and workflow management
17+
- Event-first design with comprehensive event sourcing foundation
18+
- Command and event publishing/subscription infrastructure
19+
- View model projection system for read-optimized data models
20+
- Support for multiple .NET frameworks:
21+
- .NET 10.0
22+
- .NET 9.0
23+
- .NET Standard 2.1
24+
- .NET Standard 2.0
25+
- .NET Framework 4.6.2
26+
- OpenTelemetry integration for observability and tracing
27+
- Dependency injection support via Microsoft.Extensions.DependencyInjection
28+
- Structured logging support via Microsoft.Extensions.Logging
29+
30+
#### Entity Framework Store Provider (SourceFlow.Stores.EntityFramework)
31+
- `ICommandStore` implementation using Entity Framework Core
32+
- `IEntityStore` implementation using Entity Framework Core
33+
- `IViewModelStore` implementation using Entity Framework Core
34+
- Configurable connection strings per store type (separate or shared databases)
35+
- Support for .NET 10.0, .NET 9.0, and .NET 8.0
36+
- SQL Server database provider support
37+
- Polly-based resilience and retry policies
38+
- OpenTelemetry instrumentation for Entity Framework Core operations
39+
40+
#### Architecture & Patterns
41+
- Clean architecture principles
42+
- Separation of concerns between read and write models
43+
- Event-driven communication between aggregates
44+
- State preservation and consistency guarantees
45+
- Extensible framework design for custom implementations
46+
47+
### Documentation
48+
- Comprehensive README with architecture diagrams
49+
- Developer guide available on GitHub Wiki
50+
- Package documentation and XML comments
51+
- Architecture diagram showing complete system design
52+
- Roadmap for future cloud provider support (v2.0.0)
53+
54+
### Infrastructure
55+
- NuGet package generation on build
56+
- GitHub Actions CI/CD pipeline integration
57+
- CodeQL security analysis
58+
- Symbol packages for debugging support
59+
- MIT License
60+
61+
[1.0.0]: https://github.com/CodeShayk/SourceFlow.Net/releases/tag/v1.0.0

Images/Architecture-Complete.png

443 KB
Loading

Images/Architecture.png

428 KB
Loading

Images/Sourceflow.Net-Concept.drawio

Lines changed: 231 additions & 0 deletions
Large diffs are not rendered by default.

Images/Sourceflow.Net-ConceptFull.drawio

Lines changed: 382 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 65 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
# <img src="https://github.com/CodeShayk/SourceFlow.Net/blob/master/Images/ninja-icon-16.png" alt="ninja" style="width:30px;"/> SourceFlow.Net
2-
[![NuGet version](https://badge.fury.io/nu/SourceFlow.Net.svg)](https://badge.fury.io/nu/SourceFlow.Net)
32
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/CodeShayk/SourceFlow.Net/blob/master/LICENSE.md)
43
[![GitHub Release](https://img.shields.io/github/v/release/CodeShayk/SourceFlow.Net?logo=github&sort=semver)](https://github.com/CodeShayk/SourceFlow.Net/releases/latest)
54
[![master-build](https://github.com/CodeShayk/SourceFlow.Net/actions/workflows/Master-Build.yml/badge.svg)](https://github.com/CodeShayk/SourceFlow.Net/actions/workflows/Master-Build.yml)
65
[![master-codeql](https://github.com/CodeShayk/SourceFlow.Net/actions/workflows/Master-CodeQL.yml/badge.svg)](https://github.com/CodeShayk/SourceFlow.Net/actions/workflows/Master-CodeQL.yml)
7-
[![.Net 9.0](https://img.shields.io/badge/.Net-9.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/9.0)
8-
[![.Net Standard 2.1](https://img.shields.io/badge/.NetStandard-2.1-blue)](https://github.com/dotnet/standard/blob/v2.1.0/docs/versions/netstandard2.1.md)
9-
[![.Net Standard 2.0](https://img.shields.io/badge/.NetStandard-2.0-blue)](https://github.com/dotnet/standard/blob/v2.0.0/docs/versions/netstandard2.0.md)
10-
[![.Net Framework 4.6.2](https://img.shields.io/badge/.Net-4.6.2-blue)](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net46)
11-
126
<p align="center"> </p>
137
<p align="center">
148
<strong>A modern, lightweight, and extensible .NET framework for building event-sourced applications using Domain-Driven Design (DDD) principles and Command Query Responsibility Segregation (CQRS) patterns.</strong>
@@ -24,19 +18,78 @@ SourceFlow.Net empowers developers to build scalable, maintainable applications
2418
* ⚡ CQRS Implementation with Command/Query Segregation
2519
* 📊 Event-First Design with Event Sourcing Foundation
2620
* 🧱 Clean Architecture
27-
21+
22+
### Core Concepts
23+
24+
#### v1.0.0 Architecture
25+
26+
**Aggregates**
27+
- An `Aggregate` encapsulates a root domain entity within a bounded context (microservice)
28+
- Changes to aggregates are initiated by publishing commands
29+
- Aggregates subscribe to events to react to external changes from other sagas or workflows that may affect their state
30+
31+
**Sagas**
32+
- A `Saga` represents a long-running transaction that orchestrates complex business processes
33+
- Sagas subscribe to commands and execute the actual updates to aggregate entities
34+
- They manage both success and failure flows to ensure data consistency and preserve aggregate state
35+
- Sagas can publish commands to themselves or other sagas to coordinate multi-step workflows
36+
- Events can be raised by sagas during command handling to notify other components of state changes
37+
38+
**Events**
39+
- Events are published to interested subscribers when state changes occur
40+
- Two primary event subscribers exist in the framework:
41+
- **Aggregates**: React to events from external workflows that impact their domain state
42+
- **Views**: Project event data into optimized read models for query operations
43+
44+
**Views**
45+
- Views subscribe to events and transform domain data into denormalized view models
46+
- View models provide optimized read access for consumers such as UIs or reporting systems
47+
- Data in view models follows eventual consistency patterns
48+
49+
#### v2.0.0 Roadmap (Cloud Integration)
50+
51+
**Command Dispatcher**
52+
- Dispatches commands to cloud-based message queues for distributed processing
53+
- Targets specific command queues based on bounded context routing
54+
55+
**Command Queue**
56+
- A dedicated queue for each bounded context (microservice)
57+
- Routes incoming commands to the appropriate subscribing sagas within the domain
58+
59+
**Event Dispatcher**
60+
- Publishes domain events to cloud-based topics for cross-service communication
61+
- Enables event-driven architecture across distributed systems
62+
63+
**Event Listeners**
64+
- Bootstrap components that listen to subscribed event topics
65+
- Dispatch received events to the appropriate aggregates and views within each domain context
66+
- Enable seamless integration across bounded contexts
67+
68+
#### Architecture
69+
<img src="https://github.com/CodeShayk/SourceFlow.Net/blob/master/Images/Architecture-Complete.png" alt="architecture" style="width:1200px; hieght:700px"/>
70+
71+
### RoadMap
72+
73+
| Package | Version | Release Date |Details |.Net Frameworks|
74+
|------|---------|--------------|--------|-----------|
75+
|SourceFlow|v1.0.0 [![NuGet version](https://badge.fury.io/nu/SourceFlow.svg)](https://badge.fury.io/nu/SourceFlow)|29th Oct 2025|Core functionality for event sourcing and CQRS|[![.Net 10](https://img.shields.io/badge/.Net-10-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) [![.Net 9.0](https://img.shields.io/badge/.Net-9.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/9.0) [![.Net Standard 2.1](https://img.shields.io/badge/.NetStandard-2.1-blue)](https://github.com/dotnet/standard/blob/v2.1.0/docs/versions/netstandard2.1.md) [![.Net Standard 2.0](https://img.shields.io/badge/.NetStandard-2.0-blue)](https://github.com/dotnet/standard/blob/v2.0.0/docs/versions/netstandard2.0.md) [![.Net Framework 4.6.2](https://img.shields.io/badge/.Net-4.6.2-blue)](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net46)|
76+
|SourceFlow.Stores.EntityFramework|v1.0.0 [![NuGet version](https://badge.fury.io/nu/SourceFlow.Stores.EntityFramework.svg)](https://badge.fury.io/nu/SourceFlow.Stores.EntityFramework)|29th Oct 2025|Provides store implementation using EF. Can configure different (types of ) databases for each store.|[![.Net 10](https://img.shields.io/badge/.Net-10-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) [![.Net 9.0](https://img.shields.io/badge/.Net-9.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/9.0) [![.Net 8.0](https://img.shields.io/badge/.Net-8.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) |
77+
|SourceFlow.Cloud.AWS|v2.0.0 |(TBC) |Provides support for AWS cloud with cross domain boundary command and Event publishing & subscription.|[![.Net 10](https://img.shields.io/badge/.Net-10-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) [![.Net 9.0](https://img.shields.io/badge/.Net-9.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/9.0) [![.Net 8.0](https://img.shields.io/badge/.Net-8.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)|
78+
|SourceFlow.Cloud.Azure|v2.0.0 |(TBC) |Provides support for Azure cloud with cross domain boundary command and Event publishing & subscription.|[![.Net 10](https://img.shields.io/badge/.Net-10-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) [![.Net 9.0](https://img.shields.io/badge/.Net-9.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/9.0) [![.Net 8.0](https://img.shields.io/badge/.Net-8.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)|
79+
2880
## Getting Started
2981
### Installation
30-
nuget add package SourceFlow.Net
31-
> - dotnet add package SourceFlow.Net
32-
> - dotnet add package SourceFlow.Net.SqlServer (to be released)
33-
> - or your preferred storage
82+
add nuget packages for SourceFlow.Net
83+
> - dotnet add package SourceFlow
84+
> - dotnet add package SourceFlow.Stores.EntityFramework
85+
> - dotnet add package SourceFlow.Cloud.Aws (to be released)
86+
> - Your custom implementation for stores, and cloud.
87+
3488
### Developer Guide
3589
This comprehensive guide provides detailed information about the SourceFlow.Net framework, covering everything from basic concepts to advanced implementation patterns and troubleshooting guidelines.
3690

3791
Please click on [Developer Guide](https://github.com/CodeShayk/SourceFlow.Net/wiki) for complete details.
3892

39-
4093
## Support
4194

4295
If you are having problems, please let me know by [raising a new issue](https://github.com/CodeShayk/SourceFlow.Net/issues/new/choose).

SourceFlow.Net.sln

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 17
4-
VisualStudioVersion = 17.13.35828.75
3+
# Visual Studio Version 18
4+
VisualStudioVersion = 18.0.11205.157
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
77
EndProject
@@ -17,8 +17,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "misc", "misc", "{4F977993-F
1717
EndProject
1818
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceFlow.Core.Tests", "tests\SourceFlow.Core.Tests\SourceFlow.Core.Tests.csproj", "{60461B85-D00F-4A09-9AA6-A9D566FA6EA4}"
1919
EndProject
20-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceFlow.ConsoleApp", "src\SourceFlow.ConsoleApp\SourceFlow.ConsoleApp.csproj", "{43C0A7B4-6682-4A49-B932-010F0383942A}"
21-
EndProject
2220
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceFlow", "src\SourceFlow\SourceFlow.csproj", "{C0724CCD-8965-4BE3-B66C-458973D5EFA1}"
2321
EndProject
2422
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "github", "github", "{F81A2C7A-08CF-4E53-B064-5C5190F8A22B}"
@@ -31,6 +29,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "github", "github", "{F81A2C
3129
.github\workflows\Release-CI.yml = .github\workflows\Release-CI.yml
3230
EndProjectSection
3331
EndProject
32+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceFlow.Stores.EntityFramework", "src\SourceFlow.Net.EntityFramework\SourceFlow.Stores.EntityFramework.csproj", "{C8765CB0-C453-0848-D98B-B0CF4E5D986F}"
33+
EndProject
34+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceFlow.Stores.EntityFramework.Tests", "tests\SourceFlow.Net.EntityFramework.Tests\SourceFlow.Stores.EntityFramework.Tests.csproj", "{C56C4BC2-6BDC-EB3D-FC92-F9633530A501}"
35+
EndProject
3436
Global
3537
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3638
Debug|Any CPU = Debug|Any CPU
@@ -41,22 +43,27 @@ Global
4143
{60461B85-D00F-4A09-9AA6-A9D566FA6EA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
4244
{60461B85-D00F-4A09-9AA6-A9D566FA6EA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
4345
{60461B85-D00F-4A09-9AA6-A9D566FA6EA4}.Release|Any CPU.Build.0 = Release|Any CPU
44-
{43C0A7B4-6682-4A49-B932-010F0383942A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45-
{43C0A7B4-6682-4A49-B932-010F0383942A}.Debug|Any CPU.Build.0 = Debug|Any CPU
46-
{43C0A7B4-6682-4A49-B932-010F0383942A}.Release|Any CPU.ActiveCfg = Release|Any CPU
47-
{43C0A7B4-6682-4A49-B932-010F0383942A}.Release|Any CPU.Build.0 = Release|Any CPU
4846
{C0724CCD-8965-4BE3-B66C-458973D5EFA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
4947
{C0724CCD-8965-4BE3-B66C-458973D5EFA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
5048
{C0724CCD-8965-4BE3-B66C-458973D5EFA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
5149
{C0724CCD-8965-4BE3-B66C-458973D5EFA1}.Release|Any CPU.Build.0 = Release|Any CPU
50+
{C8765CB0-C453-0848-D98B-B0CF4E5D986F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
51+
{C8765CB0-C453-0848-D98B-B0CF4E5D986F}.Debug|Any CPU.Build.0 = Debug|Any CPU
52+
{C8765CB0-C453-0848-D98B-B0CF4E5D986F}.Release|Any CPU.ActiveCfg = Release|Any CPU
53+
{C8765CB0-C453-0848-D98B-B0CF4E5D986F}.Release|Any CPU.Build.0 = Release|Any CPU
54+
{C56C4BC2-6BDC-EB3D-FC92-F9633530A501}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
55+
{C56C4BC2-6BDC-EB3D-FC92-F9633530A501}.Debug|Any CPU.Build.0 = Debug|Any CPU
56+
{C56C4BC2-6BDC-EB3D-FC92-F9633530A501}.Release|Any CPU.ActiveCfg = Release|Any CPU
57+
{C56C4BC2-6BDC-EB3D-FC92-F9633530A501}.Release|Any CPU.Build.0 = Release|Any CPU
5258
EndGlobalSection
5359
GlobalSection(SolutionProperties) = preSolution
5460
HideSolutionNode = FALSE
5561
EndGlobalSection
5662
GlobalSection(NestedProjects) = preSolution
5763
{60461B85-D00F-4A09-9AA6-A9D566FA6EA4} = {653DCB25-EC82-421B-86F7-1DD8879B3926}
58-
{43C0A7B4-6682-4A49-B932-010F0383942A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
5964
{C0724CCD-8965-4BE3-B66C-458973D5EFA1} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
65+
{C8765CB0-C453-0848-D98B-B0CF4E5D986F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
66+
{C56C4BC2-6BDC-EB3D-FC92-F9633530A501} = {653DCB25-EC82-421B-86F7-1DD8879B3926}
6067
EndGlobalSection
6168
GlobalSection(ExtensibilityGlobals) = postSolution
6269
SolutionGuid = {D02B8992-CC81-4194-BBF7-5EC40A96C698}

0 commit comments

Comments
 (0)