pnpm install done. If you don’t yet, start at Self-Hosted.
Repo at a glance
Editor setup
The repo is TypeScript end-to-end. The recommended editor setup:- VS Code with the ESLint and TypeScript Nightly extensions, or
- Cursor / Windsurf / Claude Code — all three know how to read
CLAUDE.mdand the workspace TS configs.
pnpm-workspace.yaml and packages/tsconfig mean type-checking works across workspaces with no extra config. If your editor doesn’t find a type, restart its TS server.
Hot reload across workspaces
pnpm run dev from the repo root runs every workspace’s dev script in parallel through Turbo. Most workspaces are watch-mode:
So a change in
packages/resume-schema/src/index.ts triggers a rebuild that the web app picks up automatically via the workspace link.
The web app supports Turbopack with
pnpm --filter @magic-resume/web dev:turbo. It’s faster but occasionally lags behind a Next.js minor — fall back to dev if you hit a Turbopack-specific bug.Lint and test before pushing
lint-staged (configured in the root package.json) runs on staged files via Husky, but the full sweep is:
apps/web workspace has an i18n check that fires on staged .tsx/.ts files:
en.json without adding it in zh-CN.json will fail the pre-commit hook.
Branch hygiene
The default branch ismaster. Feature branches use <type>/<short-name> (e.g. feat/turborepo-mcp-migration-wip). Commits follow conventional-commit style — see git log for examples.