Site

How it’s built

How this site is built. It is small on purpose: no client framework, no animation library, and every page prerendered and served from the edge.

Platform

Astro
Every page is prerendered at build time. Blog posts and case studies are MDX content collections, one file per language.
Cloudflare Workers
Static assets are served from the edge. A small Worker runs first on the localized routes and redirects to English or Spanish from the language cookie or Accept-Language, so there is no client-side redirect.
Open Graph cards
Generated at build time with Satori and Sharp from each page’s own title and description: 1200×630, one per page and language.

Performance

Navigation
Astro’s ClientRouter with view transitions, and Speculation Rules that prerender a page on hover in Chromium, so most navigations are instant.
Fonts
Newsreader and Hanken Grotesk, self-hosted as partial instances of the variable fonts with only the axis ranges the site uses: about half the original weight.
Measurement
Lighthouse CI audits the main pages on every pull request; Cloudflare Web Analytics reports real-user Core Web Vitals without cookies.

Design and motion

Tokens
Warm neutrals and five accent palettes in OKLCH, with light and dark themes applied before first paint.
Motion
CSS first: scroll-driven animations for the timeline, view transitions between pages, and a few lines of script for the stat counters. All of it behind prefers-reduced-motion.

Workflow

Quality
TypeScript, ESLint, Prettier and Node’s test runner for the edge logic, run in CI with a preview deployment per branch.
See the design system