This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Singcode is a Korean karaoke song management service (singcode.kr). This is a pnpm workspace monorepo managed with Turborepo.
Run from the repo root to target all workspaces:
pnpm dev # Start all dev servers via Turbo
pnpm dev-web # Start only the web app dev server
pnpm build # Build all packages
pnpm lint # Lint all packages
pnpm format # Prettier format all packages
pnpm check-types # TypeScript type-check all packagesRun from apps/web/ for web-only work:
pnpm dev # Next.js dev server with Turbopack (http://localhost:3000)
pnpm build # Production build + next-sitemap postbuild
pnpm lint # ESLint
pnpm format # Prettier format .ts, .tsx, .mdNo test suite is configured.
apps/
web/ — Next.js 15 web app (primary app, see apps/web/CLAUDE.md)
mobile/ — Expo React Native app (early stage)
packages/
open-api/ — Wrapper around the external karaoke open API (@repo/open-api)
query/ — Shared TanStack Query hooks for open-api (@repo/query)
api/ — Internal API utilities (@repo/api), built with tsup
ui/ — Shared UI components (@repo/ui)
eslint-config/ — Shared ESLint config (@repo/eslint-config)
format-config/ — Shared Prettier config (@repo/format-config)
typescript-config/ — Shared tsconfig bases
crawling/ — One-off data crawling scripts (not a published package)
See apps/web/CLAUDE.md for full detail. Key points:
- Next.js 15 App Router + React 19, deployed on Vercel
- BFF pattern: client → internal API routes (
/api/*) → Supabase / external karaoke API. Never call Supabase or external APIs directly from the browser. - Supabase (
@supabase/ssr) for auth and database; three client variants (browser, server/route handler, middleware) - TanStack Query for server state; Zustand for client state
- Tailwind CSS v4 + shadcn/ui in
src/components/ui/(do not modify directly) - Path alias
@/→src/
Branch format: <type>/<camelCaseName> — flow: feat/* → develop → main
Commit format: <type> : <Korean description> (space before and after colon)
Types: feat, fix, hotfix, chore, refactor, doc
Examples:
feat : MarqueeText 자동 스크롤 텍스트 적용
fix : SongCard css 수정
chore : 버전 2.3.0