🍞 BREAD · The stack
Four layers, one direction, and the app that runs them.
Every page here runs on BREAD. BATCH serves the pages; GRAIN supplies the design system; MILL renders the content; PROOF holds the plans; CRUMB runs the guided tour. PANTRY is the installable app that composes the four core layers. Its review cockpit can also use CRUMB tours.
The stack at a glance
Want to start building?
Learn the stack as you build your own thing on it. Drop this one link into the coding agent on an empty project and it will interview you, read the stack for itself, and propose which layers you actually need before writing a line: tjakoen.github.io/kickstart.
Start a project with KICKSTART →
The layers
The bottom layer: server-rendered hypermedia on Bun with no build step and near-zero client JavaScript. Bun runs the TypeScript directly, nothing between source and server.
See the substrate →On top of BATCH: an AI-interaction design system where a person and an AI operate the same controls through one vocabulary, with the AI's presence shown as a visible signal (grain = AI).
See the system →Above both: a Markdown-to-pages engine that renders GRAIN pages from content. It manages this site's notes and docs, a layer above BATCH and GRAIN, an extension of neither.
See the engine →Above MILL: plans are markdown files, and PROOF's board is a projection of them, never the other way round. The AI maintains the files; the board is for the human watching.
See the board →Also above GRAIN and MILL: tours are markdown files, and CRUMB turns them into a guided walkthrough that highlights real, live surfaces. It never edits your app, only reads and highlights it, and doubles as an AI-review mode.
See the tour layer →The app that runs them
This portfolio is the other consumer of the same four layers: two composition roots, one stack. PANTRY is the neutral, installable one; this site is the personal one, with its own résumé and notes on top.
One request, end to end
Open Ten Times Zero Is Still Zero, then use its Source tab to follow the same page back to Markdown. This is what happens to that request:
- BATCHThe server receives the URL and hands the note route to MILL.
- MILLIt reads the Markdown, renders the content, checks its grade, and wraps the result in the portfolio shell.
- GRAINBATCH's renderer expands the shared interface components used by the note and shell.
- BATCHThe server returns a complete HTML document. The browser follows an ordinary page link; no client-side router takes over.
Each app mounts what its routes need. PROOF serves the plans board; CRUMB serves the portfolio tour. PANTRY can host its own review tours or read tours from a project it proxies.
One direction of dependency
Each layer builds only on the ones beneath it: BATCH imports nothing inward, GRAIN imports nothing from BATCH but one port, MILL sits above both, and PROOF sits above MILL. CRUMB sits at that same altitude, also above GRAIN and MILL, reusing GRAIN's lamp and MILL's parser rather than shipping either again. That purity is what lets each become its own repo once proven.
PANTRY (and this portfolio) mount the same four core layers into one running server: two composition roots, one stack. PANTRY can additionally serve CRUMB tours when configured; this portfolio mounts CRUMB for its own walkthrough. Both stay honest about which parts are live and which are still building.
AI helps me write and review. I direct the work, test the result, and answer for what ships. How I work with AI →