If you are researching Next.js SaaS boilerplates, you will notice that B2B options like supastarter and Makerkit are built as Turborepo monorepos, while solo-founder starters like ShipFast run as a single application.
This guide explains what Turborepo actually does in daily development, the trade-offs you make when adopting one, and how to decide if a monorepo fits your project.
What is a monorepo?
A monorepo means storing multiple applications and shared libraries inside a single Git repository.
In a traditional setup, if you build a SaaS product, you might create three separate repositories:
my-saas-marketingfor your public landing page and blogmy-saas-appfor your authenticated customer dashboardmy-saas-docsfor customer documentation
When you split those into separate repositories, you constantly duplicate code. If you update your company brand colors, user authentication types, or database schema, you have to update multiple repositories and keep them in sync.
A monorepo solves this by grouping everything into one repository:
my-saas/
├── apps/
│ ├── web/ # Public marketing site and blog
│ ├── app/ # Authenticated SaaS application
│ └── docs/ # Customer documentation
└── packages/
├── ui/ # Shared button, form, and layout components
├── db/ # Database schema, migrations, and ORM
└── auth/ # Shared authentication helpers and session logic
Where does Turborepo fit in?
When you have multiple applications and packages in one repository, standard build tools slow down. Every time you run your build command, standard tools rebuild all three applications from scratch, even if you only changed one button on the marketing site.
Turborepo is an intelligent build system developed by Vercel that manages this workflow.
- Intelligent caching: Turborepo remembers what has already been built. If you change a component in
apps/web, it knows thatapps/appandapps/docsdid not change. It serves those builds from cache in milliseconds. - Dependency graph execution: It understands which packages depend on other packages. If
apps/appdepends onpackages/db, Turborepo ensures your database client builds before compiling your application. - Parallel task running: It runs tasks like linting, type-checking, and testing for every package at the same time to make full use of your computer's processor cores.
Why modern B2B SaaS boilerplates use Turborepo
Commercial boilerplates like supastarter and Makerkit use Turborepo because serious B2B software is rarely just a single web dashboard.
When you sell software to corporate teams, you almost always need three separate public-facing projects:
- A public marketing site that needs fast edge rendering, high SEO scores, and a content blog.
- An authenticated web application that handles session management, complex database queries, and heavy client-side dashboards.
- Product documentation with fast search and technical reference layouts.
Putting all of those into a single Next.js project causes code clutter. Marketing assets, administrative routes, and customer dashboard logic quickly tangle together.
Turborepo keeps those projects in isolated applications inside apps/, while letting them share the exact same database models, Tailwind configuration, and user permissions from packages/.
The practical trade-offs: what to expect
A monorepo provides architectural cleanliness, but it adds real complexity that you should consider before buying.
The advantages
- Single source of truth: Your database schema, authentication logic, and brand components exist in one place. Changing a database column in
packages/dbimmediately updates TypeScript types in both your marketing site and your application. - Isolated deployments: You can deploy your public marketing site to Vercel and your web application to a dedicated Docker server or cloud provider, and both stay in the same repository.
- Cleaner AI assistance: Tools like Cursor and Claude Code navigate modular monorepos effectively when packages have strict responsibilities. Because files are logically grouped, the AI assistant is less likely to accidentally import server-side database secrets into client-facing marketing components.
The drawbacks
- A slower first week: If you have never worked with workspace package managers like pnpm or npm workspaces, you will spend time learning how packages link to each other (
workspace:*). - Dependency management complexity: Upgrading a major dependency like Next.js or React means touching several
package.jsonfiles. - More moving parts: Running the project locally often involves booting several servers at once (for example, port 3000 for your landing page and port 3001 for your app dashboard).
Should you pick a Turborepo boilerplate?
Your decision comes down to the scope of your product.
Choose a single-application boilerplate (like ShipFast)
- If you are a solo developer validating an early product idea.
- If your application is a simple tool where one user logs in, pays, and uses the software.
- If you want as few configuration files as possible.
Choose a Turborepo monorepo boilerplate (like supastarter or Makerkit)
- If you are building B2B software that requires separate marketing, application, and documentation layouts.
- If multiple developers or agency team members collaborate on different parts of the platform.
- If you want an architecture that remains organized as your product grows into multiple applications.
To see how these architectural choices affect pricing and features, read our guide on How to choose a SaaS boilerplate or view our full list in 8 Best SaaS Boilerplates in 2026.