Rebuilding celados.com
celados.com has had three versions in two days. This post covers what each one was, why we moved on from it, and where the site lives now. It is also the first post in this Updates section.
Version one: a page in a Worker
The first celados.com was a single hand-written HTML file, inlined into a Cloudflare Worker and served as-is. That was the right size for one page with a short list of products: nothing to build, nothing to configure, deployed in minutes.
It stopped being the right size within the day. As we added products (OnType, PolishX, Whiteboard Animation, Wearly AI) with their own preview images, founder photos and a share image, the page became a long file where copy, layout and styles were tangled together. Every edit meant scrolling through markup to find a sentence.
Version two: components and data
We rebuilt the page with TanStack Start, the same framework our product sites use. Three choices shaped it:
- Copy is data. Everything the homepage says, including the product list, lives in one TypeScript file. Components only render it. Changing a product description no longer touches layout.
- Components, not one file. Navigation, hero, product grid, open-source list, founders and footer are separate components on shared tokens for colour, type and spacing, with light and dark themes.
- Static output. Every page is prerendered at build time and served as a
static asset. A small Worker in front adds security headers, sends
wwwto the apex domain, and sends unknown paths home. There is no backend.
Deploys moved to Cloudflare Workers Builds, so a push builds and ships the site without anyone running a command.
Version three: moving into Delta
The rebuilt site still lived in its own repository, and that was the last mismatch. Delta is the repository where we build our products: one repo hosting several independently deployed apps that share infrastructure and code but never a database or login. OnType, PolishX and Whiteboard Animation already live there, each as its own app.
A homepage that describes those products belongs next to them. Moving it in gave it, without extra work:
- One toolchain. The same Vite+, TypeScript, formatting and lint rules as every other app, and dependency versions pinned in one shared catalog.
- One delivery convention. The
mainbranch deploys to celados.com. Atestbranch deploys to a separate test site behind Cloudflare Access, and every other branch gets its own preview URL. - One place for agents to work. Most of our code is written with coding agents. In Delta they find the same layout, the same documented contracts and the same checks for every app, so work on the homepage looks like work on any product.
The move was a migration, not a rewrite. We compared the production build with the live page before switching: the same HTML structure, the same response headers, the same redirects. Lint findings the old code had are not hidden. They are recorded as debt in the app's README, to be paid down rather than carried forward silently.
What comes next
Being in Delta makes it cheap to grow the site. This Updates section is the first addition: each post is a Markdown file in the repository, compiled to HTML at build time and prerendered like the rest of the site. There is an RSS feed if you want to follow along.
Each product now has its own page here too, starting with OnType, and you can get a short email when we ship something new.