Patch tonight. Migrate to modern, AI-improved.
TP2X: how we moved our own site off Drupal
Last updated: 2026-10-23 · Shawn Gants
Before
Drupal on a PHP server
Web server
Apache, nginx, or the host's edge
PHP runtime
PHP2Shell lives here, before the CMS
Drupal
Core, modules, and theme. Still PHP.
Database
Whatever that PHP process can reach
After
Next.js, Netlify, Supabase
Netlify CDN
Prerendered pages and hashed static files
Next.js
TypeScript. No PHP interpreter in the path.
Supabase Postgres
Content in ordinary tables
Row-level security
The database decides who can see a row
This case study is not indexed. Measured results are not published here.
The rebuild uses Next.js 16, React, and TypeScript, styled with Tailwind CSS and shadcn/ui, with two custom-drawn filter wheels written in React. Supabase provides the Postgres database, member logins, file storage for thumbnails, and row-level security for who can see which videos. Netlify builds and serves the site from GitHub on every change to main.
After: the new stack
| Need | Solution |
|---|---|
| Front end | Next.js 16, React, TypeScript, Tailwind CSS, shadcn/ui |
| Signature UI | Two filter wheels drawn as custom React graphics |
| Database | Supabase Postgres |
| Member logins | Supabase Auth |
| Thumbnails/files | Supabase Storage |
| Who sees which videos | Row-level security policies in Postgres |
| Hosting / deploys | Netlify, building from the GitHub repo on every push to main |