Yeah, I’ll just say it upfront: I vibe-coded this blog using Claude. The only thing I actually paid for was the domain name. Everything else—the Hugo setup, the templates, the deployment, the DNS—came together over an evening of back-and-forth with an LLM and a few clicks.

This is the story of how that happened, and why the plan I started with isn’t the plan I ended up executing.

How I actually got here

I started where most people start: GitHub. Pushed my Hugo source to a repo and looked at GitHub Pages as the obvious free hosting option.

Two problems killed it:

  1. Cost barrier. To do what I wanted with GitHub Pages, the path led to a paid plan (around $4/month). Not a huge number, but enough friction to make me pause and look around.
  2. Private repo. I wanted my repo to stay private. GitHub Pages on the free tier won’t serve a private repo. That was the dealbreaker.

A quick search with Claude pointed me to Cloudflare Pages. Connects to private GitHub repos. Free for what I need. Builds on every push. Done.

So the actual stack ended up being:

No server. No CI pipeline I had to write. No Docker. Just git push and the site updates.

How Claude built it

This is the real vibe-coding part. I had my resume, a PDF with work history, skills, certifications. I pasted the content into a Claude conversation and asked: “Use this resume data to create a personal blog template for Hugo.”

Claude generated the whole structure within minutes. The front matter, the sections, the layout, the copy. It pulled directly from my background and turned it into a working site skeleton. No blank page, no starting from scratch. Just “here’s my resume, turn it into a website.”

Then I did what I usually do with Claude’s output: I refined it. Trimmed sections that felt too verbose. Condensed the skills list so it wasn’t overwhelming. Reorganized the work experience to highlight what actually mattered. Removed details that didn’t belong front-and-center. The generated structure was solid. I just shaped it to feel like me, not like a generic resume converted to HTML.

From paste to deployed: a few hours of back-and-forth with Claude, a domain purchase, and one evening pushing to Cloudflare Pages.

What this blog is for

Now that the site exists, I want to actually use it. The plan is to write about:

For a while, this site has been sitting here as essentially a resume in HTML form. That’s about to change.

The honest summary

I wanted a blog. I bought a domain, vibe-coded the site with Claude, and put it on Cloudflare Pages. The domain cost me money. Everything else cost me an evening.

If you’ve been sitting on a Hugo project, or any project, that you’ve been “going to start” for months: this is your sign. The friction to ship has never been lower. The hard part, and the part I’m still working on, is writing the posts that actually go on the thing once it’s live.

This is post number one. Let’s see where it goes.