🥖 BATCH · Substrate
No build. Just ship the source.
BATCH is a no-build, server-rendered hypermedia substrate on Bun. It's the bottom layer that GRAIN and the product stand on. Bun runs the TypeScript directly, so the browser gets near-zero framework JavaScript. The whole point is to show that modern HTML, CSS, and a small runtime don't need a bundler.
Live · runs this siteNo build step
Nothing between source and server: no bundler, no transpiler. Ship the source, the runtime reads it.
Native-first
Server-rendered hypermedia, with near-zero client JavaScript. The audit numbers are the proof, not a promise.
Zero runtime deps
Third-party runtime dependencies stay at zero (today, only Bun). Platform builtins and dev tools don't count.
Addressable and operable
Every surface has a semantic address: the base a person and an AI can both drive. That part is GRAIN, above.
Static export = projection
Export crawls the running server and freezes it to static files, never a second renderer, so the export can't drift from the app.
Audit engine built in
A framework-generic perf + SEO/AEO harness benches any app, not just this one. The numbers are the proof.
The canonical docs are homed here and render through MILL, at /batch/docs:
Part of the BREAD stack, alongside GRAIN, MILL, PROOF, CRUMB, and PANTRY.
🤖 Built with Claude. I don't prompt and pray, I prompt and prove. Every commit here is co-authored with an AI, on purpose. How I actually work with AI, receipts and all →