Note: This project is under active development.

Technology Stack

Overview

The Event Sourcing Reference Platform is built using modern Microsoft technologies and Azure Platform as a Service (PaaS) offerings. The technology selection reflects a production-oriented architecture focused on scalability, maintainability, security and operational simplicity.

The objective of this project is not simply to demonstrate individual technologies, but to showcase how they can be combined to implement a robust, cloud-native event-sourced system.


Application Stack

Layer Technology
Frontend Angular
Backend ASP.NET Core (.NET 10)
Language C# 14
Authentication Microsoft Entra ID
API Documentation OpenAPI (Swagger)

Azure Platform

Service Purpose
Azure App Service Hosts the Web API and Angular application
Azure Cosmos DB Event Store
Azure SQL Database Read Model Projections
Azure Service Bus Topics Event distribution
Azure Blob Storage Static assets and future archival
Application Insights Application telemetry
Log Analytics Centralised logging and diagnostics

Data Platform

The solution intentionally separates write and read persistence.

Azure Cosmos DB

Azure Cosmos DB stores immutable domain events that represent the complete history of each aggregate.

Benefits include:

Azure SQL Database

Azure SQL Database stores denormalised read models generated by projection workers.

Benefits include:


Messaging

Azure Service Bus Topics distribute committed domain events to downstream consumers.

Projection Functions consume events asynchronously to build and maintain SQL read models without impacting command processing performance.

Benefits include:


Authentication

Authentication is provided using Microsoft Entra ID.

Security principles include:


Infrastructure as Code

Infrastructure is provisioned using Bicep.

Benefits include:


Continuous Integration & Deployment

Azure DevOps pipelines automate:

Planned enhancements include:


Observability

Operational visibility is provided through:

These capabilities provide rapid diagnosis of failures while supporting production monitoring.


Development Tools

Tool Purpose
Visual Studio 2026 Primary IDE
Git Source Control
GitHub Source repository and documentation
Azure DevOps CI/CD pipelines
Bicep Infrastructure as Code
Structurizr DSL C4 architecture diagrams
Postman API testing

Technology Selection Rationale

.NET 10

Provides a modern, high-performance framework for building scalable cloud-native services with excellent tooling and long-term Microsoft support.

Angular

Provides a mature, enterprise-ready frontend framework suitable for large business applications.

Azure Cosmos DB

Selected as the Event Store because it supports scalable append-only event streams with optimistic concurrency.

Azure SQL Database

Selected for read model projections due to its excellent support for reporting, dashboards and relational queries.

Azure Service Bus Topics

Provides reliable distribution of committed domain events while allowing projection workers to scale independently.

Microsoft Entra ID

Provides enterprise-grade authentication using industry-standard OAuth 2.0 and OpenID Connect protocols.

Azure App Service

Provides a fully managed hosting platform with built-in scaling, monitoring and deployment capabilities.


Design Principles

Technology choices throughout this project are guided by the following principles:


Planned Enhancements

Future iterations of this project will introduce additional technologies and architectural capabilities, including: