misiukanis/simple-shop
37.3
Weak · 20 September 2026
2.3k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a .NET 9-based e-commerce application that manages customers, products, and orders. It employs a CQRS architecture with event sourcing to persist state changes and uses MongoDB read models to serve query data. The implementation relies on MediatR for command handling and FluentValidation for input validation.
Features
Shop application layer implements CQRS with event sourcing and MongoDB read models
The Shop application layer now uses a Command-Query Responsibility Segregation (CQRS) architecture built on MediatR and FluentValidation. Commands for creating, updating, and deleting Customers, Products, and Orders are handled by dedicated handlers that persist state changes to an event store and dispatch domain events. These events are processed by handlers that update MongoDB-based read models (Customer, Product, Order), which are then exposed via queries returning DTOs. AutoMapper is used to map between domain events, read models, and DTOs, while a validation pipeline behavior ensures all commands are validated before processing.
Shop, Shop.Domain, Shop/Shop/wwwroot · high confidence
Dependencies
Shop project upgraded to .NET 9 with updated dependencies
The Shop application and its supporting layers (Domain, Application, Infrastructure, Resources, Shared, and UnitTests) have been migrated to the .NET 9.0 target framework. This update includes specific dependency upgrades such as AutoMapper to version 14.0.0, MongoDB.Driver to 3.2.1, and Microsoft.Extensions.Configuration packages to 9.0.3, alongside the introduction of new packages like EventStore.Client.Grpc.Streams and Blazored components in the respective layers.
(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
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 42 → 37 (-5.1)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 82 → 81 (-0.1)
- Architecture 79 → 79 (+0.0)
- Maturity 61 → 59 (-2.0)
- Readiness 33 → 34 (+1.0)
- Security 43 → 40 (-2.2)
- Domain Modelling 77 → 69 (-8.3)
- Event-Driven 100 → 100 (+0.0)
- Accessibility 42 → 28 (-14.3)
Resolved (10)
- Bounded contexts not declared
- Coverage not measured — analyzer environment
- No exposed public API
- The README has no separate architecture/design document for Shop.Application, Shop.Infrastructure, or Shop.Domain namespaces. (README.md)
- early-stage repository — too few commits for a meaningful bus factor
- early-stage repository — too little history to judge knowledge freshness
- git history depth insufficient
- git history depth insufficient
- redundant comment (Shop/Shop.Infrastructure/Persistence/DatabaseInitializer.cs)
- redundant comment (Shop/Shop/Program.cs)
New (8)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (13 lines × 2) (Shop/Shop.Application/DTOs/OrderDTO.cs)
- End-of-life runtime: .NET net9.0
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- Spelling inconsistency: 'Occured' is a typo for 'Occurred'. While this is a single instance, it violates the standard English spelling convention used elsewhere in the codebase (e.g., 'Occurred' is the correct past participle). If this is a fixed key in a resource file, it should be corrected to 'ErrorOccurred' to match standard spelling, unless 'ErrorOccured' is an anchored wire-format key (which is unlikely for a generic error message).
API surface
- Unchanged — 13 HTTP endpoints
Architecture
- Unchanged — 2 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
misiukanis/simple-shop 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 20 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 23b4cce9ca8a0fdd34c7e6d6e6c16a2885823dbb — 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.