Skip to content
CAI
Software that uses CAICheck a score

jkazama/ddd-java

60.7

Adequate · 21 September 2026

4.2k

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 is a Spring Boot-based financial application that manages accounts, assets, and cash flows. It provides RESTful APIs for processing cash-in/out operations, administrative controls, and system jobs, all underpinned by a domain-driven design architecture. The system handles financial transactions, account balancing, and reporting, supported by comprehensive unit tests for its domain models and utilities.

Features

Add utility classes for calculation, date/time handling, and validation

Introduced new utility classes in the \sample.util\ package: \Calculator\ for performing arithmetic operations with \BigDecimal\ precision, \DateUtils\ for converting and formatting dates and times, \TimePoint\ as a record pairing date and datetime, \Validator\ for managing validation exceptions, and \Warns\ to represent validation error states. These classes provide core business logic and data handling capabilities.

src/main/java/sample/util · high confidence

Added application layer services for asset, admin, mail, and reporting use cases

Introduced new application-layer components in the \sample.usecase\ package to handle domain-specific workflows. \AssetService\ manages customer-facing asset operations like finding unprocessed cash-outs and processing withdrawals, while \AssetAdminService\ provides administrative capabilities for closing cash-outs and realizing cashflows. Additionally, \MasterAdminService\ handles master data processing, \ServiceMailDeliver\ manages asynchronous email notifications via \AppMailEvent\, and \ServiceReportExporter\ provides a placeholder for cash flow report generation.

src/main/java/sample/usecase · high confidence

Added domain context infrastructure components

Introduced a new set of classes in the \sample.context\ package to support domain-driven design and infrastructure concerns. This includes the \DomainEntity\ marker interface and \Dto\ interface for domain and data transfer objects, along with helper classes like \DomainHelper\ and \Timestamper\. The change also adds exception handling with \ValidationException\ and \InvocationException\, message access via \MessageAccessor\, and a generic \Repository\ interface. Additionally, it provides a JDBC-based ORM implementation (\OrmRepository\, \OrmTemplate\, \JdbcFinder\) with SQL building utilities (\SqlBuilder\), transaction management (\TxTemplate\), and audit/logging capabilities (\AuditHandler\).

src/main/java/sample/context · high confidence

Added project scaffolding and configuration files

The repository now includes essential project files to support the Spring Boot application, including a .env file for project naming, a .gitignore for build artifacts, a comprehensive README.md documenting the DDD architecture and usage instructions, Gradle wrapper scripts (gradlew, gradlew.bat) for consistent builds, and an updated LICENSE header.

(repo-wide) · high confidence

Initial project configuration and data layer setup

The application now includes its first set of resource files, establishing the baseline configuration and data schema. This adds an application.yml for Spring Boot settings (including datasource, logging, and profile-specific overrides), a logback-spring.xml for logging configuration, and i18n message bundles for validation and domain errors. Additionally, the project now contains SQL scripts defining the database schema (account, fi\_account, self\_fi\_account, cash\_balance, cashflow, and cash\_in\_out tables) and initial seed data for testing.

src/main/resources · high confidence

Initial project structure and core Java classes

The sample directory now contains the foundational Java classes for the application, including the main entry point (Application), application configuration (ApplicationConfig), package documentation (package-info), and a new enum (ActionStatusType) that defines processing states such as UNPROCESSED, PROCESSING, PROCESSED, CANCELLED, and ERROR, along with helper methods to check their status.

src/main/java/sample · high confidence

Introduced domain model for account, asset, and cashflow management

Added new domain entities and constraints to support account management, asset tracking, and cashflow processing. The update introduces \Account\, \FiAccount\, \Asset\, \CashBalance\, \CashInOut\, and \Cashflow\ classes, along with associated validation constraints (e.g., \AbsAmount\, \AccountId\, \Currency\) and error key interfaces. This enables the system to handle financial transactions, track account balances, and process cashflows with proper validation and status management.

src/main/java/sample/model · high confidence

New REST controllers for asset, admin, and system job endpoints

The codebase introduces new Spring MVC controllers that expose RESTful APIs for managing cash flow and system jobs. The \AssetController\ handles user-facing cash-in/out operations, while \AssetAdminController\ provides endpoints for retrieving cash flow records. Additionally, \JobController\ exposes internal system job triggers for daily processing and cash flow realization. Error handling is centralized in \RestErrorAdvice\ to standardize API error responses, and \LoginInterceptor\ uses AOP to bind user context to a thread-local session.

src/main/java/sample/controller · high confidence

Test coverage

Added unit tests for domain models and test infrastructure; Added unit tests for the Calculator utility.

Dependencies

Initial project setup with Spring Boot 4.0.0 and Gradle 9.2.1

The project is initialized with Spring Boot 4.0.0, utilizing the Spring Dependency Management plugin and configuring a Java-based build with Lombok, Spring Web MVC, Spring Data JDBC, and H2. The build system is managed by Gradle 9.2.1, and the project is named 'ddd-java'.

(dependencies) · high confidence

Upgraded Gradle wrapper to version 9.2.1

The Gradle wrapper has been updated to use Gradle 9.2.1, ensuring the project builds with the latest wrapper distribution. This change updates the \gradle-wrapper.properties\ file to point to the new Gradle binary, which may include performance improvements, bug fixes, and new features available in that release.

gradle · 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 56 → 61 (+4.7)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 99 → 98 (-0.6)
  • Architecture 100 (new)
  • Maturity 74 → 74 (+0.0)
  • Readiness 26 → 32 (+6.1)
  • Security 100 → 100 (-0.1)

Resolved (12)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 2) (src/main/java/sample/context/orm/SqlBuilder.java)
  • Duplicated block (6 lines × 3) (src/main/java/sample/context/orm/OrmTemplate.java)
  • Duplicated block (7 lines × 2) (src/main/java/sample/model/asset/CashInOut.java)
  • Duplicated block (8 lines × 4) (src/main/java/sample/context/orm/SqlBuilder.java)
  • Duplicated block (9 lines × 2) (src/main/java/sample/context/orm/JdbcFinder.java)
  • No exposed public API
  • Test reliability not included
  • The README does not mention the use of Spring Security or any authentication/authorization requirements for the sample. (README.md)
  • change coupling unreadable for .java — no production change history could be paired for this repository's own source
  • dormant codebase — no living knowledge left to concentrate

New (12)

  • 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)
  • Duplicated block (10 lines × 2) (src/main/java/sample/context/orm/JdbcFinder.java)
  • Duplicated block (10 lines × 2) (src/main/java/sample/model/asset/CashInOut.java)
  • Duplicated block (10 lines × 3) (src/main/java/sample/context/orm/SqlBuilder.java)
  • Duplicated block (12 lines × 4) (src/main/java/sample/context/orm/SqlBuilder.java)
  • Duplicated block (13 lines × 2) (src/main/java/sample/context/orm/SqlBuilder.java)
  • Duplicated block (7 lines × 3) (src/main/java/sample/context/orm/OrmTemplate.java)
  • Duplicated block (9 lines × 3) (src/main/java/sample/context/orm/JdbcFinder.java)
  • Low IaC: WD-COMPOSE-0002 (.devcontainer/compose.yml)
  • Members sharing a duplicated core (4 members, 50+ identical tokens) (src/main/java/sample/context/orm/SqlBuilder.java)

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

Survey your own repository

jkazama/ddd-java 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 f1ad2bcd47cc542266f665a7e7ff4037bd32f79a — 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.