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
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.