Skip to main content
This tutorial takes you from an empty database to a drafted campaign you can read in the browser. It assumes nothing but Node 24, pnpm and Docker. Follow the steps in order — each one produces something you can see.

What you will build

A running API and web app, a customer base to target, a segment describing who to target, and a campaign generated for it. Along the way you will meet the seed script, the API’s sign-in endpoint, and the campaign composer.
Before you start, make sure Docker is running — the database lives in a container.

What you have learned

You have a running system, and you have used its main path end to end: sign in, read aggregates, define an audience, generate a campaign. Two things are worth noticing, because they are unusual for this kind of application:
  • The browser never talks to the AI provider. Generation happens in the API, which owns the model key and the prompt. See the generative pipeline.
  • Responses are validated twice — once by the server, once by the browser — against one shared definition. See the contract.

Where to next

Add a customer

Create one customer and watch every screen that shows customers reflect it.

Architecture

Why the code is arranged the way it is, and what each boundary buys.

API conventions

The rules every endpoint follows, before you call one from your own program.
Last modified on October 6, 2026