bertilmuth/modern-clean-architecture
54.1
Adequate · 21 September 2026
1.4k
lines of production code
Java
with JavaScript
4
measurements over time
What this system is
This system is a Java-based framework for building behavior-driven applications using Spring Boot. It provides core abstractions for event handling and HTTP request processing, along with Spring-specific auto-configuration to simplify integration. The codebase also includes a sample 'todolist' application that demonstrates these capabilities, alongside test utilities and modularized Spring extensions.
Features
Introduce EventBus API and Spring auto-configuration
Added the EventBus interface within the eventbus-api module, extending the Behavior interface, and configured Spring Boot auto-activation via a new spring.factories file that registers the EventBusConfiguration class.
eventbus-api · high confidence
Introduce Spring-based event bus implementation
A new Spring Boot auto-configuration for the event bus is added, wiring a SpringEventBus bean that publishes events via Spring's ApplicationEventPublisher. This enables automatic setup of the event bus in Spring applications without manual bean configuration.
spring-eventbus · high confidence
Behavioural changes
Refactor frontend task filtering and API endpoint handling
The frontend now uses a configurable BEHAVIOR\_ENDPOINT constant for API calls, replacing the hardcoded '/todolist' string. The task filtering logic has been refactored: the previous 'showTasksByCompletion' function is replaced by 'filterTasksByCompletion', which sends a 'FilterTasksRequest' instead of 'ListTasksByCompletionRequest'. Additionally, the 'post' function now handles empty string responses from the server by checking 'xhr.responseText.length' before parsing JSON, preventing potential errors when the response body is empty.
samples/todolist/src/main/resources · high confidence
Refactor task filtering and Spring integration
The task filtering logic has been renamed from 'ListTasksByCompletion' to 'FilterTasks' to better reflect its capability to handle both completed and uncompleted tasks. The request and response classes have been updated accordingly, and the domain method 'listTasksByCompletion' has been renamed to 'filterTasks'. Additionally, the Spring integration has been refactored to use functional types for request handling, and the 'EmptyResponse' class has been removed in favor of returning an empty string. The 'BehaviorController' and related serialization components have been moved to the 'spring-behavior-web' module, and the 'spring-test' module has been renamed to 'spring-behavior-test'.
todolist · medium confidence
Relocate Spring behavior web components to new package structure
The Spring behavior web components, including the serialization classes (ClassResolver, Classes, JacksonSubClassResolverBuilder, ParameterExtractor, SubClassValidator) and configuration classes (BehaviorConfiguration, SerializationConfiguration), have been moved from the \org.requirementsascode.spring\ package to \org.requirementsascode.serialization\ and \org.requirementsascode.spring.behavior.web\ respectively. This reorganization updates the corresponding Spring auto-configuration in \spring.factories\ and adjusts all internal imports and package declarations to reflect the new structure, ensuring the web module correctly registers and initializes these beans.
spring-behavior-web/src · medium confidence
Removal of Spring Boot auto-configuration and test support
The Spring Boot auto-configuration and test support for the application has been removed. Specifically, the \spring.factories\ file, which previously registered \BehaviorConfiguration\, \SerializationConfiguration\, \BehaviorController\, and \MockBehaviorEndpoint\ for both production and test environments, has been deleted. This means the application will no longer automatically configure these components or provide the associated test utilities.
spring · medium confidence
Renamed spring-test to spring-behavior-test and updated package structure
The project has been renamed from spring-test to spring-behavior-test, with all Java source files and test classes moved to the new directory structure. The package names have been updated from org.requirementsascode.spring.test to org.requirementsascode.spring.behavior.test. Additionally, the TestRepository class no longer implements the jMolecules Repository interface, simplifying its dependencies. The README has been updated to reflect the new project name and version 0.2.1.
spring-behavior-test · high confidence
Renames task filtering endpoints and removes unused response class
The sample application refines its API surface by renaming the task listing functionality to better reflect its purpose: the request and response classes for filtering tasks have been renamed from 'ListTasksByCompletion' to 'FilterTasks' (e.g., FilterTasksRequest, FilterTasksResponse). Additionally, the unused EmptyResponse class has been removed from the codebase, and related configuration and exception handling classes have been reorganized into the Spring adapter layer.
samples/todolist/src/main/java · high confidence
Split Spring configuration into separate files
The single spring.factories file in the spring-test module has been removed, indicating a move to split the configuration into separate files for web and test components. This change affects how Spring Boot auto-configuration and test auto-configuration are loaded, potentially altering the order or mechanism by which BehaviorConfiguration, SerializationConfiguration, BehaviorController, and MockBehaviorEndpoint are registered.
spring-test · medium confidence
Test coverage
Updated tests to align with new request/response types and package structure
The test suite in the todolist sample has been updated to reflect internal refactoring. Tests now import from the new \org.requirementsascode.spring.behavior.test\ package instead of \org.requirementsascode.spring.test\. Additionally, the \TodoListBehaviorEndpointTest\ and \TodoListBehaviorTest\ have been migrated to use the new \FilterTasksRequest\ and \FilterTasksResponse\ types, replacing the previous \ListTasksByCompletionRequest\ and \ListTasksByCompletionResponse\. The \TodoListTest\ has also been updated to use the new \filterTasks\ method instead of \listTasksByCompletion\.
samples/todolist/src/test · high confidence
Dependencies
Restructures project modules and updates dependencies
The project has been restructured with new modules: 'eventbus-api' and 'spring-eventbus' are added, while 'spring' and 'spring-test' are renamed to 'spring-behavior-web' and 'spring-behavior-test' respectively. The 'spring-behavior-web' module now uses 'compileOnly' for 'spring-boot-starter-data-jpa' and changes 'requirementsascodecore' to 'implementation' scope. The 'spring-behavior-test' module removes several 'jmolecules' dependencies. The 'samples/todolist' sample is updated to use the new module names and explicitly include 'requirementsascodecore'. The root version is bumped to 0.2.2-SNAPSHOT.
(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 48 → 54 (+6.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 → 93 (+23.5)
- Maturity 53 → 53 (+0.0)
- Readiness 26 → 31 (+5.6)
- Security 100 → 100 (+0.0)
Resolved (7)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- LLM evaluation failed
- No exposed public API
- Scanner failed to run — not a clean result
- Test reliability not included
- single-maintainer — knowledge-concentration (bus factor) risk
New (18)
- 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
- No assertions: addsTaskToList (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: completesTask (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: createsTodoList (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: deletesTask (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: findsListIfAlreadyCreated (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: listsCompletedTasks (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: listsTasks (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: throwsWhenAddsTaskWithWhitespaceToList (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: throwsWhenAddsToNonExistingList (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: throwsWhenCompletesOnNonExistingList (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: throwsWhenDeletesTaskOnNonExistingList (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- No assertions: throwsWhenListsTasksOfNonExistingList (samples/todolist/src/test/java/com/example/todolist/behavior/TodoListBehaviorTest.java)
- Scanner failed to run — not a clean result
- Scanner failed to run — not a clean result
Architecture
- Containers 0 added · 0 removed · contexts 3 added · 0 removed · edges 0 added · 0 removed
Added bounded contexts (3)
- spring-behavior-test
- spring-behavior-web
- spring-eventbus
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
bertilmuth/modern-clean-architecture 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 9077705469f422a890312ca3d148b48be7591d53 — 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.