multei / multei/web

Migrate site from Gatsby to Next.js (App Router)

Open
#415 1 comment 1 reaction 2 assignees View on GitHub

@jimmyandrade is already working on this.

Since Jul 16, 2026.

  • #458 by @copilot-swe-agent — open
enhancement todo :spiral_notepad:
Dominant language
JavaScript
Stars
3
Forks
2
PR merge metrics
No merged PRs in 30d

Description

Context

The Multei! site (@multei/web) runs on Gatsby 2 (React 17, legacy plugins). That stack is outdated and friction-heavy locally (modern Node, sharp/ARM, OpenSSL/Webpack, abandoned plugins such as gatsby-plugin-prefetch-google-fonts).

Goal

Migrate the site to the latest stable Next.js (16.x line, App Router), preserving current behavior and content, with modern DX and deploy.

Motivation

  • Gatsby 2 and related dependencies do not track current Node LTS or Apple Silicon without workarounds.
  • The Gatsby ecosystem is relatively stagnant; Next.js is the market default for React sites on Vercel.
  • App Router, Server Components, Turbopack, and current tooling improve performance, DX, and maintainability.
  • Easier alignment with Vercel auth, APIs, env vars, and CI.

Suggested scope

Discovery
  • Inventory routes (src/pages), layouts, components, and critical dependencies (Material UI v4, Recoil, muy/metax, maps, images).
  • Map Gatsby plugins to equivalents (SEO/helmet, sitemap, manifest/PWA, sharp/images, fonts, Material UI).
  • Define target: Next.js 16 (App Router) + React 19, TypeScript (in this migration or as a follow-up).
Migration
  • Scaffold Next.js and app/ structure (layouts, pages, Metadata API).
  • Port pages and components; replace gatsby-image / asset GraphQL with next/image (or equivalent).
  • Replace react-helmet / metax with Next Metadata / Open Graph.
  • Review global state (Recoil) and hooks; align with Server/Client Component patterns.
  • Upgrade or replace Material UI v4 (evaluate MUI v6/v7 or the current design system).
  • Fonts: replace the prefetch plugin with next/font.
  • Configure sitemap, robots, and PWA/manifest as needed.
  • Tests: migrate Jest/Cypress to the new entrypoint; smoke E2E on main routes.
Delivery
  • dev/build/start scripts, env vars, and deploy (Vercel/Netlify) equivalent to today’s flow.
  • Remove Gatsby and orphaned dependencies; document how to run the project.
  • Cutover plan (preview → production) and rollback.

Out of scope (for now)

  • Broad visual redesign (except what the stack change requires).
  • Large business-domain refactors unrelated to the migration.

Acceptance criteria

  • Site runs on current Node LTS without legacy workarounds (openssl-legacy-provider, sharp hacks, etc.).
  • Main routes and flows match the current Gatsby site.
  • Production build and preview deployables work.
  • Critical tests (unit/E2E) are green on the new stack.
  • README updated with development instructions.

Notes

  • When starting implementation, pin the latest stable Next.js available at that time (today: 16.2.x; evaluate 16.3 once out of preview).
  • Prefer small incremental PRs (scaffold → pages → assets/SEO → cleanup).
  • Related: hosting move in #416.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.