Back to News

Next.js as the Public Face

May 20, 20261 min read
Engineer's Log #7 — Next.js as the Public Face
ISR, burned-in shop catalog, legacy redirects, and the donor portal — what visitors actually touch.

Algorithm workflow

Next.js public request workflow

VisitorBrowser requestNext.js 15Middleware · host rulesISR cache hit~60ms shop burn-inCache missGraphQL fetchDrupalSource of truth/portalDonor auth proxyLegacy redirects/forum · /store · WP pathsE2E smoke testsrun_mvp_e2e on deploy1,287 products in shop-catalog.snapshot.json · PayPal checkout → Drupal order capture
ISR and burned-in shop catalog (~1,287 products) with GraphQL fallback, legacy redirects, and /portal auth proxy.

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.json for ~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/support with 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.

Engineer's Log — Unification series (Part 7 of 8)

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.json for ~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/support with 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.

Engineer's Log — Unification series (Part 7 of 8)

Filed under

Next.js as the Public Face | Axanar Productions