App (iOS / macOS)
โโ Features
โโ Core / DesignSystem
โโ Domain
โโ Data / Entity
์์กด์ฑ์ ๋จ๋ฐฉํฅ. ์์ ๋ ์ด์ด๋ง ํ์ ๋ ์ด์ด๋ฅผ ์ฐธ์กฐํ๋ฉฐ, ์ญ๋ฐฉํฅ ์ฐธ์กฐ๋ ๊ธ์ง.
App
โโโ Features โ TCA Reducer + View, DependencyClient ์กฐ๋ฆฝ
โโโ Core โ ํฌ๋ก์ค์ปคํ
์ธํฐํ์ด์ค (Analytics, CrashReporting, AppEnvironment)
โโโ DesignSystem โ ๋์์ธ ํ ํฐ + ์ฌ์ฌ์ฉ UI ์ปดํฌ๋ํธ
โโโ (transitive)
โโโ Domain โ Repository ํ๋กํ ์ฝ + UseCase
โโโ Data โ ๋คํธ์ํฌ ๊ตฌํ์ฒด (Supabase, REST)
โโโ Entity โ ์์ ๋๋ฉ์ธ ๋ชจ๋ธ
| ๋ ์ด์ด | ์ฑ ์ | ์ธ๋ถ ๊ท์น |
|---|---|---|
| App | ์ง์ ์ , SDK ์ด๊ธฐํ, ๋ฃจํธ Store ์์ฑ | App/iOS/CLAUDE.md |
| Features | TCA Reducer + View, DependencyClient | Modules/Features/CLAUDE.md |
| Core | SDK ์๋ ์์ ์ธํฐํ์ด์ค | Modules/Core/CLAUDE.md |
| DesignSystem | ๋์์ธ ํ ํฐ, ๊ธฐ์ด ์ปดํฌ๋ํธ | Modules/DesignSystem/CLAUDE.md |
| Domain | Repository ํ๋กํ ์ฝ, UseCase | Modules/Domain/CLAUDE.md |
| Data | Repository ๊ตฌํ์ฒด, DTOโEntity | Modules/Data/CLAUDE.md |
| Entity | ์์ ๋๋ฉ์ธ ๋ชจ๋ธ | Modules/Entity/CLAUDE.md |
User Action
โ TCA Reducer (Features)
โ DependencyClient.fetch()
โ UseCase.execute() (Domain)
โ Repository.fetch() (Domain Protocol)
โ ConcreteRepository (Data) โ Supabase / REST
โ DTO โ Entity ๋ณํ
โ State ์
๋ฐ์ดํธ โ View ๋ ๋๋ง
Analytics / CrashReporting์ ๊ตฌํ๊ณผ ์ธํฐํ์ด์ค๊ฐ ๋ ์ด์ด ๊ฒฝ๊ณ๋ก ๋ถ๋ฆฌ๋จ:
Core : ์ธํฐํ์ด์ค ์ ์ (AnalyticsClient, CrashReportingClient)
Features : DependencyKey ๋ฑ๋ก, liveValue = .noop
App/iOS : Firebase ๊ธฐ๋ฐ live ๊ตฌํ์ฒด ์์ฑ + withDependencies๋ก ์ฃผ์
- Feature ๊ฐ ์ง์ import ๊ธ์ง (HomeFeature โ QuizFeature ๋ฑ)
- App layer ์ด์ธ์์ Firebase, ์ธ๋ถ SDK ์ง์ import ๊ธ์ง
- TCA State์ ํด๋์ค ํ์
์ ์ฅ ๊ธ์ง (
Equatable์ค์ ๋ถ๊ฐ) _prefix action์ Feature ์ธ๋ถ์์ send ๊ธ์ง- Reducer ๋ด์์ UI ์์ ์ง์ ์ํ ๊ธ์ง
- Feature์์ Repository ์ง์ import ๊ธ์ง (DependencyClient ํตํด์๋ง)
- Core์์ ์ธ๋ถ SDK import ๊ธ์ง (์์ Swift ์ธํฐํ์ด์ค๋ง)