Java 21 · Spring Boot 3.5 · pluggable message broker · JPA over any RDBMS · OpenAPI 3.0 contract per service · 17 production modules with Maven coordinates and code samples.
Tested combinations. Anything marked roadmap is on the work plan but not yet shipped.
| Component | Supported | Notes |
|---|---|---|
| JVM | Java 17, 21 LTS | 21 is the development default. Requires --enable-preview for nothing — no preview features used. |
| Spring Boot | 3.5.x | 3.4.x supported on a per-module basis. Spring Cloud BOM 2025.0.0. |
| Database (JPA) | MySQL · PostgreSQL · Oracle · SQL Server · MariaDB · H2 | Schema migrations are vendor-neutral (Flyway). Tested with 8.x / 16.x / 19c / 2022 respectively. |
| Message broker | Kafka · RabbitMQ · ActiveMQ · Artemis · Solace · IBM MQ | One @NucleusListener across all of them. Driver per broker; same code path. |
| Cloud messaging | SQS · SNS · Kinesis · Google Pub/Sub · Azure Service Bus | Add the cloud SDK; the connector adapter does the rest. |
| Low-latency queue | Chronicle Queue | Off-heap, sub-microsecond. Same @NucleusListener contract. |
| Identity | Built-in OAuth2/OIDC server | Federation with Keycloak, Auth0, Okta on the roadmap. |
| Object storage | MinIO · S3 · S3-compatible | Audit cold-storage rollup, log archive, file uploads. |
| UI framework | Angular 19+ | Generated TypeScript clients per service via OpenAPI 3.0. React/Vue clients on the roadmap. |
| LLM providers | OpenAI · Anthropic | Provider-agnostic interface. Add a new provider in 3 beans. |
| Observability | Built-in (control plane) | Optional sidecar export to Prometheus / OpenTelemetry on the roadmap. |
| Container runtime | Docker · Compose · Podman | Kubernetes Helm chart on the roadmap. |
Each module ships independently with its own Maven coordinate, OpenAPI contract, and Spock specs. Adopt one or all.
@AuditAction on any method logs who/what/when. SpEL for dynamic descriptions.@NucleusListener + @NucleusPublish across 12 brokers. Zero-boilerplate consume / publish.@WorkflowStep. Each step scales independently. Three outcomes per step.Address @Embeddable, address-type bucket via reference-data.@Embeddable: phones, emails, preferred channels.@EnableGatewaySecurity activator. Auto-registration + marker-token verification filter.What plugs into Nucleus on day one. Roadmap items are on the work plan but not yet shipped.
90% of what you'll write touches one of these. The rest is your business logic.
@AuditAction( action = "USER_PROFILE_UPDATED", description = "#{#user.email} updated by #{#actor}", payload = "#{#user}" ) public User updateProfile(User user, String actor) { // your business logic — audit happens AFTER_COMMIT return userRepository.save(user); }
@NucleusListener( topic = "nucleus.payment.completed", group = "loyalty-points" ) public void awardLoyaltyPoints(PaymentEvent event) { // runs whether broker is Kafka, Solace, // RabbitMQ, SQS, or Chronicle Queue pointsService.award(event.userId(), event.amount()); }
@WorkflowStep(name = "VALIDATE_INVOICE") public StepResult validate(Invoice inv) { if (inv.amount().isNegative()) { return StepResult.abort("NEGATIVE_AMOUNT"); } if (inv.requiresApproval()) { return StepResult.delegate("APPROVAL"); } return StepResult.handled(inv); }
@SpringBootApplication @EnableGatewaySecurity // that's it public class PaymentsServiceApp { public static void main(String[] args) { SpringApplication.run(PaymentsServiceApp.class, args); } } // service self-registers with the gateway, // rejects any traffic missing the marker token
Read the full architecture, watch the live demo, or talk to the architect about your stack.