March 28, 2026
Building My Personal Website with Astro
Why I chose Astro for my personal site and how I set it up with content collections, Tailwind CSS, and zero JavaScript.
I’ve been meaning to build a personal website for a while now. After evaluating several options, I landed on Astro — and I’m glad I did.
Why Astro?
The main reasons came down to simplicity:
- Zero JS by default — Astro ships pure HTML and CSS unless you explicitly opt into client-side JavaScript
- Content collections — Blog posts are just Markdown files with typed frontmatter
- Fast builds — The site builds in under a second
The Stack
Here’s what I’m using:
- Astro — Static site generator
- Tailwind CSS — Utility-first styling
- Markdown — Content authoring
- Vercel — Deployment
Content Collections
The best part about Astro is content collections. I define a schema for my blog posts:
const blog = defineCollection({
schema: z.object({
title: z.string(),
description: z.string(),
date: z.coerce.date(),
draft: z.boolean().default(false),
}),
});
Then I just write Markdown files and Astro validates them at build time. No database, no CMS, no API calls.
What’s Next
I plan to write weekly posts about engineering topics. I’m also building a “shelf” — a curated list of articles, videos, and blogs I’ve been consuming. Think of it as a public bookshelf for the internet age.
Stay tuned.