This site has almost no moving parts on purpose. It’s a static site I fully own, it costs effectively nothing to run, and there’s no database, no server to patch, and no third-party CMS deciding my content’s fate. Here’s the whole thing.

The stack

  • Hugo builds the site from Markdown. Every post you see is a .md file with a bit of front matter.
  • PaperMod is the base theme, with my own layout overrides on top - a custom homepage, this page’s layout, and a few tweaked partials. The type is set in Geist.
  • GitHub Pages hosts it. Hugo publishes straight into a docs/ folder, and Pages serves that folder. Push to the repo and the new build is live.
  • DNS lives on Route 53, and GitHub Pages serves the TLS certificate for the custom domain (a CNAME file pins dudutwizer.com). Nothing proxies the site.

That’s the entire hosting story: write Markdown, hugo, commit, push.

The only dynamic bits

A static site can still feel alive without a backend:

  • The GitHub contribution graph on the homepage is fetched client-side from a public contributions API and drawn into a small CSS grid - no build step, no server, and it scales to fit any screen.
  • /llms.txt is a curated markdown index of the whole site, so any LLM can read it in one fetch - the cheapest RAG you’ll ever ship.
  • For a while the site also had a “David’s AI” chat sidebar backed by an xpander agent and one small Cloudflare Worker; it’s retired now, but the build is written up in two API calls to put an AI agent on a static site.

Why bother

Because I’ve watched too many personal sites die inside someone else’s platform. This one is a folder of Markdown and a theme. If every service it touches disappeared tomorrow, I could rebuild and redeploy it in minutes, anywhere. Own your platform - it’s the same thing I say about AI stacks, just smaller.