August 17, 2026
Building This Site
This site is built with Astro and deployed to Cloudflare Pages. It’s styled like a file explorer, which is an excuse to write a little tree UI.
Stack
| Piece | Choice |
|---|---|
| Framework | Astro |
| Deployment | Cloudflare Pages |
| Content | Markdown via Astro content collections |
| Styling | Plain CSS in a global stylesheet |
| Package manager | Bun |
Why Astro + Pages?
Astro ships static HTML by default, which is great for SEO and performance on a content-heavy personal site. Pages handles the hosting, custom domain, and global CDN without me running any servers. I only hydrate client-side JavaScript where I actually need it.
The file explorer UI
The UI is server-rendered first. Every file and folder is a real <a> tag pointing to a real route. Search engines see crawlable HTML; the file explorer is just the navigation chrome around it. If JavaScript fails, the site still works.
Content
Pages and writings live as Markdown in src/content/, defined as two Astro content collections with typed frontmatter. Routing for the static pages is handled explicitly, and the writings use a dynamic [slug] route.