← Back to Blog
Project Deep-DiveWordPressNext.jsmigration

Case Study: Turning a WordPress News Site Into a Modern Platform in 48 Hours

TheWestNepal.live went from a slow WordPress site to a programmatic Next.js platform in 48 hours. Here is how the migration worked and what changed after.

SPSantosh Paudel· June 25, 2026· 9 min read· 4 views
Table of contents

TheWestNepal.live was a working WordPress site. Functional, content-rich, getting traffic — but slow, inflexible, and expensive to maintain relative to what it delivered.

The decision to rebuild was not about chasing new technology. It was about unlocking things WordPress made hard: programmatic SEO, edge delivery, a proper content pipeline, and full control over the data model.

Here is how the migration happened in 48 hours and what the site looks like now.

Why Rebuild Instead of Patch

The typical answer to a slow WordPress site is a caching plugin, a CDN, or a theme upgrade. I tried all of these. They helped. But they did not solve the underlying issues:

  • Every page was a database query at request time — no static generation, no edge caching
  • Customizing the content structure meant custom post types, ACF fields, and plugin conflicts
  • SEO required plugins that partially worked, with meta fields scattered across the admin
  • Programmatic page generation — one template, many pages — was not practically achievable

Next.js with Supabase solves all of these structurally, not with patches.

The Migration Process

Day 1: Data extraction and schema design

The first task was exporting all existing content from WordPress. WordPress export (WXR format) gives you posts, pages, categories, tags, and metadata in XML. I wrote a Node script to parse the WXR file and transform it into INSERT statements for Supabase.

The Supabase schema for blog_posts included: title, slug, excerpt, content (markdown), category, tags (array), published_at, meta_description, reading_time_minutes. Content from WordPress came in HTML — I converted it to markdown using a turndown-based script, then manually reviewed the top 20 posts for formatting issues.

By end of day one, all content was in Supabase, the Next.js scaffold was up, and the blog listing page was rendering real data.

Day 2: Programmatic pages, SEO, and deploy

The programmatic layer generates pages from structured data — categories, topics, local angles — without creating each page manually. One template file, one data source, many routes. This is what gives a news site 10x the organic surface area without 10x the editorial work.

SEO infrastructure was built in before content went live: sitemap.ts auto-generates from Supabase, robots.ts handles crawl rules, schema markup is injected per post type, and meta tags are set from the database record.

Vercel deployment took 12 minutes from the first git push.

What Changed After

Performance — Lighthouse scores went from the 40–55 range (WordPress with caching) to 92–98. First contentful paint dropped from 3.4 seconds to under 0.8 seconds.

Flexibility — Adding a new content type, a new category, or a new programmatic page template is a code change, not a plugin decision. The data model is in my control.

Content pipeline — New posts go into Supabase via the admin panel. The AI agents can propose posts. The sitemap auto-updates on the next ISR cycle. No WordPress dashboard, no plugin conflicts.

Scale — The site now runs 60+ posts and programmatic landing pages from a single Vercel deployment and a Supabase free-tier database. Cost per month: zero.

What This Migration Is Not

This is not a plug-and-play process. If your WordPress site has complex plugin-dependent functionality — WooCommerce, membership systems, complex forms — the migration cost is much higher. The sweet spot for this approach is content-heavy sites where the primary complexity is the content model, not business logic.

Lessons for Anyone Considering This

Start with content migration first, before touching the frontend. Getting the data right is the hardest part. The frontend follows quickly once you have clean, queryable data in a proper database.

Use ISR (Incremental Static Regeneration) from day one. export const revalidate = 3600 on blog post pages means you get static performance with live data. Do not skip this step.

Automate the sitemap before you add the first post. The sitemap that generates from Supabase will include every post you ever add, forever, with no manual work.


Resources


Stuck on an aging WordPress site? I can rebuild it on Next.js + Supabase — content migrated, SEO preserved, performance improved. See my services or get in touch.

Free resource

Get the AI-SEO Content Checklist

A practical checklist for getting your own content cited by Google AI Overviews, ChatGPT, and Perplexity — not just ranked.

No spam. Unsubscribe anytime.

Browse all free guides →

Run this on your own numbers

Content ROI & Payback Calculator — free, no signup, runs in your browser.

Open the calculator →

Want to implement this with guidance?

Santosh helps founders turn insights like this into real systems.

SEO Content Strategy

External Resources

Further Reading & Tools

Related Posts

01
5 min
GitHub Student Packfree hosting
TodayDevelopment

Vercel Free Tier for Students: What It Really Covers

The free tier hosts four production sites for me at zero cost. Here are the limits that actually bite, and the one that will surprise you.

Read article
02
15 min
SEOSEO Strategy
TodayTechnical

Schema for AI Agents: What Actually Gets Parsed

I ship nine schema types on this site. Six are documented rich results in Google's gallery, five earn nothing here, and the published tests say AI assistants read JSON-LD as plain text rather than parsing it. Here is the actual markup and what each type earns.

Read article
03
12 min
SEOContent Strategy
TodayCase Study

389 Pages, 22 Clicks: A Teardown of My Own Site

Search Console gave my site 22 clicks from 4,553 impressions in 85 days. Here is the full teardown: the bad numbers, the cut from 267 posts to 103, and the outcome I cannot claim yet.

Read article