The Arcadia Editions Series
The Fictional Company I Built to Explore Event-Driven Architecture
A fictional board game retailer built to explore event-driven architecture end-to-end. Domain discovery, flow modeling, API generation, and running Spring Boot services - all in the open.
-
#08
Domain Modeling with ZDL: Aggregates, Commands, Events, and State Machines
ZDL is a compressed blueprint of the business: aggregates, commands, events, and lifecycles captured in one readable model. The point is not that generation replaces design, but the opposite: because the design is written down as ubiquitous language, generation can preserve it across contracts, code, documentation, and tests.
-
#09 DSL Modeling for APIs: Generate OpenAPI and AsyncAPI from ZDL
Writing YAML by hand is no fun, but you can generate your OpenAPI and AsyncAPI definition files from a Domain Specific Language instead. With ZenWave SDK you convert a compact ZDL model into those contracts, saving time and effort while keeping your APIs aligned with best practices and standards.
-
#10 Treat Your Domain Models and APIs as Products
A domain model and the APIs it generates are not implementation details of a service. They are the contracts every consumer depends on. Treating them as products means designing them, validating them, versioning them, publishing them, and evolving them with the same discipline as any software artifact.
-
#11 The Master YAML: A Manifest of Your Entire Architecture
As Arcadia Editions grows, no single person knows the whole system anymore. The big picture scatters across dozens of repositories. ZenWave architecture manifest pulls it back into one place with every domain, service and contract and how they connect, without copying any of it. And as you work with your API contracts, the pipeline keeps it current: adding services, artifacts, versions... So this manifest and ZenWave Platform keeps your whole architecture connected and navigable for humans, tools and agents.
Latest Articles
View all
DDD In Practice: From Ubiquitous Language DSL to Complete Spring-Boot Kotlin Project
How to use ZenWave SDK to implement DDD principles in practice, from Event Storming discoveries to a complete Spring Boot Kotlin project using ZDL as Ubiquitous Language.
→ Read articleAsyncAPI: Which Reference Strategy to Use and Why
AsyncAPI's $ref lets a client spec point to a provider spec without duplicating it. When that spec drives both application contracts and infrastructure provisioning, the URL behind the $ref is an important decision to answer. A pinned version, a environment alias, or the tip of main: each offer different trade-offs.
→ Read articleAsyncAPI: Your Application Has Two API Surfaces
The AsyncAPI spec says an application SHOULD describe its operations, but not necessarily all of them in the same spec file. Not all operations are equal: some define the public API surface, what the application offers; others describe internal dependencies, what it needs. It makes sense to model them separately.
→ Read articleHands-On Architecture
View all-
AsyncAPI Shopping Cart: From Event Contract to Running EDA
How to define an AsyncAPI + Avro contract and derive Kafka producers/consumers for a multi-module event-driven application.
→ Read tutorial -
Order Fulfillment (Kotlin): From Ubiquitous Language to Running Service
How to use a DSL to catpure the Ubiquitous Language and derive a full backend service from it.
→ Read tutorial -
Clinical Tool Modulith (JPA): From Multiple Bounded Contexts to One Modular Monolith
How to derive a modular monolith from multiple bounded contexts, each modeled in DSL, and generate aligned APIs and implementation.
→ Read tutorial
Recent Talks
View all-
Arquitecturas EDA con Spring Modulith y AsyncAPI - Codemotion 25
Cómo diseñar e implementar arquitecturas orientadas a eventos usando Spring Modulith y AsyncAPI, presentado en Codemotion 2025.
→ Watch talk -
Event-Driven Architectures with Spring Modulith and AsyncAPI (Spring I/O 2025)
How to build event-driven architectures using Spring Modulith and AsyncAPI, combining modular monolith patterns with async contract-first design.
→ Watch talk -
AsyncAPI: Full Code Generation for Java with ZenWave SDK
A deep dive into full code generation for Java from AsyncAPI definitions using ZenWave SDK, covering producers, consumers, and contract testing.
→ Watch talk
Artículos en Español
Ver todos-
DDD en la Práctica: De Lenguaje Ubícuo en DSL a Proyecto Completo de Spring Boot con Kotlin
En este artículo exploraremos cómo utilizar ZenWave360 para generar un proyecto completo de Spring Boot con Kotlin a partir de un modelo DSL de Lenguaje Ubicuo.
→ Leer artículo -
Spring Boot con Kotlin frente a Java: Comparativa práctica y guía de integración empresarial
Análisis práctico del desarrollo con Spring Boot usando Kotlin frente a Java, comparando sintaxis, productividad e integración con herramientas como OpenAPI, AsyncAPI y Avro en un entorno empresarial.
→ Leer artículo -
Evitando el API Drift en APIs asincronas con AsyncAPI y ZenWave SDK
Evita errores y pérdida de alineación en tus APIs asíncronas. Descubre cómo AsyncAPI y ZenWave SDK pueden ayudarte a prevenir el API Drift mediante generación de código automatizada y buenas prácticas DevOps.
→ Leer artículo