Skip to main content

Best Boilerplate with Monorepo: T3 Turbo vs Supastarter vs Bedrock

·StarterPick Team
monorepoturboreposaas boilerplatearchitecturecomparison

Monorepo: Organized Complexity

As SaaS products grow, they accumulate multiple concerns: the web app, the admin panel, the marketing site, shared UI components, email templates, database schemas, and utility libraries. A monorepo keeps all of these in one repository with shared tooling and dependencies.

Three boilerplates use Turborepo monorepos as their foundation: T3 Turbo (free, community-maintained), Supastarter ($299-$349, commercial), and Bedrock ($395-$995, enterprise). Each structures the monorepo differently.

TL;DR

Supastarter has the most well-structured monorepo — isolated packages for auth, billing, email, UI, and i18n that can be independently developed and tested. T3 Turbo provides a free monorepo foundation with shared TypeScript, React Native support, and community patterns. Bedrock targets enterprise with strict package boundaries and CI/CD integration. Choose Supastarter for the best package architecture. Choose T3 Turbo for free, community-backed monorepo. Choose Bedrock for enterprise monorepo patterns.

Key Takeaways

  • Monorepos aren't always better. For solo developers building simple SaaS, a single-app boilerplate (ShipFast, T3 Stack) is simpler and faster.
  • Supastarter's package isolation is excellent — swap billing providers, auth libraries, or email services by replacing a package.
  • T3 Turbo is free and includes React Native — the only boilerplate with web + mobile from a single monorepo.
  • Turborepo handles build caching — subsequent builds are dramatically faster because unchanged packages are cached.
  • Package boundaries prevent spaghetti code — modules can only import from their declared dependencies.
  • Monorepos add tooling complexity — pnpm workspaces, Turborepo pipelines, and package versioning have a learning curve.

Monorepo Structure Comparison

T3 Turbo

packages/
├── api/           # tRPC API routers
├── auth/          # NextAuth.js configuration
├── db/            # Prisma schema and client
├── ui/            # Shared React components
└── validators/    # Zod schemas

apps/
├── nextjs/        # Next.js web application
├── expo/          # React Native mobile app
└── ...

tooling/
├── eslint/        # Shared ESLint config
├── typescript/    # Shared tsconfig
└── tailwind/      # Shared Tailwind config

Supastarter

packages/
├── core/          # Shared types, utilities, constants
├── ui/            # shadcn/ui + custom components
├── auth/          # Authentication (Auth.js / Lucia)
├── billing/       # Payment providers (Stripe, LS, Polar, Creem, Dodo)
│   ├── stripe/
│   └── lemon-squeezy/
├── email/         # Email templates + sending
├── i18n/          # Translations + locale config
├── database/      # Prisma schema + client
└── config/        # Shared configuration

apps/
├── web/           # Main Next.js/Nuxt app
└── admin/         # Admin panel (optional)

Bedrock

packages/
├── core/          # Domain models, business logic
├── ui/            # Component library
├── auth/          # Authentication + authorization
├── billing/       # Stripe integration
├── email/         # Email templates
├── jobs/          # Background job definitions
├── monitoring/    # Logging, metrics, health checks
└── testing/       # Test utilities, factories

apps/
├── web/           # Main Next.js application
├── api/           # API service (optional)
└── worker/        # Background job worker

When to Choose Each

Choose Supastarter If:

  • Package isolation matters — swap providers (auth, billing, email) by replacing packages
  • Multi-framework potential — Same packages, Next.js or Nuxt app
  • Clean architecture — well-defined boundaries between concerns

Choose T3 Turbo If:

  • Free and open source — no license cost
  • Web + mobile from one repo — Next.js + Expo React Native
  • Community patterns — active community with examples and extensions

Choose Bedrock If:

  • Enterprise structure — strict boundaries, monitoring, background jobs
  • CI/CD integration — build pipelines optimized for monorepo
  • Team development — clear ownership boundaries between packages

Choose Single-App (ShipFast, T3 Stack) If:

  • Solo developer — monorepo complexity isn't worth it for one person
  • Simple SaaS — auth + billing + dashboard doesn't need package isolation
  • Ship fast — single app deploys in seconds, monorepo needs pipeline config

Compare monorepo architecture across 50+ boilerplates on StarterPick — find the right structure for your project.

Check out this boilerplate

View Supastarter on StarterPick →

Comments