# CMS Monorepo (Bun + Biome + Next.js) A baseline monorepo with: - `apps/web`: public frontend app - `apps/admin`: separated admin app - `packages/ui`: shared UI primitives (shadcn-ready) - `packages/content`: shared Zod schemas/types - `packages/db`: Prisma + PostgreSQL data access - `packages/config`: shared TypeScript config ## Stack - Bun workspaces - Biome (lint + format) - Next.js App Router + TypeScript + `src/` - Tailwind CSS - Prisma + PostgreSQL - Zod - Zustand - TanStack (Query, Table, Form) ## Quick start 1. Install dependencies: ```bash bun install ``` 2. Copy env and set your database URL: ```bash cp .env.example .env ``` 3. Generate Prisma client and run migrations: ```bash bun run db:generate bun run db:migrate bun run db:seed ``` 4. Run both apps: ```bash bun run dev ``` - Web: http://localhost:3000 - Admin: http://localhost:3001 ## Useful scripts - `bun run dev` - `bun run dev:web` - `bun run dev:admin` - `bun run lint` - `bun run typecheck` - `bun run check` - `bun run format` - `bun run db:generate` - `bun run db:migrate` - `bun run db:push` - `bun run db:studio` - `bun run db:seed` ## Recommended next packages - Auth: `better-auth` or `next-auth` - Uploads: `uploadthing` - Rich text: `@tiptap/react` - Caching/queue: `bullmq`, `ioredis` - Email: `resend` - i18n: `next-intl` - Observability: `@sentry/nextjs` - Testing: `vitest`, `@testing-library/react`, `playwright` For TanStack specifically, this baseline already includes Query, Table, and Form. Add Virtual when you introduce very large lists: - `@tanstack/react-virtual`