128 pages rebuilt. Homepage transfer reduced from 1,437 KB to 838 KB.
Preserve content and behavior, verify the rebuild against production, and deliver a cutover runbook with rollback.
384 screenshot comparisons and 12,629 link checks. Built and verified ahead of cutover.
Why
Organic clicks had fallen 37% while average ranking improved, and almost all remaining organic traffic was branded. That prompted an investigation of click-through and page experience. The site loaded shared CSS, a hosted runtime, and jQuery on every page. Those were concrete performance costs to remove, though the traffic trend alone does not establish a cause. The client also wanted text edits to move through pull requests. The rebuild preserves the existing content and design while reducing transfer weight and adding a repeatable verification process.
Constraints I worked inside
- No DNS, form, or tag-management changes until cutover. The build lived on a preview with layered indexing controls.
- Never submit a live form. Form markup was verified by byte-matching it against the live DOM.
- Pre-existing live-site bugs (a broken form field, a broken redirect, an orphaned tag container) were reproduced faithfully, not silently fixed. Fixing them was scoped as a marketing decision, separate from the migration.
QA before an irreversible change
Engineering
- ExtractEvery page, collection, and asset pulled through the source platform's API. Images recovered at original quality rather than the lossy converted versions the platform served.
- Convert17 CMS collections mapped to Astro content collections with validated schemas.
- Verify384 screenshot comparisons against production, 12,629 internal links checked, redirect coverage and metadata verified across all 128 pages.
- Cut weightjQuery, the hosted runtime, third-party plugins, and consent and tag scripts removed from the render path. Homepage transfer fell from 1,437 KB to 838 KB.
- Protect the repoProtected main with required review and no force-push, tested deliberately by trying to break it.
Delivery
- Cutover runbook with pre-reviewed DNS batches, certificate pre-validation to avoid an HSTS lockout, a go-live checklist, and a one-record rollback that takes five minutes.
- Plain-language editing guide so non-technical staff publish through GitHub pull requests and Claude Code.
- Engineering documentation covering the pipeline, the QA harness, and the deploy path.
Numbers
| Pages | 128 |
|---|---|
| CMS collections | 17 |
| Assets re-hosted | 735 |
| Migration pipeline | 22 scripts |
| Screenshot comparisons against production | 384 |
| Internal links verified | 12,629 |
| Homepage transfer | 1,437 KB to 838 KB |
| Organic-click decline that prompted the work | 37% |
| Rollback time | five minutes, one DNS record |
This portfolio site is on the same stack: Astro static build on Cloudflare Pages.