XerProjects/Xer.Cqrs
33.4
Weak · 21 September 2026
1.4k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a CQRS (Command Query Responsibility Segregation) library designed for .NET, providing core abstractions for command handling, event publishing, and domain-driven design. It includes a domain event publisher and supports integration with ASP.NET Core and console applications through sample implementations. The codebase is structured to facilitate the development of scalable, event-driven architectures.
Features
Add ASP.NET Core and Console samples using Xer.Delegator
New samples are added to demonstrate the Xer framework in two contexts: an ASP.NET Core application and a console application. The ASP.NET Core sample provides a product management API with multiple startup configurations (simple, attribute, container, and mixed registration) and uses the Xer.Delegator for command and event handling. The console sample demonstrates a command-line interface for product operations, also leveraging Xer.Delegator for command delegation. Both samples utilize the Xer.Cqrs and Xer.DomainDriven libraries for CQRS and domain-driven design patterns.
Samples · high confidence
Added DomainEventPublisher for domain event publishing
A new DomainEventPublisher class has been added to the Xer.Cqrs library. This component implements the IDomainEventPublisher interface and delegates the actual publishing of domain events via an EventDelegator, providing an asynchronous PublishAsync method for handling domain event streams.
Src/Xer.Cqrs · high confidence
Initial project structure and build automation
The repository was initialized with a complete CQRS library structure, including a solution file (Xer.Cqrs.sln) defining the main library and sample projects (Console, Domain, ReadSide, Infrastructure, AspNetCore). The change also introduces a Cake-based build system (build.cake, build.ps1, build.sh) to automate cleaning, restoring, building, testing, and packing NuGet packages, alongside CI configuration (appveyor.yml) and standard repository files (.gitattributes, .gitignore, LICENSE, README.md).
(repo-wide) · high confidence
Dependencies
Add .NET Core sample projects and update build tooling
This change introduces new sample projects for ASP.NET Core and a console application, both targeting .NET Core 2.0, alongside a domain and infrastructure layer targeting .NET Standard 2.0. The Xer.Cqrs library is updated to target netstandard1.0 and includes dependencies on Xer.Cqrs.CommandStack, Xer.Cqrs.EventStack, and Xer.DomainDriven. Additionally, the Cake build tooling is updated to version 0.26.1.
(dependencies) · medium 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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 36 → 33 (-2.2)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 82 → 82 (-0.2)
- Architecture 69 → 69 (+0.0)
- Maturity 49 → 49 (+0.0)
- Readiness 26 → 23 (-2.6)
- Security 29 → 26 (-2.5)
- Domain Modelling 60 → 55 (-4.8)
Resolved (29)
- CommentedOutCode (Samples/AspNetCore/Startup/StartupWithAttributeRegistration.cs)
- CommentedOutCode (Samples/AspNetCore/Startup/StartupWithAttributeRegistration.cs)
- CommentedOutCode (Samples/AspNetCore/Startup/StartupWithAttributeRegistration.cs)
- CommentedOutCode (Samples/AspNetCore/Startup/StartupWithAttributeRegistration.cs)
- CommentedOutCode (Samples/AspNetCore/Startup/StartupWithAttributeRegistration.cs)
- CommentedOutCode (Samples/AspNetCore/Startup/StartupWithAttributeRegistration.cs)
- Duplicated block (12 lines × 3) (Samples/AspNetCore/Startup/StartupWithContainerRegistration.cs)
- Duplicated block (14 lines × 2) (Samples/AspNetCore/Startup/StartupWithMixedRegistration.cs)
- High CVE: Microsoft.AspNetCore.Identity 2.0.2
- High CVE: Microsoft.AspNetCore.Identity 2.0.2
- High CVE: Microsoft.AspNetCore.Server.Kestrel.Core 2.0.2
- High CVE: System.Net.Security 4.3.0
- High CVE: System.Net.Security 4.3.0
- High CVE: System.Security.Cryptography.Xml 4.4.0
- High CVE: System.Security.Cryptography.Xml 4.4.0
- Medium CVE: Microsoft.AspNetCore.All 2.0.7
- Medium CVE: Microsoft.AspNetCore.All 2.0.7
- Medium CVE: Microsoft.AspNetCore.Server.Kestrel.Core 2.0.2
- Medium CVE: Microsoft.AspNetCore.Server.Kestrel.Core 2.0.2
- Medium CVE: Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv 2.0.2
- …and 9 more
New (20)
- CommentedOutCode (Samples/AspNetCore/Program.cs)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (14–16 lines × 3) (Samples/AspNetCore/Startup/StartupWithContainerRegistration.cs)
- Duplicated block (46 lines × 2) (Samples/AspNetCore/Startup/StartupWithMixedRegistration.cs)
- End-of-life runtime: .NET netcoreapp2.0
- High CVE: Microsoft.AspNetCore.Identity 2.0.2
- High CVE: System.Net.Security 4.3.0
- High CVE: System.Security.Cryptography.Xml 4.4.0
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium CVE: Microsoft.AspNetCore.All 2.0.7
- No SBOM
- No artifact signing
- No build provenance
- No dependency advisory monitoring
- The Name property is defined on the base class UseCaseBase and interface IUseCase, and is inherited by specific use cases. However, the specific use case classes (e.g., DeactivateProductUseCase) also have a Name property listed in the symbols, which might imply shadowing or redundant definition. More importantly, the naming Name is generic. While consistent across the hierarchy, it lacks semantic clarity compared to DisplayName or Title often used for user-facing or descriptive strings. However, since it is consistent across all related types, this is a style observation, not an inconsistency.
- The parameter input in QueryAllProductsHandler.HandleAsync and inputOperation in ConsoleApp.Program.Setup are both string parameters representing user input or operation commands. While inputOperation is more descriptive, input is overly generic and inconsistent with the more specific naming convention used elsewhere for similar command/input parameters (e.g., command, query).
- Whole file has no live code — 6 debt markers inside it (Samples/AspNetCore/Startup/StartupWithAttributeRegistration.cs)
- bus factor 1 — one contributor carries this repository
API surface
- Unchanged — 4 HTTP endpoints
Architecture
- Unchanged — 0 containers · 1 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
XerProjects/Xer.Cqrs 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 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit da4d8d76850461cebe6921c091b4a6721c7b8de4 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.