Colophon

How this
site is built

Built with Claude Code, then set up and hosted on Cloudflare. Since I spend my working life on other people’s systems, it seemed fair to show the wiring on my own.

Stack

Boring on purpose.

Framework

Astro

Static site generation with TypeScript in strict mode. No React, Vue, or Svelte — the site has no client-side state worth a framework, so every page ships as HTML with a small amount of vanilla JavaScript for the motion and the contact form. None of it is needed to read a page.

Styling

Hand-written CSS

One stylesheet of design tokens and shared primitives. No Tailwind and no component library — a deliberate choice, since the palette and type treatment are the point and a utility framework would have meant fighting its defaults.

Typography

Archivo and IBM Plex Mono

Archivo is a variable font with both width and weight axes, which is what lets the name stretch to 120% without a second font file. IBM Plex Mono carries the labels and captions. Both are self-hosted rather than loaded from Google, so reading this page contacts no one but this server.

Motion

SVG, CSS and two small scripts

The integration map is inline SVG; its packets travel on native SMIL animation, and each node flares as one arrives. The rest is CSS — the name resolving on Archivo’s width and weight axes, the copper fill and reading line tied to scroll, the page-to-page transitions — plus three small scripts: one reveals each section as you reach it, one draws the copper wire that carries the map’s current down every page and powers each section on as it arrives, and one adds a soft light that follows a mouse pointer. No animation library. If your system asks for reduced motion, or you press “Pause motion” in the footer, every page is drawn complete and still.

Infrastructure

Set up and hosted on Cloudflare.

Hosting

Cloudflare Pages

Static assets served from Cloudflare’s edge network. The build runs on Cloudflare, not on my machine.

Deploys

Push to main

Every commit pushed to the main branch triggers a build and goes live. There is no separate deploy step and no staging environment — which keeps the discipline honest about what gets merged.

DNS and TLS

Cloudflare

The domain runs on Cloudflare nameservers with the site records proxied, and TLS is Full (strict) end to end.

Contact form

Pages Function → Resend

The form posts to a serverless function running on Cloudflare, which validates the message and hands it to Resend to deliver. Nothing is written to a database, because there is no database.

Source

Git and GitHub

Version controlled from the first commit. The repository is private for now.

Privacy

Nothing is watching you read this.

No analytics, no cookies, no tracking scripts. If you pause the motion, that one preference is remembered in your own browser and never sent anywhere. The fonts are served from this domain rather than Google’s, so reading any page here contacts nobody but this server.

The one exception is deliberate and confined to the contact page, which loads Cloudflare Turnstile to keep automated submissions out. It is a privacy- preserving check — no tracking cookie, no cross-site profile — but it is a request to Cloudflare, and claiming otherwise while shipping it would be a lie. Every other page makes zero third-party requests.

If you use the form, the message goes to my inbox and nowhere else — it is not stored, logged, or added to a list, because there is no list.

GET IN TOUCH →