[versions] kotlin = "1.9.22" kotlin-coroutines = "1.8.0" ktor = "2.3.9" arrow = "1.2.3" kotest = "5.8.1" # https://developer.android.com/jetpack/androidx/releases/compose compose = "1.6.4" # https://developer.android.com/jetpack/androidx/releases/compose-kotlin compose-compiler = "1.5.10" # It's used! Use compatible with Kotlin one compose-material3 = "1.2.1" glance = "1.0.0" hilt = "2.51" room = "2.6.1" androidx-work = "2.9.0" kotlinx-collections = "0.3.7" androidx-test = "1.5.0" # Android min-sdk = "28" compile-sdk = "34" version-name = "4.5.0" version-code = "150" # Linters detekt = "1.23.6" # https://detekt.dev/docs/gettingstarted/gradle/ [libraries] android-gradle-plugin = { module = "com.android.tools.build:gradle", version = "8.3.1" } # Kotlin kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } kotlin-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlin-coroutines" } kotlin-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlin-coroutines" } kotlin-coroutines-googleplay-temp = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services", version.ref = "kotlin-coroutines" } kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinx-collections" } # KotlinX Serialization kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version = "1.6.3" } kotlinx-serialization-plugin = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } # Ktor ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } ktor-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } ktor-serialization = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-serialization = { module = "io.ktor:ktor-client-serialization", version.ref = "ktor" } ktor-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" } # Arrow arrowkt-core = { module = "io.arrow-kt:arrow-core", version.ref = "arrow" } # Testing mockk = { module = "io.mockk:mockk", version = "1.13.10" } kotest-junit5 = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" } kotest-assertions = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" } kotest-property = { module = "io.kotest:kotest-property", version.ref = "kotest" } kotest-property-arrow = { module = "io.kotest.extensions:kotest-property-arrow", version.ref = "arrow" } kotest-assertions-arrow = { module = "io.kotest.extensions:kotest-assertions-arrow", version.ref = "arrow" } kotest-datatest = { module = "io.kotest:kotest-framework-datatest", version.ref = "kotest" } kotlin-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlin-coroutines" } cashapp-molecule-plugin = { module = "app.cash.molecule:molecule-gradle-plugin", version = "1.4.1" } cashapp-turbine = { module = "app.cash.turbine:turbine", version = "1.1.0" } # Integartion (Android) testing androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test" } androidx-test-core = { module = "androidx.test:core-ktx", version.ref = "androidx-test" } androidx-test-ext = { module = "androidx.test.ext:junit-ktx", version = "1.1.5" } mockk-android = { module = "io.mockk:mockk-android", version = "1.13.10"} # Compose compose-animation = { module = "androidx.compose.animation:animation", version.ref = "compose" } compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "compose" } compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "compose-material3" } compose-material3-windowsize = { module = "androidx.compose.material3:material3-window-size-class", version.ref = "compose-material3" } compose-runtime = { module = "androidx.compose.runtime:runtime", version.ref = "compose" } compose-runtime-livedate-temp = { module = "androidx.compose.runtime:runtime-livedata", version.ref = "compose" } compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" } compose-activity = { module = "androidx.activity:activity-compose", version = "1.8.2" } compose-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version = "2.7.0" } compose-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" } compose-coil = { module = "io.coil-kt:coil-compose", version = "2.6.0" } glance = { module = "androidx.glance:glance", version.ref = "glance" } glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "glance" } glance-material3 = { module = "androidx.glance:glance-material3", version.ref = "glance" } # Room room-plugin = { module = "androidx.room:androidx.room.gradle.plugin", version.ref = "room" } room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } room-testing = { module = "androidx.room:room-testing", version.ref = "room" } datastore = { module = "androidx.datastore:datastore-preferences", version = "1.0.0" } # Hilt hilt = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } hilt-work = { module = "androidx.hilt:hilt-work", version = "1.2.0" } hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } hilt-gradle-plugin = { module = "com.google.dagger:hilt-android-gradle-plugin", version.ref = "hilt" } # Google google-services-plugin = { module = "com.google.gms:google-services", version = "4.4.1" } google-playservices-auth = { module = "com.google.android.gms:play-services-auth", version = "21.0.0" } google-play-core = { module = "com.google.android.play:core", version = "1.10.3" } google-play-core-ktx = { module = "com.google.android.play:core-ktx", version = "1.8.1" } firebase-crashlytics = { module = "com.google.firebase:firebase-crashlytics", version = "18.6.3" } firebase-crashlytics-gradle-plugin = { module = "com.google.firebase:firebase-crashlytics-gradle", version = "2.9.9" } # AndroidX androidx-security = { module = "androidx.security:security-crypto", version = "1.0.0" } androidx-biometrics = { module = "androidx.biometric:biometric", version = "1.2.0-alpha05" } androidx-activity = { module = "androidx.activity:activity-ktx", version = "1.8.2" } appcompat-activity = { module = "androidx.appcompat:appcompat", version = "1.7.0-alpha03" } androidx-work = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-work" } androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "androidx-work" } androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version = "1.3.2" } # Material material = { module = "com.google.android.material:material", version = "1.11.0" } # Logging timber = { module = "com.jakewharton.timber:timber", version = "5.0.1" } # Legacy keval = { module = "com.notkamui.libs:keval", version = "1.0.0" } opencsv-csv = { module = "com.opencsv:opencsv", version = "5.9" } opencsv-apache-commons = { module = "org.apache.commons:commons-lang3", version = "3.14.0" } # Linters detekt-gradle-plugin = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detekt" } detekt-ruleset-compiler = { module = "com.braisgabin.detekt:kotlin-compiler-wrapper", version = "0.0.4" } detekt-ruleset-ktlint = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } detekt-ruleset-compose = { module = "io.nlopez.compose.rules:detekt", version = "0.3.12" } detekt-ruleset-ivy-explicit = { module = "com.github.Ivy-Apps:detekt-explicit", version = "v0.0.7" } slack-lint-compose = { module = "com.slack.lint.compose:compose-lint-checks", version = "1.3.1" } # KSP ksp-plugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version = "1.9.22-1.0.18" } [bundles] kotlin = [ "kotlin-stdlib", "kotlin-coroutines-core", "kotlinx-collections-immutable" ] kotlin-android = [ "kotlin-coroutines-android", "kotlin-coroutines-googleplay-temp", ] arrow = [ "arrowkt-core", ] ktor = [ "kotlinx-serialization-json", "ktor-client-okhttp", "ktor-content-negotiation", "ktor-serialization", "ktor-client-core", "ktor-client-serialization", "ktor-logging" ] testing = [ "kotest-junit5", "kotest-assertions", "kotest-property", "kotest-property-arrow", "kotest-assertions-arrow", "kotest-datatest", "kotlin-coroutines-test", "mockk", "cashapp-turbine" ] integration-testing = [ "kotest-assertions", "androidx-test-core", "androidx-test-runner", "androidx-test-ext" ] compose = [ "compose-animation", "compose-foundation", "compose-material3", "compose-material3-windowsize", "compose-runtime", "compose-ui", "compose-activity", "compose-viewmodel", "compose-tooling", "compose-runtime-livedate-temp", "compose-coil", ] activity = [ "androidx-activity", "appcompat-activity" ] glance = [ "glance", "glance-appwidget", "glance-material3" ] google = [ "google-playservices-auth", "google-play-core", "google-play-core-ktx" ] firebase = [ "firebase-crashlytics" ] hilt = [ "hilt", "hilt-work" ] room = [ "room-runtime", "room-ktx" ] opencsv = [ "opencsv-csv", "opencsv-apache-commons" ] [plugins] gradleWrapperUpgrade = { id = "org.gradle.wrapper-upgrade", version = "0.11.4" } koverPlugin = { id = "org.jetbrains.kotlinx.kover", version = "0.7.6" }