Model-driven development for Spring Boot
Production readyModel your domain. Generate the boring parts.
Describe your services in ZDL, OpenAPI and AsyncAPI. ZenWave SDK generates Spring Boot services, event adapters, tests and infrastructure that stay aligned with the model.
-
From ZDL A complete Spring Boot backend, plus draft OpenAPI and AsyncAPI. - From OpenAPI Spring MVC controllers, WebTestClient and Karate tests.
-
From AsyncAPI and Avro Typed Spring Kafka and Spring Cloud Stream producers and consumers. -
Event-driven modular monoliths Spring Modulith modules with domain events and a transactional outbox.
In production since 2022. Java or Kotlin. Open source.
Complete workflow
From discovery to production
ZenWave makes architecture readable by people, traversable by tools, and usable as context for AI-assisted delivery.
-
-
Shape
-
Generate & Implement
-
Navigate
Building in public
What ZenWave Platform Is
ZenWave Platform is a set of connected capabilities for making the big picture of your software explicit, connected, and navigable, from discovery and modeling to generation and navigation.
Its IDE experience lets you design, navigate, and connect domain models, business flows, APIs, source code, local folders, Git repositories, and schema registries with Apicurio.
Platform Capabilities
AsyncAPI and Avro Generator
Generates strongly typed Spring Kafka and Spring Cloud Stream producers and consumers from AsyncAPI specifications.
ZDL Modeling Language
Model bounded contexts, entities, aggregates, commands, events, and services as structured domain artifacts.
ZFL Flow Language
Model business flows as policies that connect commands and events, then link them to APIs, schemas, and domain models.
ZenWave IDE & MCP
Architecture navigation and context for IDEs and AI agents. Powered by a Kotlin Multiplatform LSP server, with IntelliJ first, VS Code next, and MCP support for agent workflows.
Supporting OSS
EventCatalog Generator
Export OpenAPI, AsyncAPI, and ZenWave models to EventCatalog, or import existing EventCatalog documentation back into the ZenWave world model.
Terraform / asyncapi-ops
Provision Kafka topics, ACLs, and Schema Registry infrastructure from AsyncAPI contracts.
Spring Modulith Events
Externalize Spring Modulith domain events through Spring Cloud Stream. Used by the AsyncAPI Generator for Transactional Outbox integration.
JSON Schema Parser
Standalone JSON Schema reference parsers for JVM and Kotlin Multiplatform, used across ZenWave SDK, the IntelliJ plugin, and other tooling.
Built in public
Reference Architectures
Examples that show how discovery, domain models, APIs, events, schemas, generated services, and operational concerns work together in realistic systems.
Arcadia Editions
A fictional publisher with real product, catalog, order, event, and integration pressure.
Arcadia is the working example for the ZenWave Platform idea: from Event Storming to ZFL flows, contracts, services, events, and AI-assisted delivery.
AsyncAPI Shopping Cart
Define AsyncAPI and Avro contracts, then derive Kafka producers and consumers for a multi-module event-driven application.
Follow the tutorial
Order Fulfillment Kotlin
Capture ubiquitous language in ZDL and derive a Kotlin Spring Boot service with REST APIs, domain events, and generated implementation.
Follow the tutorial
Transactional Outbox
Implement the transactional outbox pattern with AsyncAPI, Spring Cloud Stream, Spring Modulith, and ZenWave SDK generation.
Follow the tutorial
Clinical Tool Modulith
Model multiple bounded contexts and derive a modular monolith where domain boundaries, APIs, and persistence stay aligned.
Follow the tutorialIdea Lab
I created ZenWave SDK to help me think about software, talk about it, validate it... and then generate all the boring parts that were already present in the model. Four years in production, open sourced and funded by the time it saved me and my team.
The platform, the architectural world model, is where I take this further: making the big picture visible and navigable, for people and agents.
If it's useful to you too, let's talk.