Building This Site
After years of meaning to build a personal site, I finally sat down and did it. No grand redesign cycle, no agonizing over frameworks for weeks. Just a weekend of focused work.
Why Astro?
I wanted something that ships zero JavaScript by default. Most personal sites don’t need a client-side framework. They need fast page loads and content that’s easy to write and maintain.
Astro checks all of those boxes. It supports Markdown out of the box with a great content layer API for type-safe frontmatter. The file-based routing makes the project structure intuitive too.
The Stack
- Astro v5 for the framework
- Tailwind CSS v4 for styling
- Markdown for blog content
- Vercel for hosting
Design Decisions
I went with a warm, personal aesthetic. Serif headings (Lora), clean sans-serif body text (Inter), and a soft colour palette. The goal was to feel more like a well-typeset document than a SaaS landing page.
// Type-safe content collections in Astro v5
const blog = defineCollection({
loader: glob({ pattern: '**/*.md', base: './src/data/blog' }),
schema: z.object({
title: z.string(),
date: z.coerce.date(),
}),
});
What’s Next
This is just the beginning. I plan to write about what I’m learning and the occasional opinion about software engineering. If you’re reading this, thanks for stopping by.