Showcase · SwarmCoder
A small demo is fine for showing how a framework works, but it does not tell you very much about whether you could build something serious with it. So this page showcases SwarmCoder, which is a multi-agent coding system that was built entirely on ZeroZ4J, and goes through its screens one by one to show which parts of ZeroZ Stack and ZeroZ DB are doing the work behind each of them.
The application in one table
In a conventional stack an application like this would usually be written in Java, SQL, JSON and TypeScript, and the same data model (stories, requirements, runs, workers) would be described three times. In SwarmCoder every row below is plain Java, and the same objects go from the database to the screen without being mapped into anything else.
The board, the requirements list and the dependency graph are all built with the ZeroZ Stack component model, i.e. you create a component in Java (much like you would in Swing or Vaadin) and the client is compiled to WebAssembly and runs in the browser. There is no HTML template and no JavaScript in the project, so the board columns and the story cards are ordinary Java classes that the IDE can refactor and the compiler can check. The graph is the one screen where people would generally reach for a JavaScript library, and it is plain Java as well.

The five column board, with every column and card created from Java component code.

The requirements list, where each row is rendered straight from the same requirement object that is stored on the server.

The dependency graph and its legend, drawn in the browser by Java code running as WebAssembly.
While a build is running the workers change state many times a second, and in a conventional web application you would usually poll a REST endpoint for this or write a separate WebSocket protocol by hand. In SwarmCoder the run and its workers are LiveSync objects, so when the server changes one of them the updated object is pushed to every client that is watching it, over the same WebSocket that carries the method calls. The card that stops to ask a question, the workers writing code and the timeline all work this way, and there is no polling code anywhere in the client.

A build stopped to ask a question, and the card changed on the board as soon as the server changed the story.

Workers on a local model writing code, with each worker's activity pushed to the screen while it happens.

Every worker attempt on one axis, including the failed ones (in red), which can be replayed afterwards.
When you accept a delivery or send it back with a note, the client simply calls a method on a Java service interface, and the server method receives exactly the object the client sent (in packed binary and not as JSON). So there is no controller, no DTO and no mapping code between the button and the server logic, and if you rename a field on the story class the compiler tells you about every place on both sides that has to change. Access to these methods is checked on the server with the usual @Secured and @RolesAllowed annotations.

The build has finished and is waiting for your review, and the accept and send back buttons on the card each call one service method.

After the call the story object is updated on the server and the card moves to delivered.
SwarmCoder keeps a lot of data that is connected in many directions, e.g. a requirement points to its checks, a check to the test that proved it, the test to a commit, and the commit to the worker and the run that produced it. In a relational database that would essentially be a large number of join tables and an ORM to keep in step with the classes. In ZeroZ DB these are just Java references between objects, written in atomic transactions and looked up through maintained indexes, which is why you can follow the trace in either direction and why a finished run (failed attempts included) is kept exactly as it was.

Every task with its workers, turns and tokens, read straight from the stored run.

The requirement now reads delivered, with its passing check and the story that delivered it, which is one walk along the object graph.

The finished run, kept with its graph and timeline so that it can still be audited later.