Vibekit

Project Structure

Monorepo layout, workspace packages, and application architecture.

VibeKit is organized as a Turborepo monorepo. Shared packages live in packages/, applications live in apps/, and shared configurations live in tooling/.

vibekit/
├── apps/
│   └── web/                 # Main Next.js web application (port 3000)
├── packages/
│   ├── ai/                  # Pluggable LLM adapters (mock, OpenAI, Anthropic, Google)
│   ├── api/                 # tRPC API router and procedures
│   ├── auth/                # Better Auth configuration and sessions
│   ├── config/              # Shared configuration and provider contracts
│   ├── database/            # Prisma schema, client, and Zod schemas
│   ├── i18n/                # Localization helpers and translations
│   ├── logs/                # Structured logging using Consola
│   ├── mail/                # React Email templates and mail providers
│   ├── notifications/       # In-app notification types and helpers
│   ├── payments/            # Payment gateway abstractions and providers
│   ├── storage/             # S3 / mock storage adapters
│   └── utils/               # Shared helper functions and URL resolvers
├── tooling/
│   ├── tailwind/            # Shared Tailwind CSS preset configuration
│   └── typescript/          # Base tsconfig files for workspaces
├── config.ts                # Global application configuration
├── docker-compose.yml       # Local PostgreSQL and MinIO services
└── turbo.json               # Turborepo task pipeline configuration

Applications (apps/)

  • apps/web: The core Next.js application containing marketing pages, authentication, dashboard views, admin controls, and Fumadocs documentation.
  • Email previews run from packages/mail with bun run mail:preview on port 3005.

Packages (packages/)

  • api: Contains the root apiRouter built on tRPC 11, procedure handlers (auth, admin, billing, team, and other domains), and request context.
  • auth: Better Auth setup, database adapter, session helpers, Argon2 password hashing, and OTP verification.
  • database: The Prisma schema (prisma/schema.prisma), generated client, and runtime Zod validation types.
  • i18n: Translation catalogs (JSON) and locale-switching utilities.
  • logs: Centralized logger powered by Consola.
  • mail: Transactional email templates built with React Email and providers for Resend, Postmark, Cloudflare, Plunk, and Nodemailer.
  • payments: Payment abstractions for Stripe, Lemon Squeezy, Polar, and Dodo Payments.
  • storage: S3-compatible adapter for signing upload and download URLs.
  • utils: Core utilities such as getBaseUrl() for reliable URL generation across environments.

Web application layout (apps/web/)

Inside apps/web/app, routes are grouped cleanly (no [locale] URL segment):

  • (marketing): Public landing pages, pricing, blog, and changelog.
  • (saas): Authenticated dashboard, account settings, and admin panel.
  • (docs): Fumadocs documentation engine running under /docs.
  • api/: Route handlers for tRPC, webhooks, and auth callbacks.

Explore our Architecture Overview to understand how data flows through these layers.

On this page