Docs

Monorepos & workspaces

Workspace monorepos build the way they do on your machine: install at the root, build the member.

When an app's root directory points into a workspace monorepo — a repo with pnpm-workspace.yaml or a workspaces field in the root package.json — Buildfyio detects it and builds from the repository root:

  • Dependencies install once at the root, against the root lockfile.
  • workspace:* protocol dependencies resolve to their sibling packages, exactly as locally.
  • The build then runs inside your app's directory (cd apps/web && next build), with both the root and the member's node_modules/.bin on PATH.
pnpm installs use the hoisted layout in builds, matching how npm (and Vercel) lay out node_modules. Apps that import a package declared only by a sibling workspace package — a common pattern in real monorepos — build without changes.

Example

repo/
├─ package.json          # "workspaces": ["apps/*", "packages/*"]
├─ pnpm-lock.yaml
├─ apps/
│  ├─ web/               # Next.js  → project primary app
│  ├─ admin/             # Astro    → app "admin"
│  └─ worker/            # Node     → app "worker" (background)
└─ packages/
   ├─ ui/
   └─ db/                # prisma schema lives here — generate runs automatically

Import the repo once; discovery lists apps/web, apps/admin, and apps/worker with the right framework each. Select the ones to deploy — each becomes an app in the same project with its own subdomain, environment scope, and deploy history.

Turborepo / Nx

Nothing special required. The workspace detection above covers Turborepo and Nx repos; your app's build command can be the package script (next build) or a pipeline invocation (turbo run build --filter=web) — both run from the right directory with root binaries available.

Vercel-configured repos

Repos written for Vercel deploy without modification. The one incompatibility we adapt automatically is the Astro Vercel adapter — see Builds → Framework notes.