83 lines
1.6 KiB
Markdown
83 lines
1.6 KiB
Markdown
# 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`
|