Overview
Monorepo layout, workspace graph, and Turborepo pipeline.
The root monorepo. pnpm workspaces with Turborepo orchestration, two apps and six packages.
Directory Structure
packages:
- "apps/*"
- "packages/*"Internal packages reference each other with "workspace:*" in package.json. pnpm resolves these to the local workspace copy at install time, so changes are picked up immediately without publishing.
Dependency Graph
Solid arrows are runtime dependencies. Dashed arrows are dev/tooling dependencies (every package uses the shared TypeScript configs). The cli package is independent and published to npm separately. core depends on ui for design system primitives.
Turborepo Pipeline
{
"$schema": "https://turbo.build/schema.json",
"ui": "tui",
"tasks": {
"build": {
"dependsOn": ["^build"],
"inputs": ["$TURBO_DEFAULT$", ".env*"],
"outputs": [".next/**", "!.next/cache/**"]
},
"typecheck": {
"dependsOn": ["^typecheck"]
},
"dev": {
"cache": false,
"persistent": true
},
"clean": {
"cache": false
}
}
}| Task | Behavior |
|---|---|
build | Builds dependencies first (^build), caches .next output |
dev | Parallel dev servers, no caching |
typecheck | Type-checks dependency packages first, cacheable |
clean | Removes build artifacts, not cached |
Code Quality & Formatting
Instead of delegating linting and formatting to individual packages via Turborepo, Catalyzer uses Biome (via the Ultracite preset) as a single root-level tool.
- Single Source of Truth: The
biome.jsoncfile at the root dictates all rules. - Zero Config for Packages: Workspaces don't need their own linting dependencies or configs.
- Speed: Biome processes the entire monorepo in milliseconds natively, bypassing the need for Turborepo's orchestration and caching for these specific tasks.
Run pnpm check to catch issues, or pnpm fix to auto-format and resolve them.
Root Files
| File | Purpose |
|---|---|
turbo.json | Task pipeline, caching rules |
pnpm-workspace.yaml | Workspace declarations |
package.json | Root scripts, devDependencies, engine constraints |
tsconfig.json | TypeScript project references |
biome.jsonc | Root Biome configuration |
release-please-config.json | Versioning and changelog automation |
.release-please-manifest.json | Current version for each tracked package |