This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Chimborazo Park Conservancy website — a monorepo for a 501(c)(3) non-profit dedicated to preserving and enhancing Chimborazo Park in Richmond, VA's Church Hill neighborhood.
Turborepo monorepo managed with pnpm:
apps/next-web/— Main public-facing website (@chimborazo/next-web) — Next.js App Routerapps/studio/— Sanity Studio CMS (@chimborazo/studio)packages/sanity-config/— Shared Sanity schemas, queries, and client (@chimborazo/sanity-config)
- pnpm is required (enforced via preinstall hook)
- Use
pnpmfor all package management, NOTnpmoryarn - Workspace dependencies use
workspace:*protocol
pnpm dev— Start all dev servers (next-web :3001, studio :3333)pnpm build— Build all projectspnpm lint/pnpm format/pnpm check/pnpm test/pnpm type-check— Run across all workspacespnpm clean— Clean build artifacts and node_modules
pnpm --filter @chimborazo/next-web dev
pnpm --filter @chimborazo/studio buildpnpm add <package> --filter @chimborazo/next-web
pnpm add -D <package> --filter @chimborazo/next-web
pnpm add @chimborazo/sanity-config --filter @chimborazo/next-web --workspaceShared Sanity schemas, GROQ queries, and client config used by next-web and studio. See packages/sanity-config/CLAUDE.md for conventions.
- Tailwind CSS v4 with semantic color names (e.g.,
text-green-800,bg-grey-50) - Dark mode via
dark:prefix - Custom fonts via
font-displayandfont-bodyutilities
- Sanity CMS for managed media assets (preferred)
- Static images in
apps/next-web/public/ - WebP format preferred for photos
- next-web: Netlify —
pnpm run build --filter=@chimborazo/next-web - studio: Sanity hosting —
pnpm --filter @chimborazo/studio deploy
- Shared base config in
tsconfig.base.json(strict mode, ESM, bundler resolution) - Path aliases configured per workspace (
@/*→./src/*)
- Biome for linting, formatting, and import sorting (replaces ESLint + Prettier)
- Root
biome.jsondefines shared config; workspace configs extend via"extends": "//" pnpm check— lint + format + organize imports (combined)pnpm lint/pnpm format— run individually- Tailwind v4 CSS directives enabled via
css.parser.tailwindDirectives
See turbo.json:
build— depends on upstream builds (^build)dev— no caching, persistentlint,check,type-check,test— depend on upstream buildsformat— no cachingclean— no caching