Skip to content
CAI
Software that uses CAICheck a score

chrissimon-au/tdd-ddd-demo-dotnet

73.0

Strong · 21 September 2026

382

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.