This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
All commands run from the repository root via Turbo:
pnpm dev— Start dev server (Next.js with Turbopack)pnpm build— Build all packagespnpm lint— ESLint across workspacepnpm format— Prettier formattingpnpm typecheck— TypeScript type checking
No test framework is configured yet.
Turbo monorepo with pnpm workspaces:
apps/web— Next.js 16 app (App Router, React 19, Server Components by default)packages/ui— Shared component library using shadcn/ui with CVA variantspackages/eslint-config— Shared ESLint configs (base, next.js, react-internal)packages/typescript-config— Shared tsconfig presets (base, nextjs, react-library)
@/*— Resolves toapps/web/src/*orpackages/ui/src/*(context-dependent)@workspace/ui/*— References the shared UI package@workspace/eslint-config/*— References shared ESLint configs
- shadcn/ui components live in
packages/ui/src/components/ - Use
cn()from@workspace/ui/lib/utilsfor class merging (clsx + tailwind-merge) - CVA for type-safe component variants with Radix UI Slot for polymorphism
- Client components must be marked with
"use client"
- Tailwind CSS v4 with PostCSS (
@tailwindcss/postcss) - OKLch color variables defined in
packages/ui/src/styles/globals.css - Dark mode via
next-themeswith class strategy - Tailwind plugin functions:
cn,cva
Enforced by Prettier (.prettierrc):
- Double quotes, no semicolons, trailing commas (ES5)
- 80 character line width, LF line endings
- Tailwind class sorting enabled
TypeScript strict mode with noUncheckedIndexedAccess.
turbo.json— Task pipeline definitionsapps/web/next.config.mjs— Transpiles@workspace/uiapps/web/components.json/packages/ui/components.json— shadcn/ui CLI configpackages/ui/src/styles/globals.css— Theme variables and Tailwind base styles