Back to blog

5 June 2026

How I Built This Site with Astro

The stack and decisions behind this portfolio: Astro, React islands, and a 100/100 Lighthouse score.

  • #astro
  • #react
  • #web
How I Built This Site with Astro

I built this site with Astro because it ships almost no JavaScript by default, yet still lets me drop in React components wherever I need interactivity.

The stack

  • Astro — static-first framework with built-in content collections
  • React — for interactive islands (the dark-mode toggle and contact form)
  • TypeScript — type safety end to end
  • Tailwind CSS — fast, consistent styling

Islands, not pages

The whole site is static HTML, except two small React “islands”:

<ThemeToggle client:load />
<ContactForm client:load />

Everything else renders to plain HTML at build time, which is why the pages load instantly. It’s the kind of architecture I wish more apps used.

Want the source structure? It’s all driven from a single src/data/site.ts file, so updating my CV or projects is a one-file change.