Book a call

3 min read

Building in Transparency: How We Rebuilt Our Website

We moved our website from Framer to GitHub and Keystatic, gave it a colophon with a measured column, and published the misses along with the passes.

We rebuilt our own website this summer. Most of our client work sits behind NDAs, which leaves a studio like ours with exactly one project it can show in full: its own site. So we treated it that way, with a brief, a budget, and a standard of proof. The site has to demonstrate our craft on its own, in the open.

Leaving a platform we liked

The previous site ran on Framer, and we liked Framer. It is quick to ship with, the visual editing is genuinely pleasant, and for a long time it was the right tool for us. What changed is how we work. Our ideas increasingly begin as code, get refined as code, and ship as code, with AI agents involved at every step. A visual platform sits beside that process. A repository sits inside it.

The new site is a fully static build on Astro, with all content managed through Keystatic and stored in the same GitHub repository as the components that render it. Every essay, every label, every page is a file. Every change is a commit with a diff, a review, and a deploy. The agents we build with read and write the same repository the content lives in, so a structural idea travels from thought to deployed page without switching mediums. That is the shift that mattered: executing ideas at scale became easier because the whole site, words included, became one system under version control.

A colophon with a measured column

The page we care most about is the colophon. It documents how the site is made: the stack, the type, the design tokens, the motion, the accessibility work, and the performance budget. Two decisions turn it from a credits page into a working record.

First, it reads from source. The token counts, package versions, and font files quoted on the page are parsed out of the repository at build time, so the prose and the code are generated from the same place and cannot drift apart. The comment at the top of that module says it plainly: the record can’t lie.

Second, the budget plate prints every budget next to a measured result, stamped with the date and the method. The current stamp reads 1 September 2026, Lighthouse 13, median of sixteen mobile runs, measured against the live site rather than a local rig that flatters the numbers. Two rows record a miss, and they ship anyway: mobile LCP at 2.69 seconds against a 2.0 second budget, and the analytics bundle at 98 KB against an 80 KB line it outgrew when PostHog’s script grew. The rows we are proud of are printed with the same ink: 27 KB of interface JavaScript against a 40 KB budget, and a cumulative layout shift of 0.000.

Why publish the misses

A measured column that only ever reports success is decoration. The moment a reader suspects the failures are filtered out, every green number on the page loses its meaning. Publishing the two misses is what makes the passes worth reading.

There is a working rule behind the page: when a change moves a number, the audit is re-run and the plate is re-stamped. A figure that has quietly stopped being true is worse than no figure at all, so the stamp carries the date and the method, and the method is disclosed down to why we run sixteen Lighthouse passes instead of three.

This is the same stance we bring to client work. We put design system governance in code, write contracts that are committed and reviewable, and measure claims instead of asserting them. The colophon applies that discipline to ourselves, in public, on the one project we are free to show. If a studio’s pitch is that its claims are true, the site should be the first place you can check.