Monorepo template for building SaaS applications with modern tooling.
- pnpm v11 with workspaces and catalogs
- Turborepo v2 for task orchestration and caching
- database — Drizzle ORM
- auth — better-auth
- api — Hono + orpc
- web — Next.js (app router)
- app — Next.js (app router)
- docs — Fumadocs
.
├── apps/
│ ├── web/ # Next.js (app router)
│ ├── app/ # Next.js (app router)
│ └── docs/ # Fumadocs
├── packages/
│ ├── database/ # Drizzle ORM
│ ├── auth/ # better-auth
│ ├── api/ # Hono + orpc
│ ├── ui/ # Shared UI components
│ ├── eslint-config/# ESLint configuration
│ └── typescript-config/# TypeScript configuration
├── turbo.json
├── pnpm-workspace.yaml
└── package.json
The fastest way to get started without installing anything:
- Click Code → Create codespace on main
- Wait for PostgreSQL and dependencies to install
- Run
pnpm devto start developing
No local setup required. Docker and PostgreSQL are pre-configured in the dev container.
- Node.js 20+
- pnpm 11+
- Docker (for PostgreSQL)
# Install dependencies
pnpm install
# Generate auth schema
pnpm auth:generate
# Push database schema
pnpm db:push
# Start development
pnpm dev# Database
pnpm db:generate # Generate migrations
pnpm db:migrate # Run migrations
pnpm db:push # Push schema to DB
pnpm db:studio # Open Drizzle Studio
pnpm auth:generate # Generate auth schema
# Build & Test
pnpm build # Build all packages
pnpm test # Run tests (uses pg-mem)
pnpm test:integration # Run with real PostgreSQL
# Code Quality
pnpm lint # Lint all packages
pnpm typecheck # Type check all packages
pnpm format # Format codeCopy .env.example to .env.local and fill in the required values:
cp .env.example .env.localShared dependencies are managed through pnpm catalogs. Update versions in pnpm-workspace.yaml to propagate changes across all packages.
This template includes GitHub Actions workflows for:
- Lint
- Type check
- Build
- Test
For questions and support, contact support@deessejs.com