I am Iván García Sainz-Aja

I am a programmer. I build tools to solve actual problems.

I model event-driven architectures, design API governance, and make good architecture visible and automatable.

I built tools like ZenWave SDK to help me think about software, talk about software, and validate software before writing any code... and then generate all the boring parts that are already present in the model.

With ZenWave Platform I explore these ideas further: making software architecture visible, navigable, and understandable for people, tools, and AI.

When I find something missing, I try to build it and contribute it back to the projects, specifications, and communities I depend on.

— Ivan Garcia Sainz-Aja
Ivan Garcia Sainz-Aja

Open Source

ZenWave Platform

Build and navigate the architectural world model of your business directly from your IDE, connecting APIs, schemas, domain models, business flows, and the services that implement them.

ZenWave SDK

Generate Spring Boot services, tests and documentation from domain models, business flows and API specifications.
The generated code speaks your domain language and provides consistent structure instead of repetitive scaffolding.

AsyncAPI Initiative

AsyncAPI TSC member and Ambassador. I contribute to AsyncAPI Studio, the VSCode Preview extension, Java and Kotlin generators, and tooling for provisioning Kafka and Schema Registry infrastructure. I also organized AsyncAPI Conference on Tour Madrid 2023.

Arcadia Editions

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.

Latest Articles

View all
A client AsyncAPI spec points through a $ref URL to three possible provider contract targets: a pinned version, production, or main. The main branch is highlighted as the recommended integration reference.
#asyncapi#eda#ddd

AsyncAPI: 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 article
The provider keeps its AsyncAPI spec in its own repository as the source of truth. The client references it via $ref from a separate repository, avoiding duplication and keeping ownership clear.
#asyncapi#eda#ddd

AsyncAPI: 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 article

Hands-On Architecture

View all

Recent Talks

View all

Artículos en Español

Ver todos