soybeanjs/soybean-admin-quarkus
36.3
Weak · 22 September 2026
10.6k
lines of production code
Kotlin
primary language
7
measurements over time
What this system is
This is a Quarkus-based backend system that implements a Domain-Driven Design architecture using CQRS and Event Sourcing patterns. It manages core system operations such as user, role, and tenant administration, supported by a PostgreSQL database and Kafka-based event bus. The codebase provides shared infrastructure for command/query handling, domain event publishing, and state projection, alongside standard build and containerization tooling.
Features
Add experimental MsgPack client script
An experimental Python script was added to the experiment directory that sends a request to a local service and decodes the response using the MsgPack format. This introduces a new capability for interacting with the service using MsgPack serialization, which can be used for testing or exploration of that specific data format.
experiment · high confidence
Added PostgreSQL database schema for system management
A new SQL migration file has been added to the deployment scripts, containing the complete schema for the PostgreSQL database. This includes the creation of tables for system operations logs, API keys, API definitions, departments, dictionary data and types, login logs, and menu configurations, along with the associated sequences. This change provides the necessary database structure to support the application's core system management features.
deploy · high confidence
Adds Dockerfiles and domain-driven event sourcing infrastructure
The system now supports building container images for the Quarkus application in JVM, legacy-jar, native, and native-micro modes, providing optimized deployment options for different runtime environments. Additionally, the codebase introduces a complete event sourcing infrastructure, including an \AggregateEventStore\ for persisting and loading domain events and snapshots, an \AggregateEventBusWithKafka\ for publishing events to Kafka, and supporting components like a command/query invoker, domain event publisher, and exception handling. This enables the application to track and reconstruct aggregate state through a sequence of domain events.
system/src · high confidence
Initial project scaffolding and build configuration
The repository is initialized with essential build and configuration files, including a Makefile for managing Gradle tasks (such as native packaging and Docker image builds), a Docker Compose file for local development services (PostgreSQL, Redis, MongoDB, Kafka), and standard project files like .gitignore, .editorconfig, and .sdkmanrc. This establishes the foundational environment for building and running the application.
(repo-wide) · high confidence
Introduces shared domain and infrastructure building blocks for CQRS and Event Sourcing
The shared module now provides the foundational abstractions for a Command/Query (CQRS) and Event Sourcing architecture. This includes the \Command\ and \CommandHandler\ interfaces for handling write operations, and \Query\/\QueryHandler\ interfaces for read operations. For domain modeling, it introduces \AggregateRoot\ and \AggregateEventEntity\ to support event-sourced aggregates, alongside \DomainEvent\ and \DomainEventListener\ for internal event handling. The \EventBus\ and \EventStoreDB\ interfaces define the contract for persisting and loading events, while \Projection\ enables asynchronous state updates. Additionally, the update adds \LogOperation\ for API logging, custom JPA converters for JSON serialization, and utility classes for serialization and snapshot management.
shared · high confidence
Behavioural changes
Domain layer refactored to use DDD aggregates and JPA entities
The domain layer has been refactored to implement a Domain-Driven Design (DDD) architecture. New aggregate root classes (RoleAggregate, RouteAggregate, TenantAggregate, UserAggregate) have been introduced to manage business logic and state transitions via domain events. These aggregates are supported by a new set of JPA entity classes (e.g., SystemRoleEntity, SystemUserEntity, SystemTenantEntity) that map to the database schema. Additionally, base classes (BaseEntity, BaseTenantEntity) and utility classes (DbConstants, Extension) have been added to support the new structure.
domain · high confidence
Dependencies
Initial project structure and dependency configuration
The project is initialized with a Gradle-based build system, establishing the foundational architecture for a Quarkus application. The configuration sets up a multi-module structure (shared, system, domain) with Kotlin 2.1.0 and Quarkus 3.17.7. It integrates key libraries including Jackson for data binding, Mutiny for reactive streams, Hibernate Reactive, and various Quarkus extensions (Kubernetes, MongoDB, PostgreSQL, Redis, Camel). The build also includes code formatting via Spotless and KSP for code generation.
(dependencies) · medium confidence
Upgraded Gradle wrapper to version 8.12
The Gradle wrapper has been updated to use Gradle 8.12, ensuring the project uses a specific, consistent version of the build tool. This change standardizes the build environment and may introduce behavioral changes associated with the new Gradle 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 37 → 36 (-0.6)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 98 → 99 (+0.8)
- Architecture 100 → 93 (-7.2)
- Maturity 48 → 48 (+0.3)
- Readiness 15 → 16 (+0.5)
- Security 72 → 65 (-7.4)
- Domain Modelling 65 → 59 (-5.9)
- Accessibility 48 → 48 (+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
- Duplicated block (10 lines × 4) (system/src/main/kotlin/cn/soybean/system/application/command/role/handler/UpdateRoleCommandHandler.kt)
- Duplicated block (13 lines × 3) (system/src/main/kotlin/cn/soybean/BannkAccount.kt)
- Duplicated block (13 lines × 4) (system/src/main/kotlin/cn/soybean/system/application/command/role/handler/DeleteRoleCommandHandler.kt)
- Duplicated block (14 lines × 2) (system/src/main/kotlin/cn/soybean/system/application/service/RoleService.kt)
- Duplicated block (14 lines × 2) (system/src/main/kotlin/cn/soybean/system/application/service/RouteService.kt)
- Duplicated block (15 lines × 2) (system/src/main/kotlin/cn/soybean/system/application/command/route/convert/Convert.kt)
- Duplicated block (15 lines × 2) (system/src/main/kotlin/cn/soybean/system/infrastructure/util/SignUtil.kt)
- Duplicated block (16 lines × 3) (system/src/main/kotlin/cn/soybean/BannkAccount.kt)
- Duplicated block (9 lines × 2) (system/src/main/kotlin/cn/soybean/system/application/query/route/handler/RouteQueryHandler.kt)
- Medium IaC: CKV_DOCKER_2 (system/src/main/docker/Dockerfile.jvm)
- Medium IaC: CKV_DOCKER_2 (system/src/main/docker/Dockerfile.legacy-jar)
- Medium IaC: CKV_DOCKER_2 (system/src/main/docker/Dockerfile.native)
- Medium IaC: CKV_DOCKER_2 (system/src/main/docker/Dockerfile.native-micro)
- No exposed public API
- Secret: private-key (src/main/resources/privateKey.pem)
- Secret: private-key (src/main/resources/privateKey.pem)
- Test reliability not included
- The README does not describe how to run the project locally or what dependencies are required (Quarkus version, Kotlin/Java target). (README.md)
- …and 1 more
New (44)
- Change coupling: RouteQueryHandler.kt ↔ RouteResource.kt (system/src/main/kotlin/cn/soybean/system/application/query/route/handler/RouteQueryHandler.kt)
- 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 (12 lines × 3) (system/src/main/kotlin/cn/soybean/BannkAccount.kt)
- Duplicated block (13 lines × 2) (system/src/main/kotlin/cn/soybean/system/application/query/route/handler/RouteQueryHandler.kt)
- Duplicated block (13 lines × 2) (system/src/main/kotlin/cn/soybean/system/infrastructure/util/SignUtil.kt)
- Duplicated block (13 lines × 3) (system/src/main/kotlin/cn/soybean/BannkAccount.kt)
- Duplicated block (18–19 lines × 2) (system/src/main/kotlin/cn/soybean/system/application/command/route/convert/Convert.kt)
- Duplicated block (8 lines × 4) (system/src/main/kotlin/cn/soybean/system/application/service/RoleService.kt)
- Duplicated block (9 lines × 4) (system/src/main/kotlin/cn/soybean/system/application/command/role/handler/DeleteRoleCommandHandler.kt)
- Duplicated block (9 lines × 4) (system/src/main/kotlin/cn/soybean/system/application/command/role/handler/UpdateRoleCommandHandler.kt)
- Leaked secret: password-hash-credential (system/src/main/resources/sql/init.sql)
- Medium IaC: CKV2_K8S_6 (system/kubernetes/kubernetes.yml)
- Medium IaC: CKV_K8S_20 (system/kubernetes/kubernetes.yml)
- Medium IaC: CKV_K8S_21 (system/kubernetes/kubernetes.yml)
- Medium IaC: CKV_K8S_22 (system/kubernetes/kubernetes.yml)
- Medium IaC: CKV_K8S_23 (system/kubernetes/kubernetes.yml)
- Medium IaC: CKV_K8S_28 (system/kubernetes/kubernetes.yml)
- Medium IaC: CKV_K8S_29 (system/kubernetes/kubernetes.yml)
- …and 24 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
soybeanjs/soybean-admin-quarkus 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 22 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 03d4a3622df59ee6466c87834be9250c123b7bd7 — 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-90d5d2fe38ee.