Skip to content

Conversation

@dmp100
Copy link
Contributor

@dmp100 dmp100 commented May 13, 2025

Related issue ๐Ÿ› 

Work Description โœ๏ธ

  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ๊ตฌ์กฐ
    app, core, domain, data, feature ๋“ฑ์˜ ๋ชจ๋“ˆ ๊ตฌ์กฐํ™”
    ๊ฐ ๋ ˆ์ด์–ด๋ณ„ ์—ญํ•  ๋ถ„๋ฆฌ

  • Gradle ์ปจ๋ฒค์…˜ ํ”Œ๋Ÿฌ๊ทธ์ธ
    ๋นŒ๋“œ ๋กœ์ง ์žฌ์‚ฌ์šฉ์„ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆํ™”
    ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, JVM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Hilt, ๋„คํŠธ์›Œํฌ ๋“ฑ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌํ˜„
    ๋ฒ„์ „ ์นดํƒˆ๋กœ๊ทธ๋ฅผ ํ†ตํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ

Screenshot ๐Ÿ“ธ

๊ตฌํ˜„๋œ Gradle ์ปจ๋ฒค์…˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒ์„ธ ์ •๋ฆฌ

1. AndroidApplicationConventionPlugin

์šฉ๋„: ์•ฑ ๋ชจ๋“ˆ์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • com.android.application: ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • org.jetbrains.kotlin.android: ์ฝ”ํ‹€๋ฆฐ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • androidx.navigation.safeargs.kotlin: ๋„ค๋น„๊ฒŒ์ด์…˜ Safe Args ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฃผ์š” ์„ค์ •:

  • compileSdk, minSdk, targetSdk ์„ค์ •
  • applicationId, versionCode, versionName ์„ค์ •
  • Java ๋ฒ„์ „ ๋ฐ ์ฝ”ํ‹€๋ฆฐ JVM ํƒ€๊ฒŸ ์„ค์ •
  • ViewBinding, DataBinding, BuildConfig ํ™œ์„ฑํ™”

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ:

  • androidx.core:core-ktx
  • androidx.appcompat:appcompat
  • com.google.android.material:material
  • androidx.activity:activity
  • androidx.constraintlayout:constraintlayout
  • androidx.lifecycle:lifecycle-runtime-ktx
  • com.jakewharton.timber:timber
  • androidx.viewpager2:viewpager2
  • androidx.datastore:datastore-preferences
  • androidx.datastore:datastore-preferences-core

2. AndroidApplicationComposeConventionPlugin

์šฉ๋„: ์•ฑ ๋ชจ๋“ˆ์˜ Jetpack Compose ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • org.jetbrains.kotlin.plugin.compose: ์ฝ”ํ‹€๋ฆฐ Compose ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฃผ์š” ์„ค์ •:

  • Compose ๋นŒ๋“œ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”
  • Compose ์ปดํŒŒ์ผ๋Ÿฌ ๋ฒ„์ „ ์„ค์ •

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ:

  • androidx.compose:compose-bom
  • androidx.compose.ui:ui
  • androidx.compose.material3:material3
  • androidx.compose.ui:ui-tooling-preview
  • androidx.activity:activity-compose
  • androidx.compose.ui:ui-tooling (๋””๋ฒ„๊ทธ์šฉ)

3. AndroidLibraryConventionPlugin

์šฉ๋„: ์•ˆ๋“œ๋กœ์ด๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • com.android.library: ์•ˆ๋“œ๋กœ์ด๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋นŒ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • org.jetbrains.kotlin.android: ์ฝ”ํ‹€๋ฆฐ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฃผ์š” ์„ค์ •:

  • compileSdk, minSdk ์„ค์ •
  • testInstrumentationRunner ์„ค์ •
  • Java ๋ฒ„์ „ ๋ฐ ์ฝ”ํ‹€๋ฆฐ JVM ํƒ€๊ฒŸ ์„ค์ •
  • ViewBinding, DataBinding ํ™œ์„ฑํ™”
  • ProGuard ๊ทœ์น™ ์„ค์ •

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ:

  • androidx.core:core-ktx
  • androidx.appcompat:appcompat
  • com.google.android.material:material
  • junit:junit (ํ…Œ์ŠคํŠธ์šฉ)
  • androidx.test.ext:junit (์•ˆ๋“œ๋กœ์ด๋“œ ํ…Œ์ŠคํŠธ์šฉ)
  • androidx.test.espresso:espresso-core (UI ํ…Œ์ŠคํŠธ์šฉ)

4. AndroidLibraryComposeConventionPlugin

์šฉ๋„: ์•ˆ๋“œ๋กœ์ด๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ์˜ Jetpack Compose ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • org.jetbrains.kotlin.plugin.compose: ์ฝ”ํ‹€๋ฆฐ Compose ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฃผ์š” ์„ค์ •:

  • Compose ๋นŒ๋“œ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”
  • Compose ์ปดํŒŒ์ผ๋Ÿฌ ๋ฒ„์ „ ์„ค์ •

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ:

  • androidx.compose:compose-bom
  • androidx.compose.ui:ui
  • androidx.compose.material3:material3
  • androidx.compose.ui:ui-tooling-preview
  • androidx.compose.foundation:foundation
  • androidx.compose.ui:ui-tooling (๋””๋ฒ„๊ทธ์šฉ)

5. JvmLibraryConventionPlugin

์šฉ๋„: JVM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆ(์•ˆ๋“œ๋กœ์ด๋“œ๊ฐ€ ์•„๋‹Œ ์ˆœ์ˆ˜ ์ฝ”ํ‹€๋ฆฐ/์ž๋ฐ” ๋ชจ๋“ˆ)์˜ ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • java-library: ์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋นŒ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • org.jetbrains.kotlin.jvm: ์ฝ”ํ‹€๋ฆฐ JVM ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฃผ์š” ์„ค์ •:

  • Java ํ˜ธํ™˜์„ฑ ๋ฒ„์ „ ์„ค์ • (sourceCompatibility, targetCompatibility)
  • ์ฝ”ํ‹€๋ฆฐ JVM ํƒ€๊ฒŸ ์„ค์ •

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ: ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

6. FeatureConventionPlugin

์šฉ๋„: ๊ธฐ๋Šฅ ๋ชจ๋“ˆ์„ ์œ„ํ•œ ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. (๊ฐ ๊ธฐ๋Šฅ ํ™”๋ฉด์„ ๋‹ด๋‹นํ•˜๋Š” ๋ชจ๋“ˆ์šฉ)

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • barrion.android.library: ์•ˆ๋“œ๋กœ์ด๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปจ๋ฒค์…˜ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • barrion.android.library.compose: ์•ˆ๋“œ๋กœ์ด๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Compose ์ปจ๋ฒค์…˜ ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฃผ์š” ์„ค์ •: AndroidLibraryConventionPlugin์—์„œ ์ƒ์†๋ฐ›์€ ์„ค์ • ์‚ฌ์šฉ

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ:

  • project(":core:common")
  • project(":core:ui")
  • project(":domain")
  • project(":data") (์„ ํƒ์ )
  • androidx.navigation:navigation-fragment-ktx
  • androidx.navigation:navigation-ui-ktx
  • androidx.hilt:hilt-navigation-compose (์„ ํƒ์ )

7. HiltConventionPlugin

์šฉ๋„: Dagger Hilt๋ฅผ ํ†ตํ•œ ์˜์กด์„ฑ ์ฃผ์ž… ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • com.google.devtools.ksp: Kotlin Symbol Processing ํ”Œ๋Ÿฌ๊ทธ์ธ
  • com.google.dagger.hilt.android: Dagger Hilt ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • org.jetbrains.kotlin.kapt: ์ฝ”ํ‹€๋ฆฐ Annotation Processing ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฃผ์š” ์„ค์ •: ์—†์Œ

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ:

  • com.google.dagger:hilt-android
  • com.google.dagger:hilt-compiler (ksp)
  • com.google.dagger:hilt-android-compiler (ksp)

8. NetworkConventionPlugin

์šฉ๋„: ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๊ด€๋ จ ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ:

  • org.jetbrains.kotlin.plugin.serialization: ์ฝ”ํ‹€๋ฆฐ ์ง๋ ฌํ™” ํ”Œ๋Ÿฌ๊ทธ์ธ

์ฃผ์š” ์„ค์ •: ์—†์Œ

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ:

  • com.squareup.okhttp3:okhttp-bom
  • com.squareup.retrofit2:retrofit
  • com.squareup.retrofit2:converter-kotlinx-serialization
  • com.squareup.okhttp3:okhttp
  • com.squareup.okhttp3:logging-interceptor
  • org.jetbrains.kotlinx:kotlinx-serialization-json
  • org.jetbrains.kotlinx:kotlinx-coroutines-android

9. ImageLoadingConventionPlugin

์šฉ๋„: ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ •์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ: ์—†์Œ

์ฃผ์š” ์„ค์ •: ์—†์Œ

์ถ”๊ฐ€ํ•˜๋Š” ์˜์กด์„ฑ:

  • com.github.bumptech.glide:glide
  • com.github.bumptech.glide:compiler (ksp)
  • io.coil-kt:coil

๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ํŠธ๋ฆฌ

2025-1Capstone/
โ”œโ”€โ”€ app/                           # ์•ฑ ๋ชจ๋“ˆ (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง„์ž…์ )
โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ””โ”€โ”€ main/
โ”‚           โ”œโ”€โ”€ java/
โ”‚           โ”‚   โ””โ”€โ”€ com/
โ”‚           โ”‚       โ””โ”€โ”€ example/
โ”‚           โ”‚           โ””โ”€โ”€ barrion/
โ”‚           โ”‚               โ”œโ”€โ”€ BarrionApplication.kt
โ”‚           โ”‚               โ”œโ”€โ”€ MainActivity.kt
โ”‚           โ”‚               โ””โ”€โ”€ navigation/
โ”‚           โ”‚                   โ”œโ”€โ”€ AppDestinations.kt
โ”‚           โ”‚                   โ””โ”€โ”€ AppNavHost.kt
โ”‚           โ””โ”€โ”€ res/
โ”‚
โ”œโ”€โ”€ build-logic/                   # ๋นŒ๋“œ ๋กœ์ง ๋ชจ๋“ˆ (์ปจ๋ฒค์…˜ ํ”Œ๋Ÿฌ๊ทธ์ธ)
โ”‚   โ”œโ”€โ”€ convention/
โ”‚   โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ”‚   โ””โ”€โ”€ src/
โ”‚   โ”‚       โ””โ”€โ”€ main/
โ”‚   โ”‚           โ””โ”€โ”€ java/
โ”‚   โ”‚               โ””โ”€โ”€ com/
โ”‚   โ”‚                   โ””โ”€โ”€ example/
โ”‚   โ”‚                       โ””โ”€โ”€ convention/
โ”‚   โ”‚                           โ”œโ”€โ”€ AndroidApplicationComposeConventionPlugin.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ AndroidApplicationConventionPlugin.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ AndroidCompose.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ AndroidLibraryComposeConventionPlugin.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ AndroidLibraryConventionPlugin.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ Const.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ FeatureConventionPlugin.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ HiltConventionPlugin.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ ImageLoadingConventionPlugin.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ JvmLibraryConventionPlugin.kt
โ”‚   โ”‚                           โ”œโ”€โ”€ KotlinAndroid.kt
โ”‚   โ”‚                           โ””โ”€โ”€ NetworkConventionPlugin.kt
โ”‚   โ””โ”€โ”€ settings.gradle.kts
โ”‚
โ”œโ”€โ”€ core/                          # ์ฝ”์–ด ๋ชจ๋“ˆ (๊ณตํ†ต ๊ธฐ๋Šฅ)
โ”‚   โ”œโ”€โ”€ common/                    # ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฐ ๊ธฐ๋ณธ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ”‚   โ””โ”€โ”€ src/
โ”‚   โ”‚       โ””โ”€โ”€ main/
โ”‚   โ”‚           โ””โ”€โ”€ java/
โ”‚   โ”‚               โ””โ”€โ”€ com/
โ”‚   โ”‚                   โ””โ”€โ”€ example/
โ”‚   โ”‚                       โ””โ”€โ”€ common/
โ”‚   โ”‚                           โ”œโ”€โ”€ mvi/
โ”‚   โ”‚                           โ”‚   โ”œโ”€โ”€ UiEffect.kt
โ”‚   โ”‚                           โ”‚   โ”œโ”€โ”€ UiIntent.kt
โ”‚   โ”‚                           โ”‚   โ””โ”€โ”€ UiState.kt
โ”‚   โ”‚                           โ””โ”€โ”€ util/
โ”‚   โ”‚                               โ””โ”€โ”€ ResultExt.kt
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ ui/                        # ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ
โ”‚       โ”œโ”€โ”€ build.gradle.kts
โ”‚       โ””โ”€โ”€ src/
โ”‚           โ””โ”€โ”€ main/
โ”‚               โ”œโ”€โ”€ AndroidManifest.xml
โ”‚               โ””โ”€โ”€ java/
โ”‚                   โ””โ”€โ”€ com/
โ”‚                       โ””โ”€โ”€ example/
โ”‚                           โ””โ”€โ”€ ui/
โ”‚                               โ””โ”€โ”€ components/
โ”‚                                   โ”œโ”€โ”€ ErrorView.kt
โ”‚                                   โ””โ”€โ”€ LoadingIndicator.kt
โ”‚
โ”œโ”€โ”€ data/                          # ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด
โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ””โ”€โ”€ main/
โ”‚           โ”œโ”€โ”€ AndroidManifest.xml
โ”‚           โ””โ”€โ”€ java/
โ”‚               โ””โ”€โ”€ com/
โ”‚                   โ””โ”€โ”€ example/
โ”‚                       โ””โ”€โ”€ data/
โ”‚                           โ”œโ”€โ”€ di/
โ”‚                           โ”‚   โ””โ”€โ”€ DataModule.kt
โ”‚                           โ”œโ”€โ”€ repository/
โ”‚                           โ”‚   โ””โ”€โ”€ MenuRepositoryImpl.kt
โ”‚                           โ””โ”€โ”€ source/
โ”‚                               โ””โ”€โ”€ local/
โ”‚                                   โ”œโ”€โ”€ MenuLocalDataSource.kt
โ”‚                                   โ””โ”€โ”€ SharedPrefsMenuLocalDataSource.kt
โ”‚
โ”œโ”€โ”€ domain/                        # ๋„๋ฉ”์ธ ๋ ˆ์ด์–ด
โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ””โ”€โ”€ main/
โ”‚           โ””โ”€โ”€ java/
โ”‚               โ””โ”€โ”€ com/
โ”‚                   โ””โ”€โ”€ example/
โ”‚                       โ””โ”€โ”€ domain/
โ”‚                           โ”œโ”€โ”€ model/
โ”‚                           โ”‚   โ”œโ”€โ”€ MenuCategory.kt
โ”‚                           โ”‚   โ””โ”€โ”€ MenuItem.kt
โ”‚                           โ”œโ”€โ”€ repository/
โ”‚                           โ”‚   โ””โ”€โ”€ MenuRepository.kt
โ”‚                           โ””โ”€โ”€ usecase/
โ”‚                               โ””โ”€โ”€ menu/
โ”‚                                   โ”œโ”€โ”€ AddMenuCategoryUseCase.kt
โ”‚                                   โ”œโ”€โ”€ AddMenuItemUseCase.kt
โ”‚                                   โ”œโ”€โ”€ DeleteMenuCategoryUseCase.kt
โ”‚                                   โ”œโ”€โ”€ DeleteMenuItemUseCase.kt
โ”‚                                   โ”œโ”€โ”€ GetMenuCategoriesUseCase.kt
โ”‚                                   โ”œโ”€โ”€ GetMenuItemsByCategoryUseCase.kt
โ”‚                                   โ”œโ”€โ”€ GetMenuItemsUseCase.kt
โ”‚                                   โ”œโ”€โ”€ UpdateMenuCategoryUseCase.kt
โ”‚                                   โ””โ”€โ”€ UpdateMenuItemUseCase.kt
โ”‚
โ”œโ”€โ”€ feature/                       # ๊ธฐ๋Šฅ ๋ชจ๋“ˆ
โ”‚   โ”œโ”€โ”€ auth/                      # ์ธ์ฆ ๊ธฐ๋Šฅ
โ”‚   โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ”‚   โ””โ”€โ”€ src/
โ”‚   โ”‚       โ””โ”€โ”€ main/
โ”‚   โ”‚           โ”œโ”€โ”€ AndroidManifest.xml
โ”‚   โ”‚           โ””โ”€โ”€ java/
โ”‚   โ”‚               โ””โ”€โ”€ com/
โ”‚   โ”‚                   โ””โ”€โ”€ example/
โ”‚   โ”‚                       โ””โ”€โ”€ auth/
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ menu/                      # ๋ฉ”๋‰ด ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
โ”‚   โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ”‚   โ””โ”€โ”€ src/
โ”‚   โ”‚       โ””โ”€โ”€ main/
โ”‚   โ”‚           โ”œโ”€โ”€ AndroidManifest.xml
โ”‚   โ”‚           โ””โ”€โ”€ java/
โ”‚   โ”‚               โ””โ”€โ”€ com/
โ”‚   โ”‚                   โ””โ”€โ”€ example/
โ”‚   โ”‚                       โ””โ”€โ”€ menu/
โ”‚   โ”‚                           โ””โ”€โ”€ presentation/
โ”‚   โ”‚                               โ”œโ”€โ”€ MenuEffect.kt
โ”‚   โ”‚                               โ”œโ”€โ”€ MenuIntent.kt
โ”‚   โ”‚                               โ”œโ”€โ”€ MenuScreen.kt
โ”‚   โ”‚                               โ”œโ”€โ”€ MenuState.kt
โ”‚   โ”‚                               โ””โ”€โ”€ MenuViewModel.kt
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ onboarding/                # ์˜จ๋ณด๋”ฉ ๊ธฐ๋Šฅ
โ”‚   โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ”‚   โ””โ”€โ”€ src/
โ”‚   โ”‚       โ””โ”€โ”€ main/...
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ order/                     # ์ฃผ๋ฌธ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
โ”‚   โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ”‚   โ””โ”€โ”€ src/
โ”‚   โ”‚       โ””โ”€โ”€ main/...
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ sales/                     # ๋งค์ถœ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
โ”‚   โ”‚   โ”œโ”€โ”€ build.gradle.kts
โ”‚   โ”‚   โ””โ”€โ”€ src/
โ”‚   โ”‚       โ””โ”€โ”€ main/...
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ staff/                     # ์ง์› ๊ด€๋ฆฌ ๊ธฐ๋Šฅ
โ”‚       โ”œโ”€โ”€ build.gradle.kts
โ”‚       โ””โ”€โ”€ src/
โ”‚           โ””โ”€โ”€ main/...
โ”‚
โ”œโ”€โ”€ gradle/
โ”‚   โ”œโ”€โ”€ libs.versions.toml         # ๋ฒ„์ „ ์นดํƒˆ๋กœ๊ทธ
โ”‚   โ””โ”€โ”€ wrapper/
โ”‚       โ”œโ”€โ”€ gradle-wrapper.jar
โ”‚       โ””โ”€โ”€ gradle-wrapper.properties
โ”‚
โ”œโ”€โ”€ build.gradle.kts               # ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ gradle.properties              # Gradle ์†์„ฑ ์„ค์ •
โ”œโ”€โ”€ gradlew                        # Gradle ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ (Unix)
โ”œโ”€โ”€ gradlew.bat                    # Gradle ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ (Windows)
โ””โ”€โ”€ settings.gradle.kts            # ํ”„๋กœ์ ํŠธ ์„ค์ • ์Šคํฌ๋ฆฝํŠธ

์ด ๊ตฌ์กฐ๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ์›์น™์„ ๋”ฐ๋ฅด๋ฉฐ, ๋ ˆ์ด์–ด๋ณ„๋กœ ๋ชจ๋“ˆ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. Presentation Layer: app + feature ๋ชจ๋“ˆ๋“ค
  2. Domain Layer: domain ๋ชจ๋“ˆ
  3. Data Layer: data ๋ชจ๋“ˆ
  4. Core: ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” core ๋ชจ๋“ˆ๋“ค

๋˜ํ•œ ๋นŒ๋“œ ๋กœ์ง์ด build-logic/convention ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด, ๋ชจ๋“  ๋ชจ๋“ˆ์—์„œ ์ผ๊ด€๋œ ๋นŒ๋“œ ์„ค์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Uncompleted Tasks ๐Ÿ˜…

  • MVI ์•„ํ‚คํ…์ฒ˜ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„
  • ๊ณตํ†ต MVI ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค ๊ตฌํ˜„
  • ์‹ค์ œ ๊ธฐ๋Šฅ ๋ชจ๋“ˆ์— MVI ํŒจํ„ด ์ ์šฉ

To Reviewers ๐Ÿ“ข

dmp100 added 5 commits March 11, 2025 12:42
1. ๋ ˆ์ด์–ด ๋ถ„๋ฆฌ (ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜)
ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ์ฃผ์š” ๋ ˆ์ด์–ด๊ฐ€ ๋ชจ๋‘ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค:

Domain Layer (๋…๋ฆฝ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง)

domain ๋ชจ๋“ˆ

Data Layer (๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฐ ์ €์žฅ์†Œ)

data ๋ชจ๋“ˆ

Presentation Layer (UI ๋ฐ ๋ทฐ๋ชจ๋ธ)

presentation ๋ชจ๋“ˆ
๊ฐ ๊ธฐ๋Šฅ๋ณ„ ๋ชจ๋“ˆ๋“ค (feature/*)

2. ๋ชจ๋“ˆ ๊ตฌ์กฐ (๋ฉ€ํ‹ฐ๋ชจ๋“ˆ)
๋ชจ๋“ˆ ๊ตฌ์กฐ๋„ ์ž˜ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

์•ฑ ๋ชจ๋“ˆ

์•ฑ์˜ ์ง„์ž…์  (MainActivity, Application ํด๋ž˜์Šค ๋“ฑ)

์ฝ”์–ด ๋ชจ๋“ˆ

core/common - ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฐ ๊ธฐ๋Šฅ
core/ui - UI ๊ณตํ†ต ์š”์†Œ

๊ธฐ๋Šฅ ๋ชจ๋“ˆ

feature/auth - ์ธ์ฆ ๊ธฐ๋Šฅ
feature/menu - ๋ฉ”๋‰ด ๊ด€๋ฆฌ
feature/onboarding - ์˜จ๋ณด๋”ฉ ํ”Œ๋กœ์šฐ
feature/order - ์ฃผ๋ฌธ ๊ด€๋ฆฌ
feature/sales - ๋งค์ถœ ๊ด€๋ฆฌ
feature/staff - ์ง์› ๊ด€๋ฆฌ
๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ ์šฉ:

com.android.application - ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ
org.jetbrains.kotlin.android - ์ฝ”ํ‹€๋ฆฐ ์•ˆ๋“œ๋กœ์ด๋“œ ์ง€์›
org.jetbrains.kotlin.kapt - ์ฝ”ํ‹€๋ฆฐ ์• ๋…ธํ…Œ์ด์…˜ ํ”„๋กœ์„ธ์‹ฑ
androidx.navigation.safeargs.kotlin - ๋„ค๋น„๊ฒŒ์ด์…˜ ์•ˆ์ „ ์ธ์ž

๊ณตํ†ต ์˜์กด์„ฑ:

๊ธฐ๋ณธ ์•ˆ๋“œ๋กœ์ด๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: androidx-core-ktx, androidx-appcompat, material
๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€: androidx-datastore-preferences
๋กœ๊น…: timber
๋„ค๋น„๊ฒŒ์ด์…˜: navigation ๋ฒˆ๋“ค
๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ: kotlinx-coroutines
์ง๋ ฌํ™”: kotlinx-serialization-json
๋„คํŠธ์›Œํ‚น: retrofit, okhttp ๊ด€๋ จ ๋ฒˆ๋“ค

์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ณธ ์„ค์ •:

compileSdk, minSdk, targetSdk ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •
๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ์ธ์ŠคํŠธ๋ฃจ๋จผํ…Œ์ด์…˜ ๋Ÿฌ๋„ˆ ์„ค์ •
@dmp100 dmp100 merged commit 81195d0 into develop May 13, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CHORE] Hilt + ๋ชจ๋“ˆ ๊ตฌ์กฐ ์„ค์ •

2 participants