The Next.js app is what donors and fans browse every day. Highlights from this codebase:
- Shop catalog burn-in — 1,287 products in
shop-catalog.snapshot.jsonfor ~60ms loads; live GraphQL fallback when needed - ISR + revalidation — Drupal publishes trigger cache busts via signed webhooks
- Legacy redirects —
/forum,/messages,/store, old WordPress paths → canonical routes - Donor portal —
/login,/portal,/portal/supportwith Support, Direct, and Notifications tabs - Wiki + MAHS voice — production archive, cast personnel records, Memory Alpha Historic Society narrative layer
- SEO — sitemap, robots, structured metadata, Lighthouse audits in CI scripts
Middleware enforces canonical host rules pre-cutover. PayPal Commerce runs client-side with Drupal order capture. VIP and dashboard routes use Google SSO for operators.
E2E scripts (run_mvp_e2e.mjs, run_messages_e2e.mjs, test_public_routes.mjs) smoke-test production Fly on every deploy. The public face is measured, not hoped for.
