Skip to content
Back to projects
Legacy Migration

Stiegler EdTech Website

CTO · planned and led the migration

Stiegler EdTech's web presence ran on two paid platforms: a WordPress and Elementor site, and a separate Bubble site for The Mothership. I planned and led their consolidation into one Next.js app on Vercel, rebuilt page by page to match the live sites, and cut over in September 2026. The WordPress hosting, its paid plugins and email add-on, and the Bubble plan were retired, so the company now runs on one host instead of two paid platforms.

Screenshot of Stiegler EdTech Website
Legacy URLs kept
198/198
Pages at parity
22/22
Submissions migrated
1,708
Paid platforms
2 → 1
Stack

What it's built with

TypeScriptNext.jsReactTailwind CSSshadcn/uiPostgreSQLDrizzle ORMZodPlaywrightResendVercel
Context

The problem

One organization paid for two web platforms: WordPress with paid plugins and an email add-on, and a Bubble plan, each with its own pages, forms, and data.

Approach

What I built

One Next.js app on Vercel that serves both sites, keeps every old URL, and stores all form submissions in one Postgres table.

Outcome

The impact

One host instead of two paid platforms, with a verified cutover: 22 of 22 pages at parity, 198 of 198 legacy URLs, and all ten forms working.

Highlights

What stood out

  • Measured both live sites with a headless crawl at desktop and phone widths, then rebuilt every page to match, checked by a Playwright parity test against a snapshot of the old site.
  • Kept all 198 legacy URLs working, with permanent redirects from the retired domain and a checker that verifies every one.
  • Moved every form onto one server action, with its delivery services injected so tests run against stubs; all ten forms were verified end to end at cutover.
  • Imported 1,708 past form submissions, from August 2023 to September 2026, into Postgres, and built site search from the rendered pages.
  • Cut the hero video from 26 MB to 6.4 MB and added an image pipeline for share cards.