Updated 2026-10-28
Development
Setup, commands, and contribution workflow for this repo.
Prerequisites
- Node.js 24 or newer
- pnpm 12 (pinned via
packageManagerin package.json)
Setup
pnpm install
Commands
pnpm dev # turbo dev: web app with HMR
pnpm type-check # turbo type-check across the monorepo
pnpm lint # eslint (next + typescript rules), zero warnings
pnpm test # turbo test (vitest)
pnpm format:check # prettier over the whole repo
pnpm build # production build into apps/web/.next
All checks must pass before pushing: pnpm lint with zero errors, pnpm type-check with zero errors, pnpm format:check with no diffs, and a
successful pnpm build.
Localization workflow
- UI strings: edit
packages/i18n/messages/en.json, then translate the other six locale files. Keep the key structure identical. - Docs: edit
packages/content/docs/en/<slug>.md, then update the translations. Missing translations fall back to English automatically. - After changing messages or docs, run
pnpm buildand check every locale route in the browser.
Git identity
Repository commits are authored with the project owner's identity, and every commit carries a co-author trailer:
Co-authored-by: Ella Mizuki
Branch protection
main is protected: push by Maintainers, force push disabled. History
rewrites (such as re-authoring commits) require temporarily removing the
protection, force pushing, and restoring it with the exact same settings.
Continuous integration
No CI server watches this repository. Run the quality gates before every
push (pnpm type-check, pnpm lint, pnpm test, pnpm format:check,
pnpm build); Vercel builds the production bundle on deploy, and a failed
build fails the deploy.
Testing before merge
Validation is:
- lint, typecheck, format:check, build;
- browser pass at 375, 768, 1024, 1440, and 1920px with zero horizontal overflow, across every locale;
- reduced-motion pass: no shimmer or transitions active, content visible;
- anchor navigation clears the fixed header (scroll padding);
- docs routes resolve for all locales, including the English fallback.