Will Doenlen

How I made this site


I recently decided to use Astro to build this new version of my personal website.

The requirements for my website were:

  • Be simple, easy to read and very fast to load
  • Be very simple to edit and deploy
  • Showcase my projects
  • Support a blog in Markdown
  • Be extensible without much fuss if I ever want to do something fancier

That naturally led me to static site generators. There are a lot of choices out there these days but I wanted to stay in the JavaScript ecosystem since it’s what I know best and I have an implicit goal to not faff around with tooling that much. and I quickly narrowed down to Gatsby, Next.js, Astro or just writing HTML the old-fashioned way.

Gatsby and Next.js are both too much complexity for my needs — I don’t want to write GraphQL or spend time learning framework-specific concepts for what amounts to a projects page and a blog. Writing vanilla HTML and JS felt like a genuinely reasonable option but I also decided against it because I want the ability to easily do something more complicated if I want. And with vanilla HTML/JS I’d just end up reinventing the wheel a bunch with templating anyway.

So I landed on Astro. What I found attractive about Astro was its speed, the fact that there’s 0 JS shipped to the client by default and the fact that it’s UI agnostic so I can easily mix and match whatever other frameworks I want. It was relatively quick to get up to speed on and there was already a simple blog example that I was able to quickly hack into what you see here. I probably spent no more than a day total getting my v0 up. I also chose Tailwind for CSS and Vercel for hosting and deployment. I’ll do some image optimization at some point.

And that’s it — it’s a simple, boring story, the way it should be.