Skip to content

Latest commit

 

History

History
74 lines (55 loc) · 2.53 KB

File metadata and controls

74 lines (55 loc) · 2.53 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Overview

Singcode is a Korean karaoke song management service (singcode.kr). This is a pnpm workspace monorepo managed with Turborepo.

Commands

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 packages

Run 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, .md

No test suite is configured.

Monorepo Structure

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)

Web App Architecture

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/

Git Conventions

Branch format: <type>/<camelCaseName> — flow: feat/*developmain

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