Why I Chose Astro for My Personal Site

After years of running a WordPress site, I decided to rebuild from scratch with Astro. Here’s why.

Content First, JavaScript Second

Astro ships zero JavaScript by default. For a content-driven personal site, that’s exactly what you want — fast pages with no unnecessary client-side runtime.

File-Based Content Collections

Astro’s content collections let you keep blog posts as MDX files alongside your code. Each collection gets a schema, which means your frontmatter is validated at build time.

const blogSchema = z.object({
  title: z.string().min(1),
  date: z.iso.datetime(),
  description: z.string().min(1),
  tags: z.array(z.string()).default([]),
});

Static Generation

The entire site compiles to static HTML. No server runtime, no database, no cold starts. GitHub Pages handles hosting for free.

Built-In MDX Support

With the @astrojs/mdx integration, you get full MDX support out of the box — meaning you can embed components directly in your markdown when needed.

The result is a fast, maintainable site that’s easy to extend.