diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ec4e6fce..8568fa9e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,10 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.application) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.hilt.android) + alias(libs.plugins.kotlin.ksp) } android { @@ -30,17 +34,13 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = "1.8" + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - buildFeatures { - compose = true - } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.1" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } packaging { resources { @@ -51,21 +51,8 @@ android { dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.lifecycle.runtime.ktx) - implementation(libs.androidx.activity.compose) - implementation(platform(libs.androidx.compose.bom)) - implementation(libs.androidx.ui) - implementation(libs.androidx.ui.graphics) - implementation(libs.androidx.ui.tooling.preview) - implementation(libs.androidx.material3) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) - androidTestImplementation(platform(libs.androidx.compose.bom)) - androidTestImplementation(libs.androidx.ui.test.junit4) - debugImplementation(libs.androidx.ui.tooling) - debugImplementation(libs.androidx.ui.test.manifest) + ksp(libs.hilt.compiler) + implementation(libs.hilt.android) implementation(project(":feature:main")) implementation(project(":feature:login")) diff --git a/app/src/main/java/com/goalpanzi/mission_mate/MainApplication.kt b/app/src/main/java/com/goalpanzi/mission_mate/MainApplication.kt index 1ec06959..f2fbb6ca 100644 --- a/app/src/main/java/com/goalpanzi/mission_mate/MainApplication.kt +++ b/app/src/main/java/com/goalpanzi/mission_mate/MainApplication.kt @@ -1,5 +1,7 @@ package com.goalpanzi.mission_mate import android.app.Application +import dagger.hilt.android.HiltAndroidApp +@HiltAndroidApp class MainApplication : Application() \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index e3f8a074..ee715b43 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,5 +2,10 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.jetbrains.kotlin.android) apply false + alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.kotlin.plugin.serialization) apply false alias(libs.plugins.android.library) apply false + alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.hilt.android) apply false + alias(libs.plugins.kotlin.ksp) apply false } \ No newline at end of file diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts index b4315976..c6fba51a 100644 --- a/core/data/build.gradle.kts +++ b/core/data/build.gradle.kts @@ -1,6 +1,10 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.hilt.android) + alias(libs.plugins.kotlin.ksp) } android { @@ -24,20 +28,21 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } } dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - implementation(libs.material) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.bundles.test) + implementation(libs.bundles.coroutines) + + ksp(libs.hilt.compiler) + implementation(libs.hilt.android) } \ No newline at end of file diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts index 7989153e..e9bdfd03 100644 --- a/core/datastore/build.gradle.kts +++ b/core/datastore/build.gradle.kts @@ -1,6 +1,10 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.hilt.android) + alias(libs.plugins.kotlin.ksp) } android { @@ -24,20 +28,23 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } } dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - implementation(libs.material) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.dataStore) + implementation(libs.bundles.test) + implementation(libs.bundles.coroutines) + + + ksp(libs.hilt.compiler) + implementation(libs.hilt.android) } \ No newline at end of file diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index 57ca682c..11513e74 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -1,6 +1,9 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.compose.compiler) } android { @@ -24,34 +27,31 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.1" + composeCompiler { + enableStrongSkippingMode = true } } dependencies { implementation(libs.androidx.core.ktx) - implementation(libs.androidx.lifecycle.runtime.ktx) - implementation(libs.androidx.activity.compose) + implementation(libs.bundles.lifecycle) implementation(platform(libs.androidx.compose.bom)) - implementation(libs.androidx.ui) - implementation(libs.androidx.ui.graphics) - implementation(libs.androidx.ui.tooling.preview) - implementation(libs.androidx.material3) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.bundles.compose) + + testImplementation(libs.bundles.test) + androidTestImplementation(libs.bundles.android.test) androidTestImplementation(platform(libs.androidx.compose.bom)) - androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) } \ No newline at end of file diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts index 5db97ad0..d3dd2cc9 100644 --- a/core/domain/build.gradle.kts +++ b/core/domain/build.gradle.kts @@ -1,6 +1,10 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.hilt.android) + alias(libs.plugins.kotlin.ksp) } android { @@ -24,20 +28,21 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } } dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - implementation(libs.material) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.bundles.test) + implementation(libs.bundles.coroutines) + + ksp(libs.hilt.compiler) + implementation(libs.hilt.android) } \ No newline at end of file diff --git a/core/navigation/build.gradle.kts b/core/navigation/build.gradle.kts index 6e3add3c..f32dd8ce 100644 --- a/core/navigation/build.gradle.kts +++ b/core/navigation/build.gradle.kts @@ -1,6 +1,9 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.kotlin.plugin.serialization) } android { @@ -24,20 +27,16 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } } dependencies { - - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - implementation(libs.material) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.kotlin.serialization.json) } \ No newline at end of file diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index 0fcd9217..99e10005 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -1,6 +1,11 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.hilt.android) + alias(libs.plugins.kotlin.ksp) + alias(libs.plugins.kotlin.plugin.serialization) } android { @@ -24,20 +29,23 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } } dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - implementation(libs.material) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.bundles.test) + implementation(libs.bundles.network) + implementation(libs.kotlin.serialization.json) + implementation(libs.bundles.coroutines) + + ksp(libs.hilt.compiler) + implementation(libs.hilt.android) } \ No newline at end of file diff --git a/feature/board/build.gradle.kts b/feature/board/build.gradle.kts index 12d897b1..12d15d30 100644 --- a/feature/board/build.gradle.kts +++ b/feature/board/build.gradle.kts @@ -1,6 +1,11 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.kotlin.ksp) + alias(libs.plugins.hilt.android) } android { @@ -24,20 +29,39 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } + } + buildFeatures { + compose = true } - kotlinOptions { - jvmTarget = "1.8" + composeCompiler { + enableStrongSkippingMode = true } } dependencies { implementation(libs.androidx.core.ktx) - implementation(libs.androidx.appcompat) - implementation(libs.material) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.bundles.lifecycle) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.bundles.compose) + implementation(libs.bundles.coroutines) + + testImplementation(libs.bundles.test) + androidTestImplementation(libs.bundles.android.test) + androidTestImplementation(platform(libs.androidx.compose.bom)) + debugImplementation(libs.androidx.ui.tooling) + debugImplementation(libs.androidx.ui.test.manifest) + + implementation(libs.androidx.hilt.navigation.compose) + implementation(libs.hilt.android) + ksp(libs.hilt.compiler) + + implementation(project(":core:designsystem")) } \ No newline at end of file diff --git a/feature/login/build.gradle.kts b/feature/login/build.gradle.kts index 7491a5f2..e0a9e624 100644 --- a/feature/login/build.gradle.kts +++ b/feature/login/build.gradle.kts @@ -1,6 +1,11 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.kotlin.ksp) + alias(libs.plugins.hilt.android) } android { @@ -27,17 +32,19 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.1" + composeCompiler { + enableStrongSkippingMode = true } packaging { resources { @@ -48,20 +55,21 @@ android { dependencies { implementation(libs.androidx.core.ktx) - implementation(libs.androidx.lifecycle.runtime.ktx) - implementation(libs.androidx.activity.compose) + implementation(libs.bundles.lifecycle) implementation(platform(libs.androidx.compose.bom)) - implementation(libs.androidx.ui) - implementation(libs.androidx.ui.graphics) - implementation(libs.androidx.ui.tooling.preview) - implementation(libs.androidx.material3) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.bundles.compose) + implementation(libs.androidx.activity.compose) + implementation(libs.bundles.coroutines) + + testImplementation(libs.bundles.test) + androidTestImplementation(libs.bundles.android.test) androidTestImplementation(platform(libs.androidx.compose.bom)) - androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) + implementation(libs.androidx.hilt.navigation.compose) + implementation(libs.hilt.android) + ksp(libs.hilt.compiler) + implementation(project(":core:designsystem")) } \ No newline at end of file diff --git a/feature/login/src/main/java/com/goalpanzi/mission_mate/feature/login/LoginActivity.kt b/feature/login/src/main/java/com/goalpanzi/mission_mate/feature/login/LoginActivity.kt index 5a2ea413..6ee3bbcf 100644 --- a/feature/login/src/main/java/com/goalpanzi/mission_mate/feature/login/LoginActivity.kt +++ b/feature/login/src/main/java/com/goalpanzi/mission_mate/feature/login/LoginActivity.kt @@ -12,7 +12,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import com.goalpanzi.mission_mate.core.designsystem.theme.MissionmateTheme +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class LoginActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/feature/main/build.gradle.kts b/feature/main/build.gradle.kts index ac37340f..37589087 100644 --- a/feature/main/build.gradle.kts +++ b/feature/main/build.gradle.kts @@ -1,6 +1,11 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { alias(libs.plugins.android.library) alias(libs.plugins.jetbrains.kotlin.android) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.kotlin.ksp) + alias(libs.plugins.hilt.android) } android { @@ -24,36 +29,44 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "1.8" + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } } buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.1" + composeCompiler { + enableStrongSkippingMode = true + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } } } dependencies { implementation(libs.androidx.core.ktx) - implementation(libs.androidx.lifecycle.runtime.ktx) - implementation(libs.androidx.activity.compose) + implementation(libs.bundles.lifecycle) implementation(platform(libs.androidx.compose.bom)) - implementation(libs.androidx.ui) - implementation(libs.androidx.ui.graphics) - implementation(libs.androidx.ui.tooling.preview) - implementation(libs.androidx.material3) - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.bundles.compose) + implementation(libs.androidx.activity.compose) + implementation(libs.bundles.coroutines) + + testImplementation(libs.bundles.test) + androidTestImplementation(libs.bundles.android.test) androidTestImplementation(platform(libs.androidx.compose.bom)) - androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) + implementation(libs.androidx.hilt.navigation.compose) + implementation(libs.hilt.android) + ksp(libs.hilt.compiler) + implementation(project(":core:designsystem")) } \ No newline at end of file diff --git a/feature/main/src/main/java/com/goalpanzi/mission_mate/core/main/MainActivity.kt b/feature/main/src/main/java/com/goalpanzi/mission_mate/core/main/MainActivity.kt index 35c94ee8..db1bbfbb 100644 --- a/feature/main/src/main/java/com/goalpanzi/mission_mate/core/main/MainActivity.kt +++ b/feature/main/src/main/java/com/goalpanzi/mission_mate/core/main/MainActivity.kt @@ -11,7 +11,9 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c0d73772..2b2125b5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,23 +1,66 @@ [versions] +## Android gradle plugin agp = "8.4.0" -kotlin = "1.9.0" -coreKtx = "1.13.1" + +## Kotlin +kotlin = "2.0.0" +kotlinxSerializationJson = "1.7.0" + +## Coroutine +coroutine = "1.9.0-RC" + +## AndroidX +androidxCoreKtx = "1.13.1" +androidxLifecycleKtx = "2.8.3" +androidxAppcompat = "1.7.0" +androidxActivity = "1.9.0" + +## Compose +composeBom = "2024.06.00" +navigation-compose = "2.7.7" + +## Kotlin Symbol Processing (KSP) +ksp = "2.0.0-1.0.23" + +## Test junit = "4.13.2" junitVersion = "1.2.1" espressoCore = "3.6.1" -lifecycleRuntimeKtx = "2.8.3" -activityCompose = "1.9.0" -composeBom = "2023.08.00" -appcompat = "1.7.0" -material = "1.12.0" +kotest = "5.9.0" +mockk = "1.13.11" + +## Hilt +hilt = "2.51" +hilt-navigation-compose = "1.2.0" + +## Network +retrofit = "2.11.0" +okhttp3 = "4.12.0" + +## DataStore +dataStore-preferences = "1.1.1" + +## Image Loader +coil-compose = "2.5.0" [libraries] -androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } -junit = { group = "junit", name = "junit", version.ref = "junit" } -androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } -androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } -androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } -androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } +## Koitln +kotlin-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } + +## Coroutine +coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutine" } +coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutine" } +coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutine" } + +## AndroidX +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCoreKtx" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppcompat" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidxLifecycleKtx" } +androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidxLifecycleKtx" } +androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "androidxLifecycleKtx" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" } + +## Compose androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" } androidx-ui = { group = "androidx.compose.ui", name = "ui" } androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } @@ -26,11 +69,56 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } -androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } -material = { group = "com.google.android.material", name = "material", version.ref = "material" } +androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigation-compose" } + +## Test +junit = { group = "junit", name = "junit", version.ref = "junit" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +kotlin-test = { group = "org.jetbrains.kotlin", name = "kotlin-test", version.ref = "kotlin" } +kotest-runner = { group = "io.kotest", name = "kotest-runner-junit5", version.ref = "kotest" } +kotest-assertions = { group = "io.kotest", name = "kotest-assertions-core", version.ref = "kotest" } +mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" } + +## Hilt +hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } +hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" } +androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hilt-navigation-compose" } + +## Network +retrofit = { module = "com.squareup.retrofit2:retrofit" , version.ref = "retrofit" } +retrofit-kotlinx-serialization = { module = "com.squareup.retrofit2:converter-kotlinx-serialization", version.ref = "retrofit" } +okhttp3 = { module = "com.squareup.okhttp3:okhttp" , version.ref = "okhttp3" } +okhttp3-logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor" , version.ref = "okhttp3" } + +## DataStore +dataStore = { module = "androidx.datastore:datastore-preferences", version.ref = "dataStore-preferences" } + +## Image Loader +coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil-compose" } [plugins] +## Android gradle plugin android-application = { id = "com.android.application", version.ref = "agp" } -jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } android-library = { id = "com.android.library", version.ref = "agp" } +## Kotiln +jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-plugin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } + +## KSP +kotlin-ksp = { id = "com.google.devtools.ksp" , version.ref = "ksp"} + +## Hilt +hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } + +[bundles] +coroutines = ["coroutines-core", "coroutines-android"] +lifecycle = ["androidx-lifecycle-runtime-ktx","androidx-lifecycle-runtime-compose","androidx-lifecycle-viewmodel-compose"] +test = ["junit","coroutines-test","kotlin-test"] +android-test = ["androidx-junit","androidx-espresso-core","androidx-ui-test-junit4"] +kotest = ["kotest-runner","kotest-assertions"] +compose = ["androidx-ui","androidx-ui-graphics","androidx-ui-tooling-preview", "androidx-material3","androidx-navigation-compose"] +network = ["retrofit","retrofit-kotlinx-serialization","okhttp3","okhttp3-logging-interceptor"] \ No newline at end of file