I built this site within a day using AI — here's how
I had been writing backend systems for 13 years at my last job in Amazon — distributed services, APIs, infrastructure at AWS scale. I can reason about latency, eventual-consistency, and fault tolerance in my sleep. But ask me to center a div and I’ll reach for Google/Stack Overflow like it’s the stone age.
Thankfully in this age of AI, you can go from concept to live in no time.
The setup
I used Claude Code — Anthropic’s AI coding assistant that runs in your terminal and understands your whole codebase. The starting point was Astro’s blog template: a solid scaffold with routing, markdown support, and RSS built in. My job was to turn it into something that felt like me.
The full stack: Astro for the site, Cloudflare Pages for hosting (free tier, auto-deploys on push to main), and a custom domain via Cloudflare DNS.
Step 1 — Domain and social accounts
This was by far the slowest part — and had nothing to do with technology.
I was apprehensive about putting my real name in the domain. It just didn’t feel right for a brand. So I started exploring directions — a few niche angles, a few that were too specific, a few that were just off — before eventually landing on a personal handle direction. Something that felt authentic without being just my name. shivinseattle.com clicked.
The tricky part: I couldn’t just pick a domain in isolation. Before committing, I had to verify that the matching social handles were available across YouTube, X, TikTok, Instagram, and GitHub. If even one major platform was taken, I’d have to go back to the drawing board. Fortunately @shiv_in_seattle was available everywhere, which made the decision easy — but finding that out took time. Lots of tabs, lots of searching before I could commit.
Once I had the name, registering the domain on Cloudflare took about two minutes.
Step 2 — Scaffolding the Astro template
This part was genuinely easy. One command:
npm create astro@latest -- --template blog
Pick the blog template, answer a couple of prompts, and you have a fully working site running locally. Routing, markdown support, RSS, sitemap — all included. I was looking at a live local preview within minutes.
From there, I described what I wanted to Claude Code in plain language — update the site title, add a projects table, wire up social icons, tweak the footer — and it handled the implementation while I reviewed the diffs. No fighting with CSS, no hunting docs.
Step 3 — Deploying to Cloudflare Pages
This is where I hit my one real snag. Cloudflare’s dashboard has a section called Workers & Pages, and if you’re new to it, the distinction isn’t obvious. Workers are for serverless edge functions. Pages is what you want for a static site like this.
I went down the Workers path first. Attempted a deploy, got a build failure. Spent a few minutes confused before realizing I was in the wrong product entirely. Once I found Pages — it’s a bit buried under the same nav item — everything clicked: connect your GitHub repo, Cloudflare auto-detects Astro and pre-fills the build settings, hit deploy. Done.
Every push to main triggers a build and deploy automatically. The whole pipeline took maybe ten minutes to set up once I was in the right place.
Total costs
Time — Under a day of actual work. About 3–4 hours on brand and naming (the domain deliberation was the longest stretch), then another couple of hours to build and deploy the site.
Money — Domain registration through Cloudflare: $11.57/year including taxes. I also use Claude Pro (~$20/month) which I pay for regardless — so that’s a subscription cost, not a project cost. Everything else — Cloudflare Pages, Astro, the tooling — is free.