Monorepo Architect (Turborepo 2.x / Moon Edition)
English
Orchestration & Integration
- Upstream & Project Topology:
zero-to-prod-orchestrator(Phase 2 project foundation),brainstorming,session-memory-manager. - AST & Codebase Intelligence:
living-codebase-ast-graph(cross-package dependency topology & DAG sorting),typescript-expert(composite projects & isolated declarations). - CI/CD & Deployment:
ci-cd-devops-architect(monorepo cache pipelines),github-actions-expert(matrix testing & sparse checkout),cloud-hosting-expert(multi-app deployments). - Shared Design & Components:
design-system-architect(sharedpackages/uitokens),senior-frontend/js-backend-expert(shared packages consumption),micro-frontend-architect(federated micro-apps),composable-mach-architect(composable multi-app packages),dependency-upgrade-migrator(monorepo-wide dependency upgrades).
Description
Expert guide for designing and managing scalable monorepos. Covers Turborepo 2.x (the 2026 standard for JS/TS monorepos), moon (polyglot task runner for teams mixing JS + Rust + Go), pnpm workspaces, shared package design, incremental builds, remote caching, and CI/CD pipeline optimization.
Trigger Conditions
- Managing a codebase with multiple apps and shared packages.
- Setting up a monorepo for a SaaS with separate
web,admin,api, andpackages. - Optimizing build and test times with remote caching.
- Sharing TypeScript types, UI components, or utility functions across apps.
- Migrating from a multi-repo setup to a monorepo.
Tool Selection Guide (2026)
| Tool | Best For | Language Agnostic |
|---|---|---|
| Turborepo 2.x | JS/TS monorepos (Next.js, Vite, Node) | ❌ (JS focused) |
| moon | Polyglot teams (JS + Go + Rust + Python) | ✅ |
| Nx | Enterprise, Angular/React, plugin ecosystem | ❌ (JS focused) |
| Bazel | Very large orgs, hermetic builds | ✅ |
Turborepo 2.x — Standard JS Monorepo
Repository Structure
my-saas/ ├── apps/ │ ├── web/ # Next.js 15 main app │ ├── admin/ # Next.js 15 super admin (subdomain) │ └── api/ # Hono/Fastify backend ├── packages/ │ ├── ui/ # Shared Tailwind v4 components │ ├── db/ # Drizzle ORM schema + queries │ ├── auth/ # Auth utilities (session, JWT) │ ├── email/ # Email templates (React Email) │ └── tsconfig/ # Shared TypeScript configs ├── turbo.json ├── pnpm-workspace.yaml └── package.json
turbo.json (v2 Syntax)
json{ "$schema": "https://turbo.build/schema.json", "ui": "tui", "tasks": { "build": { "dependsOn": ["^build"], "inputs": ["$TURBO_DEFAULT$", ".env*"], "outputs": [".next/**", "!.next/cache/**", "dist/**"] }, "dev": { "cache": false, "persistent": true }, "test": { "dependsOn": ["^build"], "inputs": ["src/**", "test/**", "vitest.config.*"] }, "lint": { "inputs": ["src/**", "*.config.*", ".eslintrc*"] }, "typecheck": { "dependsOn": ["^build"] }, "db:generate": { "cache": false } } }
pnpm-workspace.yaml
yamlpackages: - "apps/*" - "packages/*"
Remote Caching (Vercel Remote Cache)
bash# Authenticate with Vercel Remote Cache npx turbo login npx turbo link # Or self-hosted with Turborepo Remote Cache TURBO_TEAM=my-team TURBO_TOKEN=xxx turbo build
Shared UI Package (packages/ui)
json// packages/ui/package.json { "name": "@myapp/ui", "version": "0.0.0", "private": true, "exports": { "./button": { "import": "./src/button.tsx", "types": "./src/button.tsx" }, "./card": { "import": "./src/card.tsx", "types": "./src/card.tsx" } }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }
Internal Package Pattern (No Build Step)
Use "exports" pointing to source files directly — Turborepo compiles them as part of the consuming app:
json// packages/db/package.json { "name": "@myapp/db", "exports": { ".": { "import": "./src/index.ts", "types": "./src/index.ts" } }, "devDependencies": { "drizzle-orm": "latest", "drizzle-kit": "latest" } }
moon — Polyglot Task Runner
For teams mixing JavaScript, Go, Rust, and Python in one repo:
yaml# .moon/workspace.yml projects: - "apps/*" - "packages/*" - "services/*" # Go/Rust microservices vcs: manager: "git" defaultBranch: "main"
yaml# apps/api/moon.yml (Go service) language: "go" type: "application" tasks: build: command: "go build -o ./bin/api ./cmd/api" inputs: ["src/**/*.go", "go.mod"] outputs: ["bin/api"] test: command: "go test ./..."
CI/CD Optimization
yaml# .github/workflows/ci.yml - name: Build & Test (Turborepo) run: | npx turbo run build test lint typecheck \ --filter="...[origin/main]" \ # Only changed packages --cache-dir=".turbo" env: TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} TURBO_TEAM: ${{ vars.TURBO_TEAM }}
Sovereign Execution, Token Efficiency & Invariants
| Dimension | Sovereign Mandate & Deterministic Contract |
|---|---|
| Frontier Model Cascade | Medium / High (GPT-5.6 Sol Medium, Gemini 4 Argon, Claude Sonnet 5.5 High, Grok 4.7 High Fast) |
| Availability Fallback | Gemini 4 Argon/Pro -> Gemini 3.8 Flash; Claude Opus 5.5 -> Claude Opus 4.6 (Zero unhandled missing-model errors) |
| KV-Cache & Token Protocol | Pin static instructions & schemas at prompt prefix (kv-cache-prefix-optimizer); pass surgical CONTEXT_MAP.md slices (<250 tokens/call) during Swarm Fan-Out |
| SaaT CLI & MCP Dispatch | CLI: vibes skill exec monorepo-architect <audit|eval|verify|generate|blueprint> / MCP: vibes_skill_dispatch, vibes_ast_query, vibes_compile_cache, vibes_optimize_budget, vibes_verify_gate |
| NFR & Anti-Slop Invariants | P99 API Gateway Latency < 85ms, OpenAPI 3.1 / TypeSpec strict schema parity, RFC 9457 Problem Details error contracts, Idempotency-Key enforcement; 100% complete zero-placeholder output verified via node scripts/check-anti-slop.js --strict |
Bahasa Indonesia
Integrasi Orkestrasi
- Hulu & Topologi Proyek:
zero-to-prod-orchestrator(Pondasi proyek Fase 2),brainstorming,session-memory-manager. - AST & Inteligensi Basis Kode:
living-codebase-ast-graph(topologi dependensi lintas paket & DAG sorting),typescript-expert(composite project & isolated declarations). - CI/CD & Deployment:
ci-cd-devops-architect(pipeline cache monorepo),github-actions-expert(pengujian matriks & sparse checkout),cloud-hosting-expert(deployment multi-aplikasi). - Desain Bersama & Komponen:
design-system-architect(token sharedpackages/ui),senior-frontend/js-backend-expert(konsumsi paket bersama).
Deskripsi
Panduan ahli untuk merancang dan mengelola monorepo yang skalabel. Mencakup Turborepo 2.x (standar 2026 untuk monorepo JS/TS), moon (task runner poliglot untuk tim yang memadukan JS + Rust + Go), pnpm workspaces, desain shared package, incremental build, remote caching, dan optimasi pipeline CI/CD.
Kondisi Pemicu
- Mengelola codebase dengan banyak aplikasi dan shared package.
- Menyiapkan monorepo untuk SaaS dengan
web,admin,api, danpackagesterpisah. - Mengoptimalkan waktu build dan test dengan remote caching.
- Berbagi TypeScript types, komponen UI, atau utilitas antar aplikasi.
- Migrasi dari multi-repo ke monorepo.
Panduan Pemilihan Tool (2026)
- Turborepo 2.x: Standar untuk monorepo JS/TS — cepat, zero-config, remote cache bawaan.
- moon: Untuk tim poliglot yang memadukan JS, Go, Rust, Python dalam satu repo.
- Nx: Untuk enterprise dengan ekosistem plugin yang kaya.
Struktur Repositori
Pisahkan apps/ (aplikasi yang dapat di-deploy) dari packages/ (shared library internal):
apps/web— Next.js utamaapps/admin— Dashboard Super Admin (subdomain terpisah)apps/api— Backend APIpackages/ui— Komponen UI bersama (Tailwind v4)packages/db— Skema Drizzle ORM + querypackages/auth— Utilitas auth
Turborepo 2.x — Sintaksis Baru
Turborepo 2.x memperkenalkan TUI interaktif ("ui": "tui"), sintaksis tasks yang lebih ekspresif, dan caching yang lebih granular dengan inputs/outputs.
Pola Internal Package (Tanpa Build Step)
Arahkan exports langsung ke file sumber TypeScript — Turborepo mengkompilasi sebagai bagian dari aplikasi yang mengonsumsinya. Ini menghilangkan kebutuhan langkah build terpisah untuk setiap package.
moon — Task Runner Poliglot
Moon mendukung proyek dalam bahasa yang berbeda (Go, Rust, JS) dalam satu workspace, masing-masing dengan konfigurasi moon.yml-nya sendiri.
Optimasi CI/CD
Gunakan flag --filter="...[origin/main]" Turborepo untuk hanya membangun dan menguji package yang berubah sejak commit terakhir. Gunakan remote cache Vercel atau self-hosted untuk berbagi cache antar runner CI.
Matriks Eksekusi Berdaulat, Efisiensi Token & Invarian
| Dimensi | Mandat Berdaulat & Kontrak Deterministik |
|---|---|
| Kaskade Model Frontier | Medium / High (GPT-5.6 Sol Medium, Gemini 4 Argon, Claude Sonnet 5.5 High, Grok 4.7 High Fast) |
| Invarian Fallback Ketersediaan | Gemini 4 Argon/Pro -> Gemini 3.8 Flash; Claude Opus 5.5 -> Claude Opus 4.6 (Bebas gagal saat model belum tersedia/kuota penuh) |
| Protokol Hemat Token & KV-Cache | Kunci instruksi & skema statis di prefix awal (kv-cache-prefix-optimizer); kirim potongan CONTEXT_MAP.md (<250 token/panggilan) saat Fan-Out |
| Eksekusi SaaT CLI & MCP | CLI: vibes skill exec monorepo-architect <audit|eval|verify|generate|blueprint> / MCP: vibes_skill_dispatch, vibes_ast_query, vibes_compile_cache, vibes_optimize_budget, vibes_verify_gate |
| Invarian NFR & Anti-Slop | Latensi P99 API < 85ms, paritas skema ketat OpenAPI 3.1 / TypeSpec, kontrak error RFC 9457 Problem Details, penegakan Idempotency-Key; kode 100% tuntas tanpa placeholder diverifikasi melalui node scripts/check-anti-slop.js --strict |


