2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00
2026-02-10 01:25:57 +01:00

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:
bun install
  1. Copy env and set your database URL:
cp .env.example .env
  1. Generate Prisma client and run migrations:
bun run db:generate
bun run db:migrate
bun run db:seed
  1. Run both apps:
bun run dev

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
  • 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
Description
No description provided
Readme 122 KiB