Skip to content
CAI
Software that uses CAICheck a score

mkopylec/project-manager

43.0

Weak · 21 September 2026

501

lines of production code

Java

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Spring Boot-based application for managing car sales and inventory, structured with a layered architecture that coordinates between a REST API, domain models, and MongoDB persistence. It features robust error handling with a custom exception hierarchy and standardized HTTP error responses. The codebase includes comprehensive integration testing utilities and follows a Domain-Driven Design approach, as evidenced by the workshop instructions and domain-specific logic for orders and inventory.

Features

Add domain exception hierarchy and global error handling

The application now includes a structured domain exception hierarchy (DomainException, EntityAlreadyExistsException, InvalidEntityException, MissingEntityException) with an associated ErrorCode enum, enabling precise error identification. An ErrorHandler class provides global exception handling, mapping specific domain exceptions to appropriate HTTP status codes (UNPROCESSABLE\_ENTITY, NOT\_FOUND, INTERNAL\_SERVER\_ERROR) and returning standardized error messages to the client.

src/main/java/com · high confidence

Introduce layered architecture for car sales and ordering

The application now uses a layered architecture to manage car inventory and purchases. Users can add new cars to the system and complete purchases via a REST API. Internally, the change introduces an application layer (CarService) that coordinates between the API, domain models (Car, Order), and infrastructure (MongoDB persistence, VIN providers). This structure supports future enhancements like rebate calculations and domain events for sold cars.

src/main/java/layers · high confidence

Behavioural changes

Gradle wrapper upgraded to version 4.7

The project's Gradle wrapper has been updated from version 3.4.1 to 4.7. This upgrade ensures that the project uses a more recent version of the Gradle build tool, which may include performance improvements, new features, and bug fixes compared to the previous version.

gradle · high confidence

Updated workshop instructions and added licensing

The README.md has been significantly expanded to provide detailed step-by-step instructions for a Domain-Driven Design workshop, including specific implementation tasks for each of the 10 steps (such as creating teams, managing projects, and handling features). The file also includes guidance on running the application and links to alternative architectural implementations. Additionally, the repository now includes an Apache License 2.0 file, and the .gitignore has been updated to exclude build artifacts and IDE files.

(repo-wide) · high confidence

Test coverage

Added basic test specification for project manager

Added a new Groovy-based test specification (BasicSpecification.groovy) that provides a reusable base class for integration tests. This class sets up a WireMock server for mocking external services, configures a TestRestTemplate for HTTP requests, and includes utility methods for sending GET, POST, PUT, and PATCH requests. It also provides helper methods to verify that reports were sent to a reporting service and to clear the MongoDB database before each test.

src/test · high confidence

Dependencies

Upgrade Spring Boot and update dependencies

The project has been upgraded from Spring Boot 1.5.2 to 2.0.2, which may involve breaking changes in the Spring ecosystem. Several dependencies have been updated: de.flapdoodle.embed.mongo from 2.0.0 to 2.0.3, commons-lang3 from 3.5 to 3.7, and a new dependency on commons-collections4 4.1. Test dependencies have also been updated: spock-spring from 1.1-groovy-2.4-rc-4 to 1.1-groovy-2.4, wiremock from 2.5.1 to 2.17.0, and a new dependency on awaitility-groovy 3.1.0. The Gradle wrapper has been updated from version 3.4.1 to 4.7.

(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 43 → 43 (+0.0)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 49 → 49 (+0.0)
  • Readiness 17 → 17 (+0.0)
  • Security 100 → 100 (+0.0)

Resolved (3)

  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • No exposed public API
  • single-maintainer — knowledge-concentration (bus factor) risk

New (4)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • No ADRs found

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

mkopylec/project-manager 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 9872e3b781ef11f982ed7aad2586c3f041824101 — 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-fa71c66cabd8.