Skip to content

Commit c9ab909

Browse files
kickbelldevclaude
andauthored
feat: 계층적 CLAUDE.md 구조 및 도메인 아키텍처 개편 (#11)
* feat: 계층적 CLAUDE.md 구조 및 도메인 아키텍처 개편 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> * docs: 컨텍스트 업데이트 --------- Co-authored-by: Claude <[email protected]>
1 parent 5448c58 commit c9ab909

30 files changed

+1101
-360
lines changed

.context/commands.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# 명령어 레퍼런스
2+
3+
프로젝트에서 사용하는 주요 명령어들을 정리합니다.
4+
5+
## 개발 명령어
6+
7+
### 패키지 관리
8+
```bash
9+
# 의존성 설치
10+
pnpm install
11+
12+
# 패키지 추가/제거
13+
pnpm add <package-name>
14+
pnpm add -D <package-name> # 개발 의존성
15+
pnpm remove <package-name>
16+
```
17+
18+
### 주의사항
19+
```bash
20+
# 🚫 금지된 명령어들 (CLAUDE.md 지침)
21+
pnpm dev # 개발서버 실행 금지
22+
pnpm build # 빌드 금지
23+
pnpm start # 서버 실행 금지
24+
```
25+
26+
## 테스트 (Vitest)
27+
28+
### 기본 테스트
29+
```bash
30+
# 테스트 실행
31+
pnpm test
32+
33+
# 테스트 UI 실행
34+
pnpm test:ui
35+
36+
# 테스트 감시 모드
37+
pnpm test:watch
38+
39+
# 테스트 커버리지
40+
pnpm test:coverage
41+
```
42+
43+
### 특정 테스트
44+
```bash
45+
# 파일별 테스트
46+
pnpm test -- posts.test.ts
47+
48+
# 패턴 테스트
49+
pnpm test -- --grep "태그 그래프"
50+
```
51+
52+
## 코드 품질 (Biome)
53+
54+
### 코드 검사 및 포맷팅
55+
```bash
56+
# 코드 검사
57+
pnpm biome:check
58+
59+
# 자동 수정
60+
pnpm biome:fix
61+
62+
# 스테이지된 파일만 수정
63+
pnpm biome:staged
64+
```
65+
66+
### TypeScript 타입 검사
67+
```bash
68+
# 타입 검사
69+
pnpm type
70+
71+
# 타입 검사 (감시 모드)
72+
pnpm type -- --watch
73+
```
74+

.context/current-status.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# current-status.md
2+
3+
최근 완료 작업과 다음 작업 요소를 정리한 문서입니다.
4+
5+
## 최근 완료 작업
6+
-**CLAUDE.md 문서 체계화**: @import 구문으로 모듈화된 문서 구조 완성
7+
-**development-guidelines.md 최적화**: 실제 프로젝트의 도메인 중심 설계, 모듈 레벨 캐싱, 태그 그래프 시스템 패턴 중심으로 재작성
8+
-**styling-guide.md 최적화**: 실제 컴포넌트 패턴(CategoryBadge, TagBadge, CVA 시스템) 반영한 실용적 가이드
9+
-**git-workflow.md 최적화**: 실제 프로젝트의 브랜치 패턴과 커밋 컨벤션 반영
10+
-**commands.md 최적화**: 실제 package.json 스크립트 기반, 개발서버/빌드 금지 지침 포함한 실용적 명령어 가이드
11+
12+
## 다음 작업 요소
13+
- 추후 정의

.context/development-guidelines.md

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# 개발 가이드라인
2+
3+
이 블로그 프로젝트의 핵심 패턴과 구현 원칙을 정의합니다.
4+
5+
## 아키텍처 패턴
6+
7+
### 도메인 중심 설계
8+
- **도메인 로직**: `src/domain/blog/` 에 통합
9+
- **UI 컴포넌트**: `src/app/` 하위에 구현
10+
- **타입 정의**: `src/domain/blog/types.ts` 중앙 집중
11+
12+
```typescript
13+
// 도메인 API 사용 예시
14+
import { getCategoryById, getPostsByCategory, getRelatedPostsByTags } from '@/domain/blog'
15+
16+
const category = getCategoryById('dev')
17+
const posts = getPostsByCategory('dev')
18+
const related = getRelatedPostsByTags(currentSlug, 3)
19+
```
20+
21+
### 모듈 레벨 캐싱
22+
빌드 타임에 모든 데이터를 사전 로드하여 SSG 최적화
23+
24+
```typescript
25+
// src/domain/blog/index.ts
26+
export const allPosts = await getAllPosts()
27+
export const allCategories = await getAllCategories()
28+
export const allTags = extractTagsFromPosts(allPosts)
29+
export const tagGraph = createTagGraph(allPosts, allTags)
30+
export const tagClusters = createTagClusters(tagGraph)
31+
```
32+
33+
### 태그 그래프 시스템
34+
graphology 라이브러리로 태그 간 관계 분석
35+
36+
```typescript
37+
// 태그 관계 분석
38+
const relationships = getTagRelationships()
39+
const clusters = getTagClusters()
40+
const relatedPosts = getRelatedPostsByTags(currentSlug, 3)
41+
```
42+
43+
## 콘텐츠 구조
44+
45+
### MDX 파일 구조
46+
```
47+
src/contents/
48+
├── dev/ # 개발 카테고리
49+
│ ├── category.json
50+
│ └── *.mdx
51+
└── life/ # 일상 카테고리
52+
├── category.json
53+
└── *.mdx
54+
```
55+
56+
### 포스트 frontmatter
57+
```yaml
58+
---
59+
title: '포스트 제목'
60+
date: 2025-01-17
61+
tags: ['tag1', 'tag2']
62+
description: '포스트 설명'
63+
category: 'dev' # 또는 'life'
64+
---
65+
```
66+
67+
### 카테고리 메타데이터
68+
```json
69+
{
70+
"name": "개발",
71+
"description": "개발 관련 포스트",
72+
"color": "blue",
73+
"icon": "💻"
74+
}
75+
```
76+
77+
## 컴포넌트 패턴
78+
79+
### 타입 정의
80+
```typescript
81+
interface PostHeaderProps {
82+
title: string
83+
date: string
84+
tags: string[]
85+
category?: CategoryId
86+
readingTime?: number
87+
author?: string
88+
className?: string
89+
}
90+
```
91+
92+
### 컴포넌트 구현
93+
```typescript
94+
// 서버 컴포넌트 기본, 상호작용 필요시만 클라이언트
95+
export function PostHeader({ title, date, tags, category }: PostHeaderProps) {
96+
return (
97+
<header className={cn('mb-8 pb-8', className)}>
98+
<div className="flex items-center gap-3 mb-4">
99+
{category && <CategoryBadge categoryId={category} />}
100+
<h1 className="text-3xl font-bold">{title}</h1>
101+
</div>
102+
<TagList tags={tags} />
103+
</header>
104+
)
105+
}
106+
```
107+
108+
## 품질 기준
109+
110+
### TypeScript 엄격 모드
111+
- `any` 타입 사용 금지
112+
- 모든 Props 인터페이스 명시적 정의
113+
- 도메인 타입 재사용 (`CategoryId`, `Post`, `Tag`)
114+
115+
### 테스트 패턴
116+
```typescript
117+
// 비즈니스 로직 테스트
118+
describe('태그 그래프 시스템', () => {
119+
it('관련 포스트를 태그 유사도로 찾는다', () => {
120+
const related = getRelatedPostsByTags('test-slug', 3)
121+
expect(related).toHaveLength(3)
122+
})
123+
})
124+
```
125+
126+
### 성능 최적화
127+
- 모든 데이터 빌드 타임 사전 계산
128+
- `generateStaticParams()` 사용한 정적 경로 생성
129+
- 컴포넌트 간 props 최소화
130+
131+
## 디렉토리 구조
132+
133+
```
134+
src/
135+
├── app/ # Next.js App Router
136+
│ ├── [category]/ # 카테고리 페이지
137+
│ │ ├── [slug]/ # 포스트 상세
138+
│ │ └── _components/ # 페이지별 컴포넌트
139+
│ └── _components/ # 전역 컴포넌트
140+
├── domain/blog/ # 도메인 로직
141+
│ ├── index.ts # 공개 API + 캐싱
142+
│ ├── types.ts # 타입 정의
143+
│ └── logic/ # 비즈니스 로직
144+
│ ├── posts.ts
145+
│ ├── categories.ts
146+
│ └── tags.ts
147+
└── contents/ # MDX 콘텐츠
148+
├── dev/
149+
└── life/
150+
```
151+
152+
## 구현 원칙
153+
154+
1. **도메인 API 사용**: 직접 파일 시스템 접근 금지
155+
2. **타입 안전성**: 모든 데이터 흐름 타입 보장
156+
3. **모듈 레벨 캐싱**: 빌드 타임 데이터 사전 로드
157+
4. **컴포넌트 단순화**: 단일 책임 원칙

.context/git-workflow.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Git 워크플로우
2+
3+
브랜치 전략, 커밋 컨벤션, PR 프로세스를 정의합니다.
4+
5+
## 브랜치 전략
6+
7+
### 기본 브랜치
8+
- **main**: 배포용 안정화 브랜치
9+
- **feature/**: 기능 개발용 브랜치
10+
- **fix/**: 버그 수정용 브랜치
11+
- **docs/**: 문서 작업용 브랜치
12+
13+
### 브랜치 네이밍
14+
```bash
15+
# 기능 개발 (실제 프로젝트 패턴)
16+
feat/entities
17+
feat/post-navigation
18+
feat/entity-optimization-and-category-system
19+
20+
# 버그 수정
21+
fix/resolve-navigation-issue
22+
fix/correct-typo-in-header
23+
24+
# 문서/설정 작업
25+
docs/claude-pr-workflow
26+
config/github-templates
27+
config/tailwind-setup
28+
```
29+
30+
## 커밋 컨벤션
31+
32+
### 기본 형식
33+
```
34+
type: subject
35+
36+
body (optional)
37+
38+
footer (optional)
39+
```
40+
41+
### 커밋 타입
42+
- **feat**: 새로운 기능 추가
43+
- **fix**: 버그 수정
44+
- **docs**: 문서 수정
45+
- **style**: 코드 포맷팅, 세미콜론 누락 등
46+
- **refactor**: 코드 리팩토링
47+
- **test**: 테스트 추가 또는 수정
48+
- **chore**: 빌드 프로세스 또는 보조 도구 변경
49+
50+
## 논리적 단위 커밋
51+
52+
- 커밋은 변경사항 그룹끼리 묶여서 작성
53+
54+
## PR 프로세스
55+
56+
### PR 생성 전 체크리스트
57+
- [ ] `pnpm test` 통과 확인
58+
- [ ] `pnpm biome:check` 통과 확인
59+
- [ ] `pnpm type` 통과 확인
60+
- [ ] 커밋 메시지 정리 완료
61+
- [ ] 관련 이슈 연결
62+
63+
### PR 템플릿
64+
```markdown
65+
## 변경사항 요약
66+
<!-- 이 PR에서 변경된 내용을 간략히 설명 -->
67+
68+
## 변경 이유
69+
<!-- 왜 이 변경이 필요한지 설명 -->
70+
```

0 commit comments

Comments
 (0)