πŸ“ μ΅œμ’… ν”„λ‘œμ νŠΈ ꡬ쑰

web02-CMC/                                    # ν”„λ‘œμ νŠΈ 루트
β”‚
β”œβ”€β”€ .git/                                     # Git μ €μž₯μ†Œ
β”‚
β”œβ”€β”€ .github/                                  # GitHub μ„€μ •
β”‚   β”œβ”€β”€ ISSUE_TEMPLATE/
β”‚   β”‚   └── feature_request.md               # 이슈 ν…œν”Œλ¦Ώ (μ„€λͺ…, μž‘μ—… λ‚΄μš©, μ™„λ£Œμ‘°κ±΄)
β”‚   └── pull_request_template.md             # PR ν…œν”Œλ¦Ώ (κ΄€λ ¨ 이슈, μž‘μ—… λ‚΄μš©, μ§ˆλ¬Έμ‚¬ν•­)
β”‚
β”œβ”€β”€ .husky/                                   # Git hooks 관리 (Husky)
β”‚   └── pre-commit                            # 컀밋 μ „ lint-staged μ‹€ν–‰
β”‚
β”œβ”€β”€ frontend/                                 # React + Vite ν”„λ‘ νŠΈμ—”λ“œ
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ assets/                          # 이미지, 폰트, SVG λ“± 정적 파일
β”‚   β”‚   β”œβ”€β”€ commons/                         # μž¬μ‚¬μš© κ°€λŠ₯ν•œ 곡톡 μ½”λ“œ
β”‚   β”‚   β”‚   β”œβ”€β”€ components/                  # 곡톡 UI μ»΄ν¬λ„ŒνŠΈ (Button, Modal λ“±)
β”‚   β”‚   β”‚   β”œβ”€β”€ hooks/                       # 곡톡 μ»€μŠ€ν…€ ν›…
β”‚   β”‚   β”‚   └── utils/                       # μ „μ—­ μœ ν‹Έ ν•¨μˆ˜
β”‚   β”‚   β”œβ”€β”€ pages/                           # νŽ˜μ΄μ§€ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ App.tsx                          # 메인 App μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ main.tsx                         # μ•± μ—”νŠΈλ¦¬ 포인트
β”‚   β”‚   └── index.css                        # μ „μ—­ μŠ€νƒ€μΌ
β”‚   β”œβ”€β”€ public/                              # 정적 파일 (favicon λ“±)
β”‚   β”œβ”€β”€ .prettierrc                          # Prettier μ„€μ • (semi: true, trailingComma: none)
β”‚   β”œβ”€β”€ eslint.config.js                     # ESLint μ„€μ • (React, TypeScript, Prettier 톡합)
β”‚   β”œβ”€β”€ package.json                         # Frontend μ˜μ‘΄μ„± 및 슀크립트
β”‚   β”œβ”€β”€ tsconfig.json                        # TypeScript μ„€μ •
β”‚   β”œβ”€β”€ tsconfig.app.json                    # App용 TypeScript μ„€μ •
β”‚   β”œβ”€β”€ tsconfig.node.json                   # Node용 TypeScript μ„€μ •
β”‚   └── vite.config.ts                       # Vite λΉŒλ“œ μ„€μ •
β”‚
β”œβ”€β”€ backend/                                  # NestJS λ°±μ—”λ“œ
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ shared/                          # 곡유 μœ ν‹Έλ¦¬ν‹° (utils, types, consts)
β”‚   β”‚   β”œβ”€β”€ common/                          # 곡톡 κΈ°λŠ₯ (filters, guards, interceptors, decorators)
β”‚   β”‚   β”œβ”€β”€ app.module.ts                    # 루트 λͺ¨λ“ˆ
β”‚   β”‚   β”œβ”€β”€ app.controller.ts                # κΈ°λ³Έ 컨트둀러
β”‚   β”‚   β”œβ”€β”€ app.service.ts                   # κΈ°λ³Έ μ„œλΉ„μŠ€
β”‚   β”‚   └── main.ts                          # μ•± μ—”νŠΈλ¦¬ 포인트
β”‚   β”œβ”€β”€ test/                                # E2E ν…ŒμŠ€νŠΈ
β”‚   β”œβ”€β”€ .prettierrc                          # Prettier μ„€μ • (semi: false, trailingComma: all)
β”‚   β”œβ”€β”€ eslint.config.mjs                    # ESLint μ„€μ • (NestJS, TypeScript, Prettier 톡합)
β”‚   β”œβ”€β”€ package.json                         # Backend μ˜μ‘΄μ„± 및 슀크립트
β”‚   β”œβ”€β”€ tsconfig.json                        # TypeScript μ„€μ •
β”‚   β”œβ”€β”€ tsconfig.build.json                  # λΉŒλ“œμš© TypeScript μ„€μ •
β”‚   └── nest-cli.json                        # NestJS CLI μ„€μ •
β”‚
β”œβ”€β”€ packages/                                 # 곡유 νŒ¨ν‚€μ§€ 디렉토리 (ν–₯ν›„ @cmc/types, @cmc/utils λ“±)
β”‚   └── .gitkeep                             # Git이 빈 폴더λ₯Ό μΆ”μ ν•˜λ„λ‘ ν•˜λŠ” 파일
β”‚
β”œβ”€β”€ .editorconfig                            # 에디터 μ„€μ • 톡일 (λ“€μ—¬μ“°κΈ°, μ€„λ°”κΏˆ, 인코딩)
β”œβ”€β”€ .gitignore                               # Git 좔적 μ œμ™Έ 파일 (node_modules, dist, .env λ“±)
β”œβ”€β”€ .lintstagedrc.json                       # lint-staged μ„€μ • (staged νŒŒμΌμ—λ§Œ lint, format μ‹€ν–‰)
β”œβ”€β”€ .npmrc                                   # pnpm μ„€μ • (shamefully-hoist, auto-install-peers λ“±)
β”œβ”€β”€ .nvmrc                                   # Node.js 버전 λͺ…μ‹œ (v20)
β”‚
β”œβ”€β”€ package.json                             # 루트 package.json (λͺ¨λ…Έλ ˆν¬ 슀크립트, devDependencies)
β”œβ”€β”€ pnpm-workspace.yaml                      # pnpm workspace μ •μ˜ (frontend, backend, packages/*)
β”œβ”€β”€ pnpm-lock.yaml                           # pnpm μ˜μ‘΄μ„± 잠금 파일
β”‚
└── README.md                                # ν”„λ‘œμ νŠΈ λ¬Έμ„œ (νŒ€ μ†Œκ°œ, κΈ°λŠ₯ μ„€λͺ…, μ»¨λ²€μ…˜)