jasongrant.me

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 100
lighthouse · mobileperf 98a11y 100bp 100seo 100
wcag 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