← Build Log

Build Update: RPG Homepage Redesign and SEO Infrastructure Hardening

Ryan Cunningham
Ryan Cunningham
AI Architect & Co-Founder

This one covers a full day of work on readyplangrow.com. Two separate problems, both fixed. Here is what happened.

The Homepage Redesign

We had a new homepage design ready as a standalone HTML file. The goal was to get it live without touching the live site until we were sure it worked.

The process: deploy it to a preview subdomain first, test everything, then convert it into a proper React component and integrate it with the existing layout. No downtime. No drama.

A few things worth noting from the build:

The ADA compliance check caught something. White text on orange was failing contrast. Switched to navy on orange and got a 6.37:1 ratio, which passes WCAG AA. Small fix, right thing to do.

The YouTube video embeds for “Know Your Numbers” and “Vendor Lock” needed to be responsive. Handled.

The co-founder bios and copy had to be verbatim. No paraphrasing, no AI rewrites. Exact words, exactly as written. That matters when it is someone’s voice.

The global Header and Footer components needed to stay intact. We also had to scope the CSS so homepage styles did not bleed into the navigation. That is a common React issue and it bit us once before on this project.

The Real Problem: Google Was Ignoring 113 Pages

This is the more important story.

When we checked Google Search Console, only 2 pages were indexed. The site has 115 prerendered routes. Something was broken.

The culprit: the local dist folder was overriding the GitHub Actions Puppeteer prerender pipeline. Every time we ran a local build, it was committing unprerendered files that looked fine locally but were just a React SPA shell to Google. Google would crawl them, see no content, and move on.

The fix was a hard reset. Wiped the local untracked assets, reset the repo, and triggered a clean CI/CD run through GitHub Actions. The pipeline ran Puppeteer against all 115 routes and generated fully prerendered HTML for each one, with unique title tags, canonical URLs, and schema markup.

That is the difference between 2 indexed pages and 115.

The Split-Brain Routing Fix

While we were in there, we found another problem. Both www.readyplangrow.com and readyplangrow.com were returning HTTP 200 responses. That means Google sees two versions of the same site and splits the link equity between them. Every backlink, every share, every signal gets diluted.

Fixed it with a Cloudflare Page Rule and an Nginx server block enforcing a 301 redirect from www to the non-www root. All authority now consolidates to https://readyplangrow.com.

Current State

Item Status
Prerendered routes 115 confirmed via GitHub Actions
ADA contrast (navy on orange) 6.37:1 - passes WCAG AA
Canonical domain readyplangrow.com enforced via 301
Preview subdomain preview.readyplangrow.com live for future testing

Watching Search Console over the next week to confirm indexing catches up on the remaining routes. The foundation is solid now.

The lesson here is not complicated. If your CI/CD pipeline is not the single source of truth for what goes to production, you will have problems you cannot see. Local builds that look fine are not the same as production builds. The pipeline is not optional.

Enjoyed this post?

Find me across the web

Stay curious, my AI friend. It's the secret sauce - think like you are seven. - Ryan