Colophon.
The tech, decisions, and integrations that make this site tick. Short list, on purpose.
Framework & Hosting
- visit ↗Astro 5Static-first with islands. Astro components render on the server, React only hydrates where it has to.
- visit ↗React 19Reserved for the interactive bits — the bio slider and the social icon row.
- visit ↗VercelStatic output with a few SSR routes for Hardcover, GitHub, and Redis view counts.
- TypeScriptAcross components, content schemas, and the handful of API routes.
Content
- Astro Content CollectionsTwo collections so far — Thoughts (MDX) and Bookmarks (JSON), both validated with Zod.
- visit ↗ShikiSyntax highlighting with Catppuccin Latte for light mode and Tokyo Night for dark.
- open →ChangelogGenerated at build time from git log — no manual list to forget about.
- open →RSSAuto-generated from the Thoughts collection, sorted newest first.
Styling & Design
- Tailwind CSS 4Utility-first with a class-based dark mode variant. Custom design tokens live in @theme.
- visit ↗LiterataSerif for body and headings. System sans is used sparingly for UI labels.
- View TransitionsAstro's ClientRouter for smooth page swaps. Dark mode toggle uses a clip-path circle reveal from the click point.
Integrations
- visit ↗HardcoverGraphQL-powered reading list on the Readings page. Spines render with a cover popup on hover.
- visit ↗SpotifyNow-playing widget with a spinning vinyl disc. Currently mocked; live OAuth refresh is on the list.
- visit ↗Upstash RedisPer-post view counts with stale-while-revalidate caching and a graceful fallback.
- GitHubContribution heatmap on the Projects page. Pulled at build via the public contributions API.
Performance & Polish
- Static outputPre-rendered HTML with selective hydration. Only the interactive islands ship JavaScript.
- PrefetchingAll routes prefetched on hover for near-instant navigation.
- OG imagesPer-post share previews generated dynamically via @vercel/og.
Inspired by
A lot of what's here started as me trying to replicate something I saw on itsmeray.com and rashadcodes.com , then tweaking until it felt like mine. Both are worth a click.