— Grain Sessions · the course
Build a Grain app, top to bottom.
Whole Grain applications, built from scratch on screen — no slides, just the real work. Watch the line get built, then open the same app as code and read exactly how it's put together. Start at episode one.
— Read the code
The app from the sessions is open code.
grain-todo-list is the real, running application built across the series — every event, command, and read model in one readable repo. No toy snippets: the whole thing, where you can see how the primitives actually compose.
Open grain-todo-list ↗— The path
Five sessions, in order.
Each session adds a layer of the same app. Durations are exact; the focus tracks the build arc, scratch to shipped.
- 1Watch ↗
Orientation and the first events
1h 48mSet up a Grain app from scratch and model the domain as events and commands — the only path to state change.
- 2Watch ↗
Read models and the screen
1h 24mBuild projections (pure reducers) and queries — where a query is usually a whole screen.
- 3Watch ↗
Reacting asynchronously
1h 54mWire to-do processors and periodic tasks; turn events into event-driven workflows.
- 4Watch ↗
The reactive front end
1h 22mStream server-rendered UI with Datastar over SSE — the same architecture for web and terminal.
- 5Watch ↗
Multi-tenancy and shipping
57mMake tenancy structural (AI-safe by construction); package, test, and ship.
More sessions are added as the series grows. Subscribe to @obneyai to catch new ones.
— Go deeper
Talks, and a room full of people building this.
SciCloj · talk
Grain at SciCloj #11 ↗
The thinking behind the substrate, presented to the Clojure data-science community.
SciCloj · talk
Grain at SciCloj #12 ↗
More on event sourcing, CQRS, and why the closed set of primitives holds.
Clojurians · Slack
#grain ↗
Ask questions and watch the work happen in the open, in the Clojurians Slack.