Monorepo
Rules
- Turborepo for task orchestration —
turbo.jsondefines the pipeline - Workspaces in
package.json:"workspaces": ["apps/*", "packages/*"] - Shared packages in
packages/— UI components, configs, types - Apps in
apps/— web, api, mobile, etc. - Internal packages use
"main": "./src/index.ts"— no build step needed turbo.jsonpipeline: definedependsOn,outputs,cache- Shared tsconfig:
packages/config-typescript/extended by all packages - Shared ESLint config:
packages/config-eslint/
Avoid
- Importing between apps directly — use shared packages
- Different versions of the same dependency across packages — use
pnpmoverrides - Missing
dependsOnin turbo pipeline — causes stale builds - Building internal packages — use TypeScript path aliases or
main: ./src/index.ts