Andyhacool/HRM
37.0
Weak · 21 September 2026
3k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a .NET Core application that implements an event-sourced architecture to track and persist domain events. It utilizes a SQL-based event store to record and retrieve the history of aggregates, ensuring that all domain events are captured for audit or replay purposes. The codebase has been updated to use specific versions of .NET Core and Entity Framework Core, with obsolete test projects removed from the build configuration.
Features
Added event sourcing infrastructure for SQL-based event storage
The data layer now includes a new \EventSourcingContext\ and \SqlEventStore\ implementation to persist domain events to a SQL database. This introduces a \StoredEvent\ table and associated Entity Framework Core migrations, enabling the system to record and retrieve event history for aggregates via the \IEventStoreRepository\.
src/HRM.Infra.Data · high confidence
Introduced event sourcing infrastructure with event store interface and storage model
Added the core building blocks for event sourcing in the HRM domain. The new IEventStore interface defines a generic Save method for persisting events, while the StoredEvent class provides the concrete model for storing event data, user context, and aggregate identifiers. This establishes the foundation for tracking and replaying domain events.
HRM.Domain.Core, src/HRM.Domain.Core · medium confidence
Behavioural changes
Add MIT License and remove obsolete unit test project
The repository now includes an MIT License file, clarifying the software's usage and distribution rights. Additionally, the solution file (HRM.sln) has been updated to remove the 'HRM.Infrastructure.UnitTests' project, indicating that this specific unit test suite is no longer part of the build configuration.
(repo-wide) · high confidence
Event sourcing integration for domain events
The in-memory message bus now persists domain events to an event store before publishing them, ensuring that all domain events are recorded for audit or replay purposes. This is supported by registering the event store dependencies (IEventStore, EventStoreRepository, and EventSourcingContext) in the IoC container.
src/HRM.Infra.CrossCutting.Bus, src/HRM.Infra.CrossCutting.IoC · medium confidence
Dependencies
Update .NET Core and EF Core dependencies
The project files have been updated to use newer versions of key .NET libraries. Microsoft.AspNetCore.App and Microsoft.AspNetCore.Razor.Design are upgraded to version 2.2.5 and 2.2.0 respectively. Additionally, Microsoft.EntityFrameworkCore and its related packages (Design, SqlServer, Tools) are upgraded from version 2.2.2 to 2.2.4. The .NET Core runtime is also explicitly set to version 2.2.0 in the domain core project.
(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
Score
- CAI 40 → 37 (-3.4)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 63 → 61 (-1.9)
- Architecture 73 → 73 (+0.0)
- Maturity 68 → 68 (+0.0)
- Readiness 29 → 27 (-2.7)
- Security 37 → 33 (-4.2)
- Domain Modelling 51 → 44 (-6.7)
- Event-Driven 100 → 100 (+0.0)
Resolved (13)
- Bounded contexts not declared
- High CVE: Microsoft.NETCore.App 2.2.0
- High CVE: Microsoft.NETCore.App 2.2.0
- Medium CVE: Microsoft.NETCore.App 2.2.0
- Medium CVE: System.Data.SqlClient 4.6.0
- Mock framework: Moq
- No exposed public API
- Secret: generic-api-key (src/HRM.WebApi/appsettings.json)
- Test runner surfaced no tests
- 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
New (18)
- Documentation: no installation or build instructions (README.md)
- Duplicated block (7 lines × 2) (src/HRM.Domain/Validations/EmployeeValidation.cs)
- Duplicated block (8 lines × 3) (src/HRM.Infra.CrossCutting.Identity/Models/AppIdentityDbContext.cs)
- End-of-life runtime: .NET netcoreapp2.2
- High CVE: Microsoft.NETCore.App 2.2.0
- High secret: WD-SECRET-0002 (src/HRM.WebApi/appsettings.json)
- Inconsistent naming convention for address components. 'City', 'Country', and 'Street' are simple nouns, whereas 'State' is also a simple noun but the parameter 'string state' in the UpdateAddress method suggests a potential mismatch in casing or naming if it were a property. However, the more significant inconsistency is between the property names in Address (City, Country, Street, State) vs the parameter names in UpdateAddress (string, string, string, string) which are unnamed, but looking at other address-related properties like 'HRM.Domain.Employee.Address' (complex) vs 'HRM.Domain.SharedKernel.Address' (complex), the properties inside Address are consistent. Wait, looking closer at the list: HRM.Domain.SharedKernel.Address.City, Country, Street. There is no State property listed in the Address type, but there is a parameter string state in UpdateAddress. This is a parameter, not a property. Let's look for a clearer inconsistency.
Actually, looking at HRM.Domain.Commands.EmployeeCommand properties: Created_Date, Date_Left, Note, ZipCode. ZipCode is camelCase/PascalCase compound, while Created_Date and Date_Left use underscores. This is a clear inconsistency within the same type.
- Inconsistent naming convention for date properties within the EmployeeCommand type. 'Created_Date' uses a prefix, while 'Date_Left' uses a suffix. Standard convention typically prefers one style (e.g., 'CreatedDate' and 'LeftDate' or 'DateCreated' and 'DateLeft') for consistency.
- Leaked secret: signing-key (src/HRM.WebApi/appsettings.json)
- Mock framework: Moq
- Mock framework: Moq
- Test project verifies nothing: HRM.Infrastructure.UnitTests (src/HRM.Infrastructure.UnitTests/UnitTest1.cs)
- WriteOnlyPrivateField (src/HRM.Application/Services/AccountAppService.cs)
- WriteOnlyPrivateField (src/HRM.Domain/CommandHandlers/EmployeeCommandHandler.cs)
- WriteOnlyPrivateField (src/HRM.Domain/CommandHandlers/EmployeeCommandHandler.cs)
- WriteOnlyPrivateField (src/HRM.WebApi/Controllers/AccountController.cs)
- redundant comment (src/HRM.Domain/Entities/Employee.cs)
- redundant comment (src/HRM.Domain/Entities/Identity/User.cs)
API surface
- Unchanged — 8 HTTP endpoints
Architecture
- Unchanged — 2 containers · 2 contexts · 1 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
Andyhacool/HRM 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 db19dca3843e7d2e1b0c05b9a3607c80f316a224 — 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.