How this site is built
How this site is built, and what it costs to load.
I spend my working life on other people's infrastructure, so I may as well document my own. Everything below is read at build time. I have not typed any of it, which means it cannot go stale.
$ git log -1 --oneline
afdaabe Keep the build block out of the exported netlify.toml
- branch
- main
- committed
- 23 Sept 2026, 06:36 UTC
- built
- 23 Sept 2026, 06:45 UTC
- node
- v24.14.0
- next
- 16.3.1
- routes
- 14 prerendered
Everything except the OG image endpoint is static HTML, generated at build and served from the edge.
What it ships
Most of the work here went into what does not load.
- reveals
- native CSSScroll reveals use animation-timeline: view(). They run on the compositor and ship zero JavaScript.
- gsap
- deferredOnly the pinned request trace needs scrubbing and per-section state. GSAP is imported inside an effect, so it is never in the initial bundle.
- three.js
- removedThere was a WebGL cluster here. It cost 883KB, only ran above 1024px, and the fallback everyone else saw explained nothing. A legible diagram that works on a phone was worth more than a 3D one that most people never loaded.
- fonts
- Inter, self-hostedSubset and preloaded through next/font, with font-display: swap. No request to a third-party font host.
- client components
- fourSmooth scroll, request trace, cluster board, reading progress. Everything else is a server component and arrives as HTML.
- analytics
- noneNo trackers, no cookie banner, nothing to consent to.
Design
- type
- InterThree weights. 400 for body, 600 for headings, 700 for display.
- colour
- six tints, one accentEach layer of the request path owns a colour and keeps it everywhere it appears, so the same green always means the machine. Four greys carry the rest.
- mode
- oneNo theme toggle. The dark bands are a contrast device, and a second theme would have taken that away from them.
- cascade
- @layer base / componentsBase styles are layered so Tailwind utilities still win. Unlayered CSS beats layered CSS regardless of specificity, which silently breaks every utility if you get it wrong.
- motion
- opt-out honouredEvery animation sits behind prefers-reduced-motion. Turn it off in the OS and the site still reads.
How it deploys
Push to main, build, prerender, done. The whole site is static, so a deploy is a file copy and a rollback is the previous immutable build.
I could run this on EKS. It would be a silly thing to do. The rest of this site argues that most teams climb before they need to, so putting a personal site on a cluster to show off would make the point badly. This is rung one. Rung one is right here.
Source
All of it is public, including the commits where I got it wrong. If you want to see how a section is wired rather than take my word for it, the file is in there.
github.com/DeepBoda/deepboda.in