FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録
Public Webをcreate-next-appの標準構成へ移す
root App Router、日英URL、Zod境界、共有UI stateを最新scaffoldへ揃える
目的
初期Public Webは手作業で組んだ対象component群配置を持ち、採用するNext.js標準構成や国際化、lint、Tailwind、共有stateの扱いがcreate-next-appの既定値と揃っていなかった。
生成直後の標準scaffoldを比較基準にして既存機能をroot app/構成へ移し、日英URL、入力検証、Cloudflare互換のlocale判定を明示することを目指した。
実装
Web application packageをcreate-next-appのオプション無指定scaffoldへ合わせ、対象component群を廃止してapp/、components/、i18n/、stores/、lib/、server/を直下へ配置した。ESLintとTailwindの標準設定を追加し、既存の3D表示と公開data取得を新構成へ移した。
言語選択処理は保存済みlocale、Accept-Language、既定の日本語の順で初回言語を決める。言語保存endpointはZodで日英だけを受理し、HTTP-only、SameSite=Laxのcookieへ手動選択を保存する。
公開routeを/jaと/enの必須prefixへ揃え、news一覧、詳細、RSSも言語別にした。Cloudflare OpenNextで未対応のNode.js Middlewareへ依存せず、Server ComponentとRoute Handlerでredirectとlocale解決を行う。
Zustand storeへcamera、Agent選択、drawer、Room遷移、Demo modeなどの共有UI stateだけを置き、公開data本体は複製しない。公開API validation層はlocale、Room slug、query、cursor、公開responseをZodで検証し、不完全cursorやsearchとの混在を拒否する。
図を描画しています…
確認したこと
確認結果
Web appのmodule配置、test glob、lint、Tailwind、依存versionが新しい標準scaffoldへ揃った。
日英の必須prefix、保存localeとbrowser言語の優先順位、手動選択のcookie保存がcodeとrouting testで定義された。
公開APIのqueryとresponseにstrict schemaが追加され、searchとcursorの不正な組合せを拒否する。
cutoff時点で構成移行は対象へ反映された。同期基盤の仕上げと最終runtime検証は後続活動の範囲である。
完了とした根拠
既存のPublic Web機能がroot App Router構成へ移り、日英routing、cookie境界、Zod検証、Zustand state、lintとtest配置が標準scaffoldに沿って対象へ反映されたことを完了基準とした。