Skip to content

Commit 7932d33

Browse files
SOIVclaude
andcommitted
docs: CLAUDE.md 초기 작성 (Claude Code 컨텍스트 가이드)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent a2e8668 commit 7932d33

1 file changed

Lines changed: 103 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
---
6+
7+
## Project Status
8+
9+
Phase 1.5 진행 중 (2026-04-13 기준). Core UI Shell은 mock으로 동작하며 실제 백엔드 API 엔드포인트는 미구현. `packages/controls`에 React 컴포넌트 미구현 (`ready: false` 상태).
10+
11+
---
12+
13+
## Commands
14+
15+
```bash
16+
# 개발 서버
17+
pnpm dev # web + api 병렬 실행 (설치 마법사 포함)
18+
pnpm dev:bypass # 설치 마법사 스킵 (INSTALL_MODE=bypass)
19+
pnpm dev:web # web만 (port 5173)
20+
pnpm dev:api # api만 (port 3000)
21+
22+
# 빌드 (web → api → copy-frontend.js로 api/public에 복사)
23+
pnpm build
24+
pnpm start # 프로덕션 서버 (apps/api/dist/index.js)
25+
26+
# 테스트
27+
pnpm test # 전체
28+
pnpm --filter api test # api만
29+
pnpm --filter core test # core만
30+
pnpm exec vitest run apps/api/src/loader/index.test.ts # 단일 파일
31+
32+
# 타입 체크
33+
pnpm typecheck
34+
```
35+
36+
---
37+
38+
## Architecture
39+
40+
### 패키지 구조
41+
42+
```
43+
apps/
44+
web/ — React 19 + Vite SPA (@fieldstack/web)
45+
api/ — Node.js + tsx dev server (@fieldstack/api)
46+
packages/
47+
core/ — 공유 타입·계약·유틸 (@fieldstack/core)
48+
controls/— UI 컴포넌트 계약 (@fieldstack/controls, 구현 미착수)
49+
modules/ — Phase 2 모듈 (Ledger, Subscription) 위치 예정
50+
```
51+
52+
pnpm workspace, `node-linker=hoisted`.
53+
54+
### apps/web — 라우팅 & 상태
55+
56+
- **Hash 기반 라우팅**: `#login` `#otp` `#forgot-password` `#home` `#marketplace` `#admin` `#change-password`
57+
- 모든 라우트 상태 머신은 `apps/web/src/main.tsx``App` 컴포넌트에서 관리 (`effectiveRoute` useMemo).
58+
- 인증 상태는 `sessionStorage``fs_` 접두사 키로 저장 (`fs_auth`, `fs_admin`, `fs_pin_verified` 등).
59+
- **AppShell** (`src/components/AppShell.tsx`): 220px 고정 사이드바 레이아웃. login/otp/forgot-password/change-password는 shell 없이 전체 화면.
60+
- **개발 mock 비밀번호**: `otp1234` → OTP 플로우, `temp1234` → 강제 비밀번호 변경 플로우.
61+
62+
### apps/api — 모듈 로더
63+
64+
- `apps/api/src/loader/index.ts`: `parseModuleJson``scanBackendModules``buildBackendRouteRegistrations``validateModuleDependencies` 순서로 모듈을 스캔·등록.
65+
- 각 모듈은 `module.json` 매니페스트로 식별되며 `enabled: true`인 것만 활성화.
66+
- 프로덕션 빌드 시 `scripts/copy-frontend.js``apps/web/dist``apps/api/public`으로 복사해 단일 서버에서 서빙.
67+
68+
### packages/core
69+
70+
- `auth/` — TOTP, JWT, Whitelist, admin PIN, 비밀번호 복구 계약
71+
- `db/` — DB provider 추상 인터페이스 + PostgreSQL·SQLite·Supabase·MongoDB scaffold + 마이그레이션
72+
- `types/` — API·User·Module·Integration 공통 타입
73+
- `utils/` — 날짜·포맷·검증·암호화
74+
75+
### packages/controls
76+
77+
TypeScript 계약(`ControlDescriptor`, `CONTROL_DESCRIPTORS`)만 선언되어 있고 실제 React 컴포넌트는 없음. P0/P0.5 Control 목록과 구현 상태는 `docs/v2_FINANCIAL-LEDGER/ui/03-control-backlog.md` 기준으로 추적. 구현 시 `apps/web` 인라인 View 스타일이 레퍼런스이며, 확정된 다크 모드 CSS 토큰 시스템 기반으로 작성.
78+
79+
### 스타일
80+
81+
- CSS 커스텀 프로퍼티 기반 다크 모드 디자인 토큰 (`apps/web/src/styles/`).
82+
- Primary `#3B82F6`, success `#10B981`, warning `#F59E0B`, danger `#EF4444`.
83+
- 현재 Tailwind 미적용 (계획 중). 현재는 각 View별 CSS 파일 직접 작성.
84+
85+
---
86+
87+
## Code Conventions
88+
89+
- **TypeScript strict**`any`, `@ts-ignore`, `@ts-expect-error` 사용 금지.
90+
- **Import 순서**: 외부 라이브러리 → `@fieldstack/*` 내부 패키지 → 상대 경로. `import type` 사용.
91+
- **Prettier**: `printWidth: 100`, `singleQuote: true`, `trailingComma: all`.
92+
- **명명**: 컴포넌트 PascalCase, 훅 `use` + camelCase, 서비스 camelCase, 상수 UPPER_SNAKE_CASE, API 라우트 kebab-case.
93+
- **검증**: Zod 우선.
94+
- **모듈 간 의존성 금지**: 모듈끼리 직접 import 불가, Event Bus 경유.
95+
96+
---
97+
98+
## Key Docs
99+
100+
- `docs/v2_FINANCIAL-LEDGER/roadmap/01-development-plan.md` — 전체 로드맵 및 Phase별 체크리스트
101+
- `docs/v2_FINANCIAL-LEDGER/ui/03-control-backlog.md` — Control 구현 상태 추적
102+
- `docs/v2_FINANCIAL-LEDGER/technical/00-tech-stack.md` — 기술 스택 결정 내역
103+
- `AGENTS.md` — 추가 코드 스타일 및 아키텍처 가이드라인

0 commit comments

Comments
 (0)