app์ ์ ์ญ ๋ด๋น๊ฒ์ด์ ๊ทธ๋ํ์ Hilt ์ํธ๋ฆฌํฌ์ธํธ๋ฅผ ์ ์ํ๊ณ , ๋๋จธ์ง ๋ชจ๋์ wiring ํฉ๋๋ค.feature:*๋ชจ๋์ ํ๋ฉด/ํ๋ก์ฐ ๋จ์(์:feature:mission,feature:fortune)๋ก ๋ถ๋ฆฌ๋์ด UI, ViewModel, ๋ค๋น๊ฒ์ด์ ๋ผ์ฐํธ๋ฅผ ์์ฒด ํฌํจํฉ๋๋ค.core:*๋ชจ๋์ ๋์์ธ ์์คํ , ๋คํธ์ํฌ, ์๋, ๋ถ์ ๋ฑ ๊ณตํต ์ธํ๋ผ๋ฅผ ์ ๊ณตํฉ๋๋ค.domain์ ์์ Kotlin ๋ชจ๋๋ก ๋น์ฆ๋์ค ๋ชจ๋ธ๊ณผ Repository/Scheduler ๊ณ์ฝ์ ์ ์ํฉ๋๋ค.data๋ ๋คํธ์ํฌ/๋ก์ปฌ ์์ค๋ฅผ ์กฐํฉํ๊ณ Domain ๊ณ์ฝ์ ๊ตฌํํฉ๋๋ค.
| ์ ํ | ๋ํ ๋ชจ๋ | ์ฑ ์ |
|---|---|---|
| Entry | app |
Compose Navigation, Hilt component ๊ทธ๋ํ, deeplink ์ฒ๋ฆฌ, build variant ์ค์ |
| Feature | feature:fortune, feature:mission, feature:onboarding, feature:home, feature:setting, feature:splash, feature:webview, feature:alarm-interaction |
๊ฐ๋ณ ํ๋ฉด/๊ธฐ๋ฅ ๋จ์ ๋ชจ๋ |
| Domain | domain |
๋ชจ๋ธ(Fortune, Alarm, โฆ), Repository/Scheduler ์ธํฐํ์ด์ค, ์์ ๋ก์ง |
| Data | data |
Retrofit/Room/Datastore ๋ฑ ์ธ๋ถ ์ฐ๋, ์บ์ ์ ์ฑ
, Repository ๊ตฌํ์ฒด. OS ์์กด ์๋ ์ค์ผ์ค๋ง์ core:alarm์ ์์ |
| Core | core:designsystem, core:network, core:analytics, core:alarm, core:datastore, core:remoteconfig, core:media, core:ui, core:common, core:database, core:buildconfig |
์ฌ์ฌ์ฉ UI ์ปดํฌ๋ํธ, ๋คํธ์ํฌ/DB ํด๋ผ์ด์ธํธ, ์๋ ์ค์ผ์ค๋ฌ, Analytics wrapper ๋ฑ cross-cutting concern |
app
โโโ data
โโโ core/*
โโโ feature/*
โโโ domain
โโโ core/*
data
โโโ domain
โโโ core/*
core ๋ชจ๋ ๊ฐ์๋ ํ์ํ ์ต์ํ์ ๋ฐฉํฅ(์: designsystem โ ui)๋ง ํ์ฉํ๊ณ , feature โ feature ๊ฐ ์์กด์ ๊ธ์งํฉ๋๋ค.
feature/*๋ชจ๋์:app์๋ง ๋ฑ๋ก๋๋ฉฐ, ๊ณตํต ๋ผ์ฐํ ์ ๊ฐ feature๊ฐ ์ ๊ณตํ๋Destination๋ฅผ app ๋ชจ๋์ด ์กฐ๋ฆฝํ๋ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
- ์ฆ๋ถ ๋น๋: ๋ชจ๋ ๊ฐ ๊ฒฝ๊ณ๊ฐ ๋๋ ทํด
./gradlew :feature:fortune:assembleDebug์ฒ๋ผ ๋ถ๋ถ ๋น๋๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๋ณ๊ฒฝ๋ ๋ชจ๋๊ณผ ๊ทธ ์์ ๋ชจ๋๋ง ์ฌ๋น๋๋๋ฉฐ, ๋๋จธ์ง๋ Gradle Build Cache ์ฐ์ถ๋ฌผ์ ์ฌ์ฌ์ฉํฉ๋๋ค.

์์ ๊ฐ์ดfeature:fortune๋ง ์์ ํ ๊ฒฝ์ฐ,data,domain,core๋ชจ๋์ ๋ณ๊ฒฝ๋์ง ์๊ณ , ์ฐ๊ด๋app๊ณผfeature:fortune๋ง ์ฌ๋น๋๋ฉ๋๋ค. - Configuration Cache & Version Catalog:
gradle.properties์org.gradle.configuration-cache=true๋ฅผ ๊ณ ์ ์ผ๋ก ์ ์ธํด ๋ชจ๋ ๊ฐ๋ฐ์/CI ๋น๋๊ฐ ๋์ผํ๊ฒ ์บ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.settings.gradle.kts์์includeBuild("build-logic")๋ก ๋์ด์ค๋ convention plugin์ด Hilt/Compose/ํ ์คํธ ๊ตฌ์ฑ์ ํ๊ณณ์์ ์ฒ๋ฆฌํฉ๋๋ค.
๊ณตํต ์์กด์ฑ์gradle/libs.versions.toml์ ๋ชจ์ ์ค์ ๋จ๊ณ ์ค๋ณต ์กฐํ๋ฅผ ์ค์์ต๋๋ค.
-
์์ ๋ฒ์ ๋ช ํํ: ๋ฏธ์ ํ๋ฉด ๋ด๋น์๋
feature:mission, ์๋ ์ค์ ๋ด๋น์๋feature:home์๋ง ์ ๊ทผํฉ๋๋ค. feature ๊ฐ ์์กด์ ํ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ Git ์ถฉ๋ ๊ฐ๋ฅ์ฑ๋ ๋ฎ์ต๋๋ค. -
PR ํ๋ฆ ๋จ์ํ: Domain/Data/Core์์ ๊ณ์ฝ(์ธํฐํ์ด์ค, DTO)์ ๋จผ์ ํ์ ํ๊ณ Feature ๋ชจ๋์ด ์ด๋ฅผ ์๋นํ๋ ์์๋ก PR์ ๋๋๋๋ค. ์ด ์์ ๋๋ถ์ ๋ฆฌ๋ทฐ์ด๋ ์คํ๊ณผ ํ๋ฉด ๊ตฌํ์ ๋ถ๋ฆฌํด ๊ฒํ ํ ์ ์์ต๋๋ค.

