chrissimon-au/tdd-ddd-demo-dotnet
73.0
Strong · 21 September 2026
382
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a .NET 8-based University API that manages academic resources including students, courses, rooms, and enrolments. It provides endpoints for registering students, maintaining course and room catalogs, and processing student enrolments. Additionally, it features an automated scheduling service that assigns courses to rooms based on capacity constraints.
Features
Add student-course enrolment API
The Enroling area now exposes endpoints to enrol a student in a course. The POST /students/{studentId}/courses route accepts a CourseId and, upon successful enrolment, returns a 201 Created response with a Location header pointing to the new enrolment. The GET /enrolments/{id} route retrieves an existing enrolment. The response payload includes the enrolment Id, StudentId, and CourseId.
ChrisSimonAu.UniversityApi/Enroling · high confidence
Added development environment configuration and project scaffolding
The repository now includes a complete development environment setup using devenv and direnv, allowing developers to easily configure their local environment with .NET, watchexec, and pre-commit hooks. Additionally, the project structure has been initialized with a solution file, a main API project, and a test project, along with utility scripts for initialization and watching tests.
(repo-wide) · high confidence
Initial release of the University API with student, course, room, and enrolment management
The University API is introduced, providing endpoints to register and retrieve students, as well as manage courses, rooms, and enrolments. The application is configured to use an in-memory SQLite database for development and testing, with Entity Framework Core set up to handle the data context. This includes a Students controller for registering and fetching students, alongside the necessary context and request models.
ChrisSimonAu.UniversityApi · high confidence
Introduce automated course scheduling endpoint
A new POST /schedules endpoint has been added to automatically generate a course schedule. The controller retrieves course enrolment data and available rooms, then uses a greedy algorithm to assign courses to rooms based on enrolment size and room capacity.
ChrisSimonAu.UniversityApi/Scheduling · medium confidence
Introduce room management API
Added a new Rooms API that allows users to create and retrieve room entities. The Room entity now includes a capacity check to ensure courses fit within the room's limits. The RoomsController exposes POST and GET endpoints for room creation and retrieval, with the POST endpoint returning a 201 Created status and a location header.
ChrisSimonAu.UniversityApi/Rooms · high confidence
Behavioural changes
Add course catalog and retrieval endpoints
The API now supports including a new course in the catalog and retrieving course details by ID. The CoursesController exposes a POST endpoint to create a course and a GET endpoint to fetch it, returning a CourseResponse containing the course ID, name, and associated room ID. The Course entity has been refactored to store the room as a related entity rather than just a room ID, and the controller uses the database context to save and retrieve courses.
ChrisSimonAu.UniversityApi/Courses · medium confidence
Test coverage
Added global using for xUnit; Added integration tests for the course catalog API; Added tests for room management API; Added tests for student course enrolment; Added tests for student registration and retrieval; Added unit and integration tests for the scheduling feature.
Dependencies
New test project and API project definitions for .NET 8
Added .csproj files for the main API and the new test project, establishing the .NET 8.0 target framework. The API project now references Microsoft.EntityFrameworkCore (Sqlite, Proxies), Microsoft.AspNetCore.OpenApi, and Swashbuckle.AspNetCore. The test project references xUnit, Microsoft.NET.Test.Sdk, Microsoft.AspNetCore.Mvc.Testing, and coverlet.collector, enabling in-memory integration testing.
(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
Score
- CAI 73 → 73 (-0.1)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 81 → 80 (-1.4)
- Architecture 69 → 69 (+0.0)
- Maturity 80 → 80 (+0.0)
- Readiness 72 → 72 (-0.0)
- Security 88 → 88 (+0.4)
Resolved (6)
- No exposed public API
- no production source files with tracked history to analyse
- redundant comment (ChrisSimonAu.UniversityApi/Program.cs)
- redundant comment (ChrisSimonAu.UniversityApi/Program.cs)
- redundant comment (ChrisSimonAu.UniversityApi/Program.cs)
- single-maintainer — knowledge-concentration (bus factor) risk
New (7)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- The namespace and type names use the non-standard spelling 'Enroling' (missing the second 'l' compared to the standard 'Enrolling'). While consistent within itself, this is a distinct orthographic deviation from the standard English spelling used in the rest of the codebase (e.g., 'Register', 'Student'). However, since it is consistent across the namespace, type, and test class, it is not an internal inconsistency.
- WriteOnlyPrivateField (ChrisSimonAu.UniversityApi.Tests/Courses/CourseApi.cs)
- redundant comment (ChrisSimonAu.UniversityApi/Program.cs)
- redundant comment (ChrisSimonAu.UniversityApi/Program.cs)
- redundant comment (ChrisSimonAu.UniversityApi/Program.cs)
API surface
- Unchanged — 9 HTTP endpoints
Architecture
- Unchanged — 2 containers · 0 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
chrissimon-au/tdd-ddd-demo-dotnet 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 404c1b6eb08d8e4088b10da43fc69efc56c52396 — 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.