Skip to content

Design your first system

EvidentSource Designer is a browser-based Event Modeling tool. Instead of starting from code, you sketch the system — commands users can send, events the system records, and state views that answer the queries your UI needs to make. Designer then generates the decide and evolve functions that implement the model.

This page walks through modeling a small system from scratch.

Go to designer.evidentsource.com and sign in. Create a new project.

Think about the things that happen in your system, not the tables you’d need to store them. For a todo app: TodoCreated, TodoCompleted, TodoDeleted.

Drop each event onto the canvas and give it a subject (the entity it’s about) and the data fields it carries.

Commands are what users or AI agents ask the system to do. Drop a command onto the canvas, connect it to the events it produces, and fill in its input shape.

For CreateTodo: input { title: string }, produces TodoCreated.

State views are the queryable projections your app reads. Drop a view, give it a name (todo-list), and mark the events it folds over.

Designer will scaffold the evolve function stub for you.

When the model feels right, hit Generate. Designer produces a buildable project for your language of choice — Rust, Go, TypeScript, .NET, or Python — with:

  • Typed command and event schemas
  • decide function stubs for each command
  • evolve function stubs for each state view
  • Tests wired up so you can validate the model immediately

See Generating code for the details of the output.

The fastest way to see your system running is to deploy the generated components to the free Sandbox. Designer has a one-click deploy button for this — see Deploying to Sandbox — or Designer → Sandbox for the end-to-end walkthrough.