Migrate site from Gatsby to Next.js (App Router)
評価
この issue はまだ評価されていません。
説明
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 withnext/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/startscripts, 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,sharphacks, 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.
- 主要言語
- JavaScript
- スター
- 3
- フォーク
- 2
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
multei/web のほかの issue
-
dependencies todo :spiral_notepad:
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
dependencies todo :spiral_notepad:
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
-
dependencies todo :spiral_notepad:
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
-
dependencies todo :spiral_notepad:
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
-
dependencies todo :spiral_notepad:
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
mksglu/context-mode#1200 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
neondatabase/website#5944 ·
-
module: core
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
bigbluebutton/bigbluebutton#25849 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
jaegertracing/jaeger-ui#4506 ·