# [[React Project Structure]] ## πŸ“Œ Brief Summary React μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 기본적으둜 μ•„ν‚€ν…μ²˜λ‚˜ 폴더 ꡬ쑰λ₯Ό κ°•μ œν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, ν”„λ‘œμ νŠΈκ°€ ν™•μž₯됨에 따라 ꡬ쑰 관리가 ν•„μˆ˜μ μž…λ‹ˆλ‹€ [1]. μœ μ§€λ³΄μˆ˜μ„±, ν™•μž₯μ„±, ν˜‘μ—…μ˜ νš¨μœ¨μ„±μ„ 높이기 μœ„ν•΄ ν”„λ‘ νŠΈμ—”λ“œ μƒνƒœκ³„λŠ” 과거의 파일 μœ ν˜• 기반 κ΅¬μ‘°μ—μ„œ κΈ°λŠ₯(Feature) λ˜λŠ” 도메인 기반의 ꡬ쑰둜 μ „ν™˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [2, 3]. 특히 2025λ…„ κΈ°μ€€μœΌλ‘œλŠ” λͺ¨λ“ˆν™”와 관심사 뢄리λ₯Ό κ°•μ‘°ν•˜λŠ” ν•˜μ΄λΈŒλ¦¬λ“œ 폴더 ꡬ쑰와 Feature-Sliced Design(FSD)κ³Ό 같이 μΊ‘μŠν™”μ™€ 단방ν–₯ μ˜μ‘΄μ„±μ„ κ°•μ œν•˜λŠ” 체계적인 방법둠이 ꢌμž₯되고 μžˆμŠ΅λ‹ˆλ‹€ [4-7]. ## πŸ“– Core Content * **폴더 ꡬ쑰의 μ€‘μš”μ„±** * ꡬ쑰가 λͺ…ν™•ν•˜μ§€ μ•Šμ€ λŒ€κ·œλͺ¨ React 앱은 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 UI μ»΄ν¬λ„ŒνŠΈλ‘œ λˆ„μˆ˜λ˜κ±°λ‚˜ μƒνƒœ μ†Œμœ κΆŒμ΄ λΆˆλΆ„λͺ…ν•΄μ§€λŠ” λ“± μ•„ν‚€ν…μ²˜ λΆ•κ΄΄(Architectural Collapse)λ₯Ό κ²ͺκΈ° μ‰½μŠ΅λ‹ˆλ‹€ [1, 8]. * 잘 κ΅¬μ„±λœ 폴더 κ΅¬μ‘°λŠ” 파일의 λͺ©μ μ„ λͺ…ν™•νžˆ ν•˜μ—¬ λΉ λ₯Έ 파일 탐색을 돕고, 예츑 κ°€λŠ₯성을 높이며, 디버깅을 μš©μ΄ν•˜κ²Œ ν•˜μ—¬ μž₯기적인 기술 뢀채λ₯Ό μ€„μ—¬μ€λ‹ˆλ‹€ [9-11]. * **ꡬ쑰의 λ°œμ „ 및 μ£Όμš” μ ‘κ·Ό 방식** * **파일 μœ ν˜• 기반 ꡬ쑰 (File-Type Based Structure):** μ»΄ν¬λ„ŒνŠΈ, ν›…, μŠ€νƒ€μΌ 등을 각각의 역할별 폴더(`/components`, `/hooks` λ“±)에 λͺ¨μ•„λ‘λŠ” 고전적인 λ°©μ‹μž…λ‹ˆλ‹€ [2, 12, 13]. μž‘μ€ 규λͺ¨μ—μ„œλŠ” μ§κ΄€μ μ΄μ§€λ§Œ, 앱이 컀지면 νŠΉμ • κΈ°λŠ₯을 μˆ˜μ •ν•˜κΈ° μœ„ν•΄ 전체 디렉토리λ₯Ό 탐색해야 ν•˜λ―€λ‘œ ν™•μž₯성이 크게 λ–¨μ–΄μ§‘λ‹ˆλ‹€ [2, 12, 13]. * **κΈ°λŠ₯ 기반 ꡬ쑰 (Feature-Based Structure):** λΉ„μ¦ˆλ‹ˆμŠ€ λ„λ©”μΈμ΄λ‚˜ κΈ°λŠ₯(예: `auth`, `dashboard`)을 μ€‘μ‹¬μœΌλ‘œ κ΄€λ ¨λœ μ»΄ν¬λ„ŒνŠΈ, ν›…, API, νƒ€μž…μ„ ν•˜λ‚˜μ˜ 폴더에 μΊ‘μŠν™”ν•˜μ—¬ 독립적인 λͺ¨λ“ˆμ²˜λŸΌ λ‹€λ£¨λŠ” λ°©μ‹μž…λ‹ˆλ‹€ [3, 14, 15]. μ΄λŠ” 높은 응집도와 λͺ…ν™•ν•œ 경계λ₯Ό μ œκ³΅ν•˜μ—¬ ν™•μž₯에 μœ λ¦¬ν•©λ‹ˆλ‹€ [3, 15]. * **2025λ…„ ꢌμž₯ ν•˜μ΄λΈŒλ¦¬λ“œ ꡬ쑰:** μ „μ—­ 곡유 μš”μ†Œμ™€ κΈ°λŠ₯별 μš”μ†Œλ₯Ό κ· ν˜• 있게 λΆ„λ¦¬ν•©λ‹ˆλ‹€. 주둜 `/src` 디렉토리 ν•˜μœ„μ— μž¬μ‚¬μš© κ°€λŠ₯ν•œ `/components`, 도메인 λ‘œμ§μ„ μΊ‘μŠν™”ν•œ `/features`, 곡톡 `/hooks`, `/pages`(라우트), μ™ΈλΆ€ ν†΅μ‹ μš© `/services`, μ „μ—­ μƒνƒœμš© `/store`, μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜μš© `/utils` λ“±μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€ [16-25]. * **Feature-Sliced Design (FSD)** * λŒ€κ·œλͺ¨ React μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μœ„ν•΄ μ„€κ³„λœ ν˜„λŒ€μ μΈ μ•„ν‚€ν…μ²˜ λ°©λ²•λ‘ μœΌλ‘œ, μ»΄ν¬λ„ŒνŠΈ 기반 개발, 도메인 주도 섀계(DDD), λͺ¨λ“ˆμ‹ μ‹œμŠ€ν…œμ˜ μž₯점을 κ²°ν•©ν–ˆμŠ΅λ‹ˆλ‹€ [4, 26]. * **단방ν–₯ μ˜μ‘΄μ„± 계측:** `shared`(곡톡 μœ ν‹Έ/UI) $\rightarrow$ `entities`(λΉ„μ¦ˆλ‹ˆμŠ€ λͺ¨λΈ) $\rightarrow$ `features`(μ‚¬μš©μž μƒν˜Έμž‘μš©) $\rightarrow$ `widgets`(μ‘°ν•©λœ UI 블둝) $\rightarrow$ `pages`(ν™”λ©΄) $\rightarrow$ `app`(μ „μ—­ μ„€μ •) 순으둜 계측을 λ‚˜λˆ„λ©°, ν•˜μœ„ 계측은 μƒμœ„ 계측을 import ν•  수 없도둝 μ—„κ²©νžˆ ν†΅μ œν•©λ‹ˆλ‹€ [5, 14, 27]. * **Public API κ·œμΉ™:** 각 μŠ¬λΌμ΄μŠ€λŠ” 단일 μ§„μž…μ (`index.ts`)λ§Œμ„ λ…ΈμΆœν•˜λ©° λ‚΄λΆ€ κ΅¬ν˜„μ€ μˆ¨κΉλ‹ˆλ‹€. 이λ₯Ό 톡해 μ˜λ„μΉ˜ μ•Šμ€ κ²°ν•©(Coupling)을 λ°©μ§€ν•˜κ³  μ•ˆμ „ν•œ λ¦¬νŒ©ν† λ§μ„ 보μž₯ν•©λ‹ˆλ‹€ [28, 29]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Feature-Sliced Design (FSD)]], [[Domain-Driven Design]], [[Clean Code]] - **Projects/Contexts:** [[Scalable Frontend Systems]], [[React Development]] - **Contradictions/Notes:** κΈ°λŠ₯ 기반 κ΅¬μ‘°λ‚˜ FSD 방법둠은 λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μœ μ§€λ³΄μˆ˜μ™€ ν™•μž₯을 μœ„ν•΄μ„œλŠ” ν•„μˆ˜μ μ΄κ³  ν›Œλ₯­ν•œ ν•΄κ²°μ±…μ΄μ§€λ§Œ [4, 30], 맀우 λ‹¨μˆœν•œ μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈλ‚˜ μ΄ˆλ³΄μžμ—κ²ŒλŠ” 디렉토리 ꡬ쑰 섀정이 λΆˆν•„μš”ν•˜κ²Œ λ³΅μž‘ν•œ μ˜€λ²„ν‚¬(overkill)이 될 수 있으며 초기 ν•™μŠ΅ 곑선이 μš”κ΅¬λ©λ‹ˆλ‹€ [30-32]. --- *Last updated: 2026-04-26*