---
title: How I Rebuilt My Blog From Scratch With AI
canonical: "https://jpshlk.com/blog/rebuilding-my-blog-with-ai/"
pubDate: "2026-07-10T00:00:00.000Z"
author: Josh Pasholk
description: "I tore this entire site down to the studs and rebuilt it with Astro 7, with an AI doing the heavy lifting. Here's the story, and the start of a series."
tags: [rebuild, ai, astro]
---

![Illustration of a house being rebuilt at night: a crane lowers dark code panels into the wooden framing on one side while the finished side glows with browser windows, and a small builder with a blueprint and coffee stands by the front door.](../../assets/rebuilding-my-blog-with-ai.png)

*This is part 1 of my [rebuild series](/tags/rebuild/), where I document tearing this site down and rebuilding it from scratch.*

If you're reading this, you're looking at a brand new website. Same posts, same me, but every single line of code under the hood was rewritten from scratch. And I'll be honest with you: I didn't write most of it. An AI did. I just told it what I wanted, made the decisions, and learned a ton along the way. 🤙

This post kicks off a series documenting the whole thing, in pieces simple enough that I could have followed them a couple years ago.

## Why rebuild at all?

The old version of this site was a port of a popular theme, [tailwind-nextjs-starter-blog](https://github.com/timlrx/tailwind-nextjs-starter-blog), adapted to [Astro](https://astro.build). It served me well while I was learning, but it had problems:

- It was somebody else's design with my name on it.
- It was stuck on Astro 3, several major versions behind.
- The homepage was just a list of posts. I wanted a **landing page** (about me, my work, my hobbies) with the blog one click away.
- The dark mode toggle was broken. (More on that in part 4. It was broken in a *really* educational way. 😜)

I also wanted serious SEO, and it turns out the founder of Yoast (the WordPress SEO plugin that runs half the internet) has been building [SEO tools for Astro](https://joost.blog/astro-seo-complete-guide/). That sealed it.

## How the AI part actually worked

I used Claude Code, and the part that surprised me most wasn't the code. It was the *planning*. Before touching anything, it:

1. **Explored my repo** and figured out how the old site worked, including things I'd forgotten about.
2. **Researched the tools.** It looked up the actual npm versions and discovered that the SEO package I wanted required Astro 6 or 7, which changed the whole plan.
3. **Asked me real questions.** Not "are you sure?" busywork; actual decisions: Netlify or Cloudflare? Keep the projects page or fold it into the landing page? And my favorite: *"Your config says `jshlk.com` but your site title says `jpshlk.com`. Which one is right?"* It found a typo in my canonical domain that had been sitting there the entire time.

Then it wrote a phased plan, and I pushed back on it. The first version was a "refactor." I said no: complete rewrite, build the design system first, then the landing page, then bring the content over. It threw away the old plan and made a new one. That back-and-forth is the actual skill of working with AI, as far as I can tell: it does the labor, but *you* have to know what you want.

## The plan we landed on

Six phases, each one a working checkpoint:

1. **Back up the old site** to a git branch (part 2)
2. **Clean-slate scaffold:** Astro 7, Tailwind CSS v4, TypeScript, no UI framework (part 3)
3. **Design system:** colors, type, components, and a dark mode that finally works (part 4)
4. **Landing page:** hero, about, work, hobbies (part 5)
5. **Content migration:** all my posts, without editing a single one (part 6)
6. **SEO layer + launch:** the Yoast founder's toolkit, then launch day (parts 7 and 8)

Plus bonus parts on teaching the AI my writing voice (part 9) and the MCP servers that make AI dev tools way smarter (part 10).

## The plan kept growing

Once the six phases were done, the site kept sprouting features, and each one turned into its own short post. Parts 11 through 17 are already written:

- Every post gets its own **share image** (part 11)
- A **related posts** section with no database (part 12)
- The little **reading time** label (part 13)
- A **copy button** on every code block (part 14)
- **Full posts in the RSS feed**, not summaries (part 15)
- A **/uses page** built by grepping my own posts (part 16)
- **Privacy-friendly analytics** with GoatCounter (part 17)

And the rebuild doesn't stop at launch. Five more parts are on the roadmap, each one a feature this site doesn't have yet:

- A **/now page** for what I'm into lately (part 18)
- My **RoutineHub shortcuts** as first-class content here, not just links (part 19)
- **Static site search** with Pagefind (part 20)
- **Comments** (part 21). The old site ran Giscus, and I'm deciding between bringing it back or wiring comments to Bluesky or Mastodon replies instead. That decision is the post.
- **Generated share images**, built per post at build time (part 22)

Build the thing, then write about the thing. That's the whole model.

## What I'd tell past me

You don't need to be an expert to do this. You need to be able to *read* code well enough to sanity-check it, describe what you want clearly, and make decisions when asked. The AI handled Astro's breaking changes, the Tailwind 4 migration, and a hundred details I'd have tripped on. I handled the taste, the priorities, and the "wait, that's not what I meant."

That division of labor felt fair. And I understand my own site far better than when it was a theme I'd ported and half-understood.

Next up: the five-minute git trick that made deleting my entire site feel safe. That one drops in a few days, and I'll link it here when it does.

Thanks for reading and have a good one! 🤙
