N°06
KANBANi
the conductor 2026
The board that conducts your agents, and waits for your hand.
The challenge
KANBANi needed a front door before it had a product page: a place that says what the board is in one line, takes a request for early access, and gives nothing else away. The real front page had to exist and be reviewable by invited people without being public, and the whole site had to hold to the house standard it will later be judged by.
The approach
An Astro 6 site on Bun, static-first, built from a locked mockup. The root serves the holding splash — the conductor and the Stream, two keys, a request form; the front page waits at /preview behind Cloudflare Access, so the people invited see it and nobody else does. The form posts to one server route that sends a Slack message and stores nothing, so there is no data to protect. Fonts are self-hosted; there are no third-party requests.
Result
One page, one form, no data held.
The board that conducts your agents, and waits for your hand.
The evidence
Live screenshots, not mockups.
-
The holding page — the conductor and the Stream, two keys, one form; the front page waits at /preview behind Cloudflare Access. -
Full length — one static page, fonts self-hosted, the form the only script. -
Mobile at 390 pixels — the same page, one column.
Case study
KANBANi is the board that conducts coding agents and waits for the operator’s hand. Its site had to say that, take a name, and keep its counsel until launch.
What’s running
kanbani.dev is an Astro 6 site on the Bun runtime, static-first: every page prerenders, and the only server route is the request form’s. It is built in a three-stage Dockerfile and served by one process. Fonts (Geist Mono, Instrument Serif) are self-hosted; there are no third-party runtime requests.
The two doors
The root is the holding page: the conductor and the Stream, two keys, and a request form. The front page itself lives at /preview behind Cloudflare Access, out of the sitemap and disallowed in robots.txt; the operator adds an email to the policy and that person sees it. Launch is a change of route, not a rebuild.
The form
The request form posts to /api/early-access, which sends one Slack message through an incoming webhook held in the environment and stores nothing. No database, no mailing list, no record to secure.
Hosted and operated by MoonFactory
Built from its Dockerfile on infrastructure we own, Cloudflare-fronted, and deployed from a release branch by KANBANi — the product ships its own site.
The live site
Visit the live site at kanbani.dev (opens in a new tab).
Stack proof
Every claim is verifiable.
- Astro 6
- Static-first: every page prerenders at build time; the one server route is the request form's. Confirmed by the Astro v6.4.8 generator meta on the live site.
- Bun runtime
- Runs on Bun through the astro-bun-adapter, one process serving the prerendered pages and the form route, built in a three-stage Dockerfile.
- Cloudflare Access
- The front page lives at /preview behind an Access policy, out of the sitemap and disallowed in robots.txt, until launch. The root holds the operator's splash.
- A form that stores nothing
- The request form posts to /api/early-access, which sends one Slack message through an incoming webhook held in the environment and keeps no record of its own.
- MoonFactory-hosted
- Built from its Dockerfile on infrastructure we own and operate, Cloudflare-fronted, deployed from a release branch by KANBANi itself.
Infrastructure
- App Astro on Bun