Meet Arcadia Editions: The Fictional Company I Built to Explore Event-Driven Architecture
Domain discovery, event modeling, API specs, and running code. All of it built in the open, through a domain complex enough to make the decisions interesting.
Domain discovery, event modeling, API specs, and running code. All of it built in the open, through a domain complex enough to make the decisions interesting.
The solution space is your business. But only if it needs to be discovered. If it is already known, you are not building a business, you are building a commodity.
We know what Arcadia Editions wants to deliver. Now we need to discover how. Event Storming is how you turn that conversation into a shared understanding of the business. This is what that looks like in practice.
Event Storming gives you sticky notes. ZFL gives them a structured home. Here is how the concepts map.
Large systems become unmanageable when everyone shares the same model. This post walks through the heuristic we used to find those boundaries in Arcadia Editions, looking for the business objects that act as centers of gravity for commands and events, and using the consistency requirement to draw the line around each one
Event Storming has two phases. First you discover the flow. Then you find the centers of gravity. The service field in ZFL is where that second phase becomes explicit, and where you start building the architectural world model.
ZFL describes a business flow with commands, events, services, and sometimes aggregate names. An AI agent can turn that into scaffolding for your service repositories.
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.
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.
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.
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.