← Back to blog

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:

  1. Zero JS by default — Astro ships pure HTML and CSS unless you explicitly opt into client-side JavaScript
  2. Content collections — Blog posts are just Markdown files with typed frontmatter
  3. 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.