Skip to content

chan9yu/dev-blog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

474 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

chan9yu's dev blog

Next.js 16 App Router와 MDX 기반으둜 κ΅¬μΆ•λœ 개인 개발 λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
Git μ„œλΈŒλͺ¨λ“ˆλ‘œ 컨텐츠λ₯Ό κ΄€λ¦¬ν•˜λ©° SSG(Static Site Generation) λ°©μ‹μœΌλ‘œ μ΅œμ ν™”λœ μ„±λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

Release Node.js pnpm Next.js License


Stack

  • Framework: Next.js 16 App Router (Turbopack λΉŒλ“œ, React Compiler ν™œμ„±)
  • UI Runtime: React 19
  • Language: TypeScript 6 (strict mode)
  • Styling: Tailwind CSS 4 Β· shadcn/ui Β· next-themes
  • Icons: lucide-react
  • Content: MDX (Git Submodule contents/) Β· Shiki μ½”λ“œ ν•˜μ΄λΌμ΄νŒ…
  • Type Safety: Zod (frontmatterΒ·API runtime validation)
  • Testing: Vitest Β· React Testing Library Β· MSW Β· Playwright
  • Runtime: Vercel KV (/api/views 쑰회수, fail-soft fallback)
  • Quality: ESLint 9 Β· Prettier 3 Β· Lefthook 2

Architecture

3-Layer (app β†’ features β†’ shared 단방ν–₯):

src/
β”œβ”€β”€ app/         β€” λΌμš°νŒ…, metadata, providers
β”œβ”€β”€ features/    β€” 9개 도메인 (posts, tags, series, search, views, comments, theme, lightbox, about)
└── shared/      β€” components, ui(shadcn), styles, seo, config, utils, hooks, types, modules

contents/        β€” MDX μ½˜ν…μΈ  (Git Submodule)
docs/            β€” PRD, ROADMAP, TASKS, AI_WORKFLOW_GUIDE
.claude/         β€” AI μ—μ΄μ „νŠΈ ν•˜λ„€μŠ€ (agents, skills, rules, commands, hooks)

3 Laws (.claude/rules/project-structure.md):

  1. app β†’ features β†’ shared 단방ν–₯ 의쑴 (μ—­λ°©ν–₯ κΈˆμ§€)
  2. sharedλŠ” featuresλ₯Ό λͺ¨λ¦„
  3. feature κ°„ 직접 import κΈˆμ§€ β€” app/μ—μ„œ 쑰립 λ˜λŠ” shared/둜 승격

Commands

pnpm dev          # 개발 μ„œλ²„ (port 3100)
pnpm build        # ν”„λ‘œλ•μ…˜ λΉŒλ“œ (Turbopack)
pnpm lint         # ESLint
pnpm format       # Prettier ν¬λ§€νŒ…
pnpm test         # Vitest (Unit + Integration)
pnpm test:e2e     # Playwright E2E (5 spec)

포트: 개발 μ„œλ²„λŠ” 3100 (Next.js κΈ°λ³Έ 3000이 μ•„λ‹˜).


Key Decisions

  • SSG-first β€” λŸ°νƒ€μž„ CMSΒ·μ„œλ²„ κ²€μƒ‰Β·ν΄λΌμ΄μ–ΈνŠΈ μΊμ‹œ(TanStack Query) λ„μž…ν•˜μ§€ μ•ŠμŒ. μœ μΌν•œ λŸ°νƒ€μž„ APIλŠ” /api/views(Vercel KV).
  • TDD (Redβ†’Greenβ†’Refactor) + Testing Trophy (Integration ~60%)
  • Page-First Skeleton β€” M1μ—μ„œ 더미 λ°μ΄ν„°λ‘œ μ „ νŽ˜μ΄μ§€ UI μ™„μ„± ν›„ 단계적 싀데이터 ꡐ체
  • μ½˜ν…μΈ λŠ” Git Submodule β€” contents/ μ €μž₯μ†Œ λΆ„λ¦¬λ‘œ μ†ŒμŠ€μ™€ κΈ€μ˜ 컀밋 이λ ₯ 독립
  • ν•œκΈ€ slug μ˜μ—­λ³„ 뢄리 β€” ν¬μŠ€νŠΈλŠ” 영문 κ°•μ œ(도ꡬ·CDN ν˜Έν™˜), νƒœκ·ΈΒ·μ‹œλ¦¬μ¦ˆλŠ” ν•œκΈ€ ν—ˆμš© + 곡백→hyphen μ •κ·œν™”
  • Fail-soft 쑰회수 β€” KV λ―Έμ„€μ •/μž₯μ•  μ‹œ GET=0, POST=silent skip (νŽ˜μ΄μ§€ 500 차단)

λ¬Έμ„œ (Progressive Disclosure)

λ¬Έμ„œ μš©λ„
docs/TASKS.md M0~M7 νƒœμŠ€ν¬ 체크리슀트 (199/199 μ™„λ£Œ)
docs/ROADMAP.md λ§ˆμΌμŠ€ν†€λ³„ 상세 β€” 검증 κΈ°μ€€, Entry/Exit
docs/PRD_PRODUCT.md μ œν’ˆ μŠ€νŽ™ β€” FEAT, US, 성곡 μ§€ν‘œ
docs/PRD_TECHNICAL.md 기술 계약 β€” MOD, RT, ADR, 데이터 λͺ¨λΈ
docs/AI_WORKFLOW_GUIDE.md Claude Code λ©€ν‹° μ—μ΄μ „νŠΈ ν•˜λ„€μŠ€ λ™μž‘ 원리
CLAUDE.md Claude Code μ˜¨λ³΄λ”© Β· Progressive Disclosure

AI 개발 μ›Œν¬ν”Œλ‘œμš°

이 ν”„λ‘œμ νŠΈλŠ” Claude Code 기반 μ»΄νŒŒμš΄λ“œ μ—”μ§€λ‹ˆμ–΄λ§ ν•˜λ„€μŠ€λ₯Ό κ°–μΆ”κ³  μžˆλ‹€.
μ‚¬μš©μžκ°€ μžμ—°μ–΄λ‘œ μš”μ²­ν•˜λ©΄ λ‚΄λΆ€μ—μ„œ μ „λ¬Έ μ—μ΄μ „νŠΈ νŒ€μ΄ μžλ™ κ΅¬μ„±λ˜μ–΄ 6단계 ν’ˆμ§ˆ 사이클을 λˆλ‹€.

"M0-01 μ§„ν–‰ν•΄μ€˜"
  β†’ blog-dev μŠ€ν‚¬ 트리거
  β†’ TeamCreate (Feature νŠΈλž™ νŒ€ ꡬ성)
  β†’ PLAN β†’ EXECUTE β†’ REVIEW(핑퐁 3회) β†’ VALIDATE β†’ DOCUMENT β†’ SYNTHESIZE
  β†’ μ‚¬μš©μž 보고 (λ³€κ²½ νŒŒμΌΒ·μ‚¬μ΄ν΄ ν†΅κ³„Β·λΉŒλ“œ κ²°κ³Ό)

4개 νŠΈλž™

νŠΈλž™ 트리거 μ˜ˆμ‹œ
Feature M0-06 μ§„ν–‰, 검색 κΈ°λŠ₯ λ§Œλ“€μ–΄μ€˜
Content React 19 use ν›… 포슀트 μ΄ˆμ•ˆ
GC Week 0 GC, μ²­μ†Œν•΄μ€˜, ν•˜λ„€μŠ€ 평가
Docs TASKS 체크 맞좰쀘, ROADMAP μ§„ν–‰λ₯ 

ꡬ성 μžμ‚°

  • 15개 μ—μ΄μ „νŠΈ (orchestration Β· developer Β· planning Β· quality Β· content Β· documentation)
  • 15개 μŠ€ν‚¬ (μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 3 Β· 도메인 μž‘μ—… 4 Β· μ°Έμ‘° 지식 8 β€” ai-seoΒ·programmatic-seoΒ·seo-audit μΆ”κ°€)
  • 17개 κ·œμΉ™ (μ•„ν‚€ν…μ²˜Β·μŠ€νƒ€μΌΒ·ν’ˆμ§ˆΒ·ν•˜λ„€μŠ€Β·μ•„μ΄μ½˜Β·REVIEW κ°•μ œΒ·No-FallbackΒ·Comments)
  • 9개 μŠ¬λž˜μ‹œ μ»€λ§¨λ“œ (μˆ˜λ™ 단일 μž‘μ—…μš©)

상세 λ™μž‘μ€ docs/AI_WORKFLOW_GUIDE.md μ°Έμ‘°.

자율 λ²”μœ„

  • μžλ™: src/ μ½”λ“œ, ν…ŒμŠ€νŠΈ, docs/TASKS.md μ²΄ν¬λ°•μŠ€, CHANGELOG.md
  • μ‚¬μš©μž 승인 ν•„μˆ˜: μ˜μ‘΄μ„± μΆ”κ°€(package.json)Β·μ•„ν‚€ν…μ²˜ λ³€κ²½Β·PRD μˆ˜μ •Β·Git μ“°κΈ° μž‘μ—… (commitΒ·pushΒ·PRΒ·λ¨Έμ§€Β·tag λͺ¨λ‘ λͺ…μ‹œ μš”μ²­ ν•„μˆ˜, .claude/rules/workflow.md "Git μ“°κΈ° μ ˆλŒ€ κΈˆμ§€ κ·œμΉ™" μ°Έμ‘°)

Git 브랜치 μ „λž΅ (Git Flow Lite)

main       ← ν”„λ‘œλ•μ…˜ 릴리슀 (보호)
develop    ← κΈ°λ³Έ 톡합 브랜치 (λͺ¨λ“  feature PR의 base)
feature/M{n}-{슬러그}  ← λ§ˆμΌμŠ€ν†€ λ‹¨μœ„ 개발

1 λ§ˆμΌμŠ€ν†€ = 1 feature 브랜치.
μƒˆ λ§ˆμΌμŠ€ν†€ 첫 νƒœμŠ€ν¬ μ§„μž… μ‹œ orchestratorκ°€ 리λͺ¨νŠΈ μ΅œμ‹  developμœΌλ‘œλΆ€ν„° feature/M{n}-* 브랜치 생성을 μ œμ•ˆν•œλ‹€ (μ‚¬μš©μž 승인 ν›„ μ‹€ν–‰).
λ§ˆμΌμŠ€ν†€ μ™„λ£Œ μ‹œ develop으둜 PR, merge commit λ˜λŠ” rebase merge (squash merge κΈˆμ§€ β€” atomic commits 보쑴).
PR 생성 μ „ λ°˜λ“œμ‹œ origin/main (λ˜λŠ” base 브랜치)을 develop에 mergeν•΄μ„œ conflict 사전 ν•΄μ†Œ.


개발 μ‹œμž‘

# μ˜μ‘΄μ„± μ„€μΉ˜ + μ„œλΈŒλͺ¨λ“ˆ (contents) μ΄ˆκΈ°ν™”
git clone --recurse-submodules https://github.com/chan9yu/dev-blog.git
cd dev-blog
pnpm install

# 개발 μ„œλ²„
pnpm dev
# β†’ http://localhost:3100

# ν”„λ‘œλ•μ…˜ λΉŒλ“œ ν…ŒμŠ€νŠΈ
pnpm build

배포

chan9yu.dev β€” Vercel μžλ™ 배포 (main λ¨Έμ§€ β†’ ν”„λ‘œλ•μ…˜, develop PR β†’ Preview).

  • Framework Preset: Next.js
  • Build Command: pnpm build (Turbopack)
  • Output: .next/
  • Environment Variables (선택, 쑰회수 ν™œμ„±ν™” μ‹œ):
    • KV_REST_API_URL, KV_REST_API_TOKEN β€” @vercel/kv μžλ™ 인식
    • λ―Έμ„€μ • μ‹œ λΉŒλ“œΒ·λ Œλ” 정상 λ™μž‘, 쑰회수만 0으둜 ν‘œμ‹œ
  • ν’ˆμ§ˆ 게이트: 둜컬 lefthook pre-commit (Prettier Β· ESLint Β· tsc) + Vercel λΉŒλ“œ μ‹œ typecheck

License

MIT License - μžμ„Έν•œ λ‚΄μš©μ€ LICENSE νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”.

About

πŸ‘¨πŸ»β€πŸ’» @chan9yu's dev blog | ν”„λ‘ νŠΈμ—”λ“œ 개발의 아이디어와 κ²½ν—˜μ„ κΈ°λ‘ν•˜λŠ” 개발 λΈ”λ‘œκ·Έ μ½”λ“œμ™€ λ””μžμΈ, μ‚¬μš©μž κ²½ν—˜μ„ μ•„μš°λ₯΄λŠ” μΈμ‚¬μ΄νŠΈλ₯Ό λ‹΄μŠ΅λ‹ˆλ‹€.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors