Skip to content

Latest commit

ย 

History

History
58 lines (41 loc) ยท 4.44 KB

File metadata and controls

58 lines (41 loc) ยท 4.44 KB

chan9yu ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ

ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ 1์ธ ์ €์ž ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ.

Stack

Next.js 16 App Router ยท React 19 (Compiler) ยท TypeScript 6 strict ยท Tailwind CSS 4 ยท shadcn/ui ยท lucide-react ยท next-themes

Architecture

3-Layer: app/ (๋ผ์šฐํŒ…ยท์กฐ๋ฆฝ) โ†’ features/ (9๊ฐœ ๋„๋ฉ”์ธ ๋ชจ๋“ˆ) โ†’ shared/ (๋ฒ”์šฉ). Feature ๊ฐ„ ์ง์ ‘ import ๊ธˆ์ง€.

src/app/         โ€” ๋ผ์šฐํŒ…, metadata, providers
src/features/    โ€” posts, tags, series, search, views, comments, theme, lightbox, about
src/shared/      โ€” components, ui(shadcn), styles, seo, config, utils, hooks, types, modules
contents/        โ€” MDX ์ฝ˜ํ…์ธ  (Git Submodule, ๋ฃจํŠธ)

Commands

pnpm dev          # ๊ฐœ๋ฐœ ์„œ๋ฒ„ (port 3100)
pnpm build        # ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ
pnpm lint         # ESLint
pnpm format       # Prettier ํฌ๋งคํŒ…
pnpm test         # Vitest (Unit + Integration)
pnpm test:e2e     # Playwright E2E

Key Decisions

  • SSG-first. ๋Ÿฐํƒ€์ž„ CMSยท์„œ๋ฒ„ ๊ฒ€์ƒ‰ยทํด๋ผ์ด์–ธํŠธ ์บ์‹œ(TanStack Query) ๋„์ž…ํ•˜์ง€ ์•Š์Œ
  • TDD (Redโ†’Greenโ†’Refactor) + Testing Trophy (Integration ~60%)
  • Page-First Skeleton: M1์—์„œ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋กœ ์ „ ํŽ˜์ด์ง€ UI ์™„์„ฑ ํ›„ ๋‹จ๊ณ„์  ์‹ค๋ฐ์ดํ„ฐ ๊ต์ฒด

AI ํ˜‘์—… (ํ•˜๋„ค์Šค)

์ด ํ”„๋กœ์ ํŠธ์—๋Š” 15๊ฐœ ์ „๋ฌธ ์—์ด์ „ํŠธยท12๊ฐœ ์Šคํ‚ฌยท17๊ฐœ ๊ทœ์น™์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ปดํŒŒ์šด๋“œ ์—”์ง€๋‹ˆ์–ด๋ง ํ•˜๋„ค์Šค๊ฐ€ ๊ตฌ์ถ•๋˜์–ด ์žˆ๋‹ค. "M0-01 ์ง„ํ–‰ํ•ด์ค˜", "๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๋งŒ๋“ค์–ด์ค˜", "React 19 ํฌ์ŠคํŠธ ์ž‘์„ฑํ•ด์ค˜", "Week 0 GC" ๊ฐ™์€ ์ž์—ฐ์–ด ์š”์ฒญ๋งŒ์œผ๋กœ FeatureยทContentยทGCยทDocs 4๊ฐœ ํŠธ๋ž™ ์ค‘ ํ•˜๋‚˜๋กœ ์ž๋™ ๋ถ„๋ฅ˜๋˜์–ด PLANโ†’EXECUTEโ†’REVIEW(ํ•‘ํ 3ํšŒ)โ†’VALIDATEโ†’DOCUMENT ์‚ฌ์ดํด์ด ๋Œ์•„๊ฐ„๋‹ค. ํ˜„์žฌ ๋งˆ์ผ์Šคํ†ค ์ง„ํ–‰๋ฅ ์€ docs/TASKS.md๋ฅผ ์ฐธ์กฐ. ์ƒ์„ธ ๋™์ž‘์€ docs/AI_WORKFLOW_GUIDE.md ์ฐธ์กฐ.

์ž์œจ ๋ฒ”์œ„ ๊ฒฝ๊ณ„ (.claude/rules/autonomy.md): src/ยทํ…Œ์ŠคํŠธยทdocs/TASKS.md ์ฒดํฌ๋ฐ•์ŠคยทCHANGELOG.md๋Š” ์ž๋™, ์˜์กด์„ฑ/์•„ํ‚คํ…์ฒ˜/PRD/Git ์“ฐ๊ธฐ๋Š” ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉ์ž ์Šน์ธ.

Git ๋ธŒ๋žœ์น˜ ์ „๋žต (.claude/rules/workflow.md): ๊ธฐ๋ณธ ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜๋Š” develop, ๋งˆ์ผ์Šคํ†ค๋‹น feature/M{n}-* ๋ธŒ๋žœ์น˜ 1๊ฐœ. ์ƒˆ ๋งˆ์ผ์Šคํ†ค ์ฒซ ํƒœ์Šคํฌ ์ง„์ž… ์‹œ orchestrator๊ฐ€ ๋ฆฌ๋ชจํŠธ ์ตœ์‹  develop์œผ๋กœ๋ถ€ํ„ฐ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์ œ์•ˆ โ†’ ์‚ฌ์šฉ์ž ์Šน์ธ ํ›„ ์‹คํ–‰. ๋งˆ์ผ์Šคํ†ค ์™„๋ฃŒ ์‹œ milestone-gate PASS โ†’ develop์œผ๋กœ PR. main์€ ํ”„๋กœ๋•์…˜ ๋ฆด๋ฆฌ์Šค ์ „์šฉ.

Progressive Disclosure

์ž‘์—…์— ํ•„์š”ํ•œ ์ƒ์„ธ ๋ฌธ์„œ๋ฅผ ์•„๋ž˜์—์„œ ์ฐพ์•„ ์ฝ์„ ๊ฒƒ. ๋ชจ๋“  ์ •๋ณด๋ฅผ ํ•œ๋ฒˆ์— ์ฝ์ง€ ๋ง๊ณ  ํ˜„์žฌ ํƒœ์Šคํฌ์— ๊ด€๋ จ๋œ ๋ฌธ์„œ๋งŒ ์ฐธ์กฐ.

๋ฌธ์„œ ์šฉ๋„
docs/TASKS.md ํ˜„์žฌ ์ง„ํ–‰ํ•  ํƒœ์Šคํฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธ (M0~M7)
docs/ROADMAP.md ํƒœ์Šคํฌ๋ณ„ ์ƒ์„ธ โ€” ๋Œ€์‘ ID, ๊ฒ€์ฆ ๊ธฐ์ค€, Entry/Exit
docs/PRD_PRODUCT.md ์ œํ’ˆ ์ŠคํŽ™ โ€” FEAT, US, ์„ฑ๊ณต ์ง€ํ‘œ, ๋น„๋ชฉํ‘œ
docs/PRD_TECHNICAL.md ๊ธฐ์ˆ  ๊ณ„์•ฝ โ€” MOD, RT, ADR, ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ๋งˆ์ผ์Šคํ†ค
docs/AI_WORKFLOW_GUIDE.md ํ•˜๋„ค์Šค ๋™์ž‘ ์›๋ฆฌ โ€” 4๊ฐœ ํŠธ๋ž™ยท6๋‹จ๊ณ„ ์‚ฌ์ดํดยทM0-06 ์‹œ์—ฐยท์‚ฐ์ถœ๋ฌผ ๊ฒฝ๋กœ
.claude/rules/*.md ์ฝ”๋“œ ์ž‘์„ฑ ๊ทœ์•ฝ 17์ข… (์•„ํ‚คํ…์ฒ˜ยทReactยทTSยทํ…Œ๋งˆยท์ ‘๊ทผ์„ฑยทํ…Œ์ŠคํŠธยทMDXยทSEOยท์ž์œจยทNo-FallbackยทComments ๋“ฑ)
.claude/agents/**/*.md 15๊ฐœ ์—์ด์ „ํŠธ ์ •์˜ (์ปดํŒŒ์šด๋“œ ์‚ฌ์ดํด์—์„œ ์ž๋™ ํ˜ธ์ถœ)
.claude/skills/*/SKILL.md 12๊ฐœ ์Šคํ‚ฌ โ€” blog-dev(์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ)ยทcompound-engineeringยทcontent-writingยทgarbage-collectionยทmilestone-gateยทtask-completion ๋“ฑ