Colophon
This site is hand-rolled in Next.js 15 (App Router) and React 19, with plain CSS modules and CSS custom properties. No design-system library, no CSS-in-JS, no build step beyond Next.js itself. Hosted on Vercel.
Three typefaces, served via next/font/google with the Latin subset only. Petrona carries display italic; body and UI use Funnel Sans; metadata and small labels use DM Mono.
Source on GitHub. View source on any page for the build-credit comment at the top of <head>.
- Framework
- Next.js 15 · React 19 · TypeScript 5.8
- Hosting
- Vercel · Analytics + Speed Insights (non-blocking)
- Styling
- CSS Modules · custom-property tokens · no preprocessor
- Type
- Petrona · Funnel Sans · DM Mono
- Colors
- --bg #15120d--ink #ece3cf--accent #5ecbcb
- Quality gates
- lighthouse · desktopperf 100a11y 100bp 100seo 100lighthouse · mobileperf 98a11y 100bp 100seo 100wcag 2.1 aa0 axe-core violations
Last verified 2026-05-12. Categories below 95 or any serious axe violation block the merge — see .github/workflows/quality.yml.
- Reveal
- IntersectionObserver, JS-opt-in (no-JS visitors see content immediately)
- Domain & TLS
- jasongrant.me · DNS via Cloudflare · TLS via Vercel (Let’s Encrypt)
- Newsletter
- Designing Forward on Substack
- Repo
- github.com/jasongrant/jasongrant.me