Skip to content
CAI
Software that uses CAICheck a score

wesleyosantos91/poc-multi-module-arch-hexagonal-springboot

64.7

Adequate · 21 September 2026

680

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 microservice designed to manage person records through a REST API. It implements a layered architecture with distinct domain, application, and infrastructure modules, utilizing MySQL for persistence and Apache Kafka for event-driven communication. The service is fully observable, featuring structured logging, Prometheus metrics, and Jaeger tracing, all supported by comprehensive automated testing and containerized deployment scripts.

Features

Added Kafka-based Person event publishing and consuming infrastructure

Introduced new microservices for handling Person events via Apache Kafka. The \kafka-producer\ module now includes a \KafkaPersonProducer\ service that serializes and sends \Person\ objects to a Kafka topic, while the \kafka-consumer\ module provides a \KafkaPersonConsumer\ to listen for and process these events. Both services utilize Avro schemas for data serialization and include corresponding unit tests to verify the end-to-end flow using an embedded Kafka broker.

infrastructure/kafka-consumer, infrastructure/kafka-producer · high confidence

Added monitoring, logging, and alerting configuration

The application now includes configuration files for a full observability stack. Alerting is enabled via Alertmanager and Prometheus, with rules defined in config/prometheus/alert.yml and config/prometheus/prometheus.yml. Logging is configured using Filebeat (config/filebeat/) to send logs to Logstash (config/logstash/logstash.conf), which forwards them to Elasticsearch. Additionally, Grafana dashboards (config/grafana/) are provisioned to visualize metrics from Prometheus and Jaeger.

config · high confidence

Added scripts to automate application startup and maintenance

New shell scripts have been added to the scripts directory to streamline the development and maintenance workflow. A new start-app.sh script automates the process of cleaning up existing Docker containers and images, building the application, and launching the services via docker-compose. Additionally, separate scripts have been introduced to handle specific tasks: build.sh for compiling the project, sonar.sh for running code quality analysis, and remove-docker-imagens.sh for cleaning up Docker resources.

scripts · high confidence

Initial MySQL data store implementation for person management

The MySQL infrastructure module now provides the concrete implementation for persisting and retrieving person records. This includes a JPA entity, a Spring Data repository, and a database adapter that handles CRUD operations and paginated queries. Additionally, a new logging configuration has been added to support structured JSON logs in production environments.

infrastructure/datastore-mysql/src/main · high confidence

Initial project scaffolding and infrastructure setup

The repository has been initialized with a complete development environment, including a Docker Compose configuration that provisions MySQL, PostgreSQL, Elasticsearch, Logstash, Kibana, Filebeat, Jaeger, Prometheus, Grafana, and Alertmanager services. The project also includes a Maven wrapper, environment variable templates, and a comprehensive README documenting the setup and usage of these integrated tools.

(repo-wide) · high confidence

Initial release of the Person API with paginated queries and structured logging

The application now exposes a new REST API for managing persons, including endpoints for creating, retrieving, updating, and deleting person records. A key addition is support for paginated queries via the /v1/persons endpoint, allowing clients to fetch person lists with pagination support. The API is backed by a new controller, request/response DTOs, and a mapper. Additionally, structured JSON logging is configured via Logback, enabling trace and span context propagation for distributed tracing.

application/src/main · high confidence

Introduce domain model and service ports for person management

The domain module now includes a new \PersonDomain\ entity and a \PersonServicePort\ interface with an implementation (\PersonServicePortImpl\) that delegates to a \PersonDatabasePort\. This adds the core domain logic and service layer for creating, reading, updating, and deleting person records. Additionally, custom exception classes (\BusinessException\, \DatabaseException\, \ResourceNotFoundException\) are introduced to handle domain-specific errors. The change also includes comprehensive unit tests for the domain classes, exceptions, and the service implementation, along with test utilities and fixtures to support the new functionality.

domain · high confidence

ms-launcher: Initial project setup with Spring Boot 3.0, Kafka, and Jaeger tracing

The ms-launcher module is introduced with a foundational Spring Boot 3.0.0 application structure, including a Dockerfile for containerization and Maven wrapper scripts for build reproducibility. The configuration enables Kafka integration for message publishing and consumption, alongside Jaeger-based distributed tracing. Database interactions are managed via Flyway migrations against MySQL, and the application exposes Prometheus metrics and health checks. A comprehensive suite of integration tests is added, utilizing Testcontainers for MySQL and EmbeddedKafka to verify API endpoints and data flow.

ms-launcher · high confidence

Behavioural changes

Added Maven Wrapper configuration

The project now includes a Maven Wrapper configuration file (.mvn/wrapper/maven-wrapper.properties) that specifies the use of Maven 3.8.4 and the Maven Wrapper 3.1.0 JAR. This ensures consistent build environments across different machines by providing the exact Maven distribution and wrapper JAR required to bootstrap the build.

.mvn · medium confidence

Test coverage

Added comprehensive test coverage for the application module; Added test resources for MySQL datastore; Added unit tests for the MySQL data store adapter.

Dependencies

Initial project structure and dependency configuration

The project is initialized with a multi-module Maven structure, establishing a parent POM that manages Spring Boot 3.3.3, Spring Cloud 2023.0.3, MapStruct 1.5.5.Final, and other core dependencies. This commit introduces the build configuration for the \ms-launcher\, \domain\, \application\, and various infrastructure modules (MySQL, Kafka, coverage), setting up the foundational build environment for the application.

(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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 67 → 65 (-1.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 97 (-2.7)
  • Architecture 100 → 66 (-34.3)
  • Maturity 57 → 57 (+0.0)
  • Readiness 69 → 70 (+1.5)
  • Security 65 → 71 (+6.6)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (21)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium IaC: CKV_DOCKER_2 (config/filebeat/Dockerfile)
  • Medium IaC: CKV_DOCKER_3 (ms-launcher/Dockerfile)
  • Medium IaC: CKV_DOCKER_8 (config/filebeat/Dockerfile)
  • No exposed public API
  • Scanner failed to run — not a clean result
  • Test reliability not included
  • The README contains only a branding banner with no explanation of what the POC does, its purpose, or any application description. (README.md)
  • …and 1 more

New (58)

  • Coverage not measured — no coverage collector is wired up
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no project overview (README.md)
  • High IaC: WD-COMPOSE-0001 (docker-compose.yml)
  • High IaC: WD-COMPOSE-0002 (docker-compose.yml)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
  • Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
  • Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
  • …and 38 more

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

Survey your own repository

wesleyosantos91/poc-multi-module-arch-hexagonal-springboot 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 d02c8f4a521daa4e450db73319c0a729af513884 — 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.