gmatt.dev — Personal Website
↗ View LiveMy personal website and blog, built with Astro 5, Tailwind CSS v4, and deployed to Cloudflare Pages as a zero-JS static site.
Overview
This is the very site you’re reading — a personal website and blog built with modern web tooling, with an emphasis on performance and simplicity.
Stack
- Astro 5 — static site generation with content collections
- Tailwind CSS v4 — utility-first styling with the new Vite plugin
- Cloudflare Pages — edge CDN hosting, free tier, automatic deployments from GitHub
- pnpm — fast, disk-efficient package management
Key design decisions
Zero client-side JavaScript by default. Astro ships only HTML and CSS unless an interactive component explicitly opts in. The result is a perfect Lighthouse performance score.
Content Collections as schema layer. All content types are defined with Zod schemas so TypeScript types are always in sync with the frontmatter structure.
Media URL abstraction. All image references go through resolveMediaUrl() — making it trivial to migrate from local /images/ to a CDN origin (Cloudflare R2) in a later phase without touching any page or component code.