[versions] # Core Android agp = "9.1.1" kotlin = "2.3.20" ksp = "2.3.7" compose-bom = "2026.04.01" compose-multiplatform = "1.11.0-beta03" material3 = "1.3.1" activity-compose = "1.10.1" lifecycle = "2.10.0" lifecycle-kmp = "2.10.0" navigation3-kmp = "1.1.0-rc01" lifecycle-viewmodel-nav3-kmp = "2.10.0-alpha05" # DI koin = "4.2.1" # Network ktor = "3.4.3" kotlinx-serialization = "1.10.0" kotlinx-datetime = "0.7.1" # Local Data room = "2.8.4" sqlite = "2.6.2" datastore = "1.2.1" security-crypto = "1.1.0" # Async coroutines = "1.10.2" # Paging paging = "3.4.2" # Browser browser = "1.10.0" # Markdown markdown-renderer = "0.40.2" # Media media3 = "1.10.0" # Image Loading coil3 = "3.4.0" # Logging kermit = "2.1.0" # KMP / iOS skie = "0.10.11" # Testing junit = "4.13.2" turbine = "1.2.1" mockk = "1.14.9" truth = "1.4.4" espresso = "3.6.1" android-test-runner = "1.7.0" android-test-ext = "1.3.0" # Code Quality detekt = "1.23.8" ktlint = "12.1.2" compose-lint-checks = "1.4.2" kover = "0.9.8" # Build desugar = "2.1.5" [libraries] # Compose BOM compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" } compose-ui = { group = "androidx.compose.ui", name = "ui" } compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } compose-material3 = { group = "androidx.compose.material3", name = "material3" } compose-material3-wsc = { group = "androidx.compose.material3", name = "material3-window-size-class" } compose-material-icons = { group = "androidx.compose.material", name = "material-icons-extended" } compose-animation = { group = "androidx.compose.animation", name = "animation" } compose-foundation = { group = "androidx.compose.foundation", name = "foundation" } # Activity / Navigation activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activity-compose" } # Lifecycle lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycle" } lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycle" } lifecycle-runtime-compose-kmp = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycle-kmp" } lifecycle-viewmodel-compose-kmp = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycle-kmp" } navigation3-ui-kmp = { group = "org.jetbrains.androidx.navigation3", name = "navigation3-ui", version.ref = "navigation3-kmp" } lifecycle-viewmodel-navigation3-kmp = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel-navigation3", version.ref = "lifecycle-viewmodel-nav3-kmp" } # Koin koin-bom = { group = "io.insert-koin", name = "koin-bom", version.ref = "koin" } koin-core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin" } koin-android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" } koin-compose = { group = "io.insert-koin", name = "koin-compose", version.ref = "koin" } koin-compose-viewmodel = { group = "io.insert-koin", name = "koin-compose-viewmodel", version.ref = "koin" } koin-compose-viewmodel-navigation = { group = "io.insert-koin", name = "koin-compose-viewmodel-navigation", version.ref = "koin" } koin-test = { group = "io.insert-koin", name = "koin-test", version.ref = "koin" } # Ktor ktor-client-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" } ktor-client-okhttp = { group = "io.ktor", name = "ktor-client-okhttp", version.ref = "ktor" } ktor-client-darwin = { group = "io.ktor", name = "ktor-client-darwin", version.ref = "ktor" } ktor-client-content-negotiation = { group = "io.ktor", name = "ktor-client-content-negotiation", version.ref = "ktor" } ktor-serialization-kotlinx-json = { group = "io.ktor", name = "ktor-serialization-kotlinx-json", version.ref = "ktor" } ktor-client-logging = { group = "io.ktor", name = "ktor-client-logging", version.ref = "ktor" } ktor-client-auth = { group = "io.ktor", name = "ktor-client-auth", version.ref = "ktor" } ktor-client-mock = { group = "io.ktor", name = "ktor-client-mock", version.ref = "ktor" } # Kotlinx Serialization kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinx-serialization" } # Kotlinx Datetime kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlinx-datetime" } # Room room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" } room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" } room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" } room-testing = { group = "androidx.room", name = "room-testing", version.ref = "room" } room-paging = { group = "androidx.room", name = "room-paging", version.ref = "room" } sqlite-bundled = { group = "androidx.sqlite", name = "sqlite-bundled", version.ref = "sqlite" } # DataStore datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastore" } security-crypto = { group = "androidx.security", name = "security-crypto", version.ref = "security-crypto" } # Coroutines coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutines" } coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "coroutines" } coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" } # Paging paging-runtime = { group = "androidx.paging", name = "paging-runtime", version.ref = "paging" } paging-compose = { group = "androidx.paging", name = "paging-compose", version.ref = "paging" } paging-common = { group = "androidx.paging", name = "paging-common", version.ref = "paging" } # Browser browser = { group = "androidx.browser", name = "browser", version.ref = "browser" } # Markdown markdown-renderer-m3 = { group = "com.mikepenz", name = "multiplatform-markdown-renderer-m3", version.ref = "markdown-renderer" } markdown-renderer-coil3 = { group = "com.mikepenz", name = "multiplatform-markdown-renderer-coil3", version.ref = "markdown-renderer" } # Media media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3" } media3-ui = { group = "androidx.media3", name = "media3-ui", version.ref = "media3" } media3-datasource = { group = "androidx.media3", name = "media3-datasource", version.ref = "media3" } # Image Loading coil3-compose = { group = "io.coil-kt.coil3", name = "coil-compose", version.ref = "coil3" } coil3-network-ktor = { group = "io.coil-kt.coil3", name = "coil-network-ktor3", version.ref = "coil3" } # Logging kermit = { group = "co.touchlab", name = "kermit", version.ref = "kermit" } # Gradle Plugins (for build-logic) android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "agp" } kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } kotlin-multiplatform-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } compose-gradlePlugin = { group = "org.jetbrains.kotlin", name = "compose-compiler-gradle-plugin", version.ref = "kotlin" } compose-multiplatform-gradlePlugin = { group = "org.jetbrains.compose", name = "compose-gradle-plugin", version.ref = "compose-multiplatform" } ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "symbol-processing-gradle-plugin", version.ref = "ksp" } room-gradlePlugin = { group = "androidx.room", name = "room-gradle-plugin", version.ref = "room" } # Code Quality detekt-formatting = { group = "io.gitlab.arturbosch.detekt", name = "detekt-formatting", version.ref = "detekt" } detekt-koin = { group = "dev.androidbroadcast.rules.koin", name = "detekt-koin4-rules", version = "1.1.0" } detekt-compose = { group = "io.nlopez.compose.rules", name = "detekt", version = "0.4.28" } detekt-gradlePlugin = { group = "io.gitlab.arturbosch.detekt", name = "detekt-gradle-plugin", version.ref = "detekt" } leakcanary = { group = "com.squareup.leakcanary", name = "leakcanary-android", version = "2.14" } compose-lint-checks = { group = "com.slack.lint.compose", name = "compose-lint-checks", version.ref = "compose-lint-checks" } kover-gradlePlugin = { group = "org.jetbrains.kotlinx", name = "kover-gradle-plugin", version.ref = "kover" } # Desugar desugar-jdk = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "desugar" } # Testing junit = { group = "junit", name = "junit", version.ref = "junit" } turbine = { group = "app.cash.turbine", name = "turbine", version.ref = "turbine" } mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" } truth = { group = "com.google.truth", name = "truth", version.ref = "truth" } android-test-runner = { group = "androidx.test", name = "runner", version.ref = "android-test-runner" } android-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "android-test-ext" } compose-ui-test = { group = "androidx.compose.ui", name = "ui-test-junit4" } compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } [bundles] compose = [ "compose-ui", "compose-ui-tooling-preview", "compose-material3", "compose-material-icons", "compose-animation", "compose-foundation", ] ktor = [ "ktor-client-core", "ktor-client-okhttp", "ktor-client-content-negotiation", "ktor-serialization-kotlinx-json", "ktor-client-logging", ] lifecycle = [ "lifecycle-runtime-compose", "lifecycle-viewmodel-compose", ] room = [ "room-runtime", "room-ktx", ] testing = [ "junit", "coroutines-test", "turbine", "mockk", "truth", ] [plugins] android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } room = { id = "androidx.room", version.ref = "room" } skie = { id = "co.touchlab.skie", version.ref = "skie" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }