[versions] agp = "8.11.1" android-compileSdk = "35" android-minSdk = "24" android-targetSdk = "35" androidx-activityCompose = "1.10.1" androidx-appcompat = "1.7.1" androidx-lifecycle = "2.9.1" # As per https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-navigation-routing.html navigation = "2.9.0-beta03" argparse4j = "0.9.0" compose-multiplatform = "1.8.2" kotlin = "2.2.0" ksp = "2.2.0-2.0.2" kotlinx-coroutines = "1.10.2" kotlinxSerializationJson = "1.9.0" ktor = "3.1.3" #Must wait for 3.2.1 due to https://youtrack.jetbrains.com/issue/KTOR-8583#focus=Comments-27-12184056.0-0 logback = "1.5.18" json-schema-validator = "1.5.8" uri-kmp = "0.0.20" kotlinx-date-time = "0.7.0" okhttp = "4.12.0" jsoup = "1.21.1" runner = "1.6.2" core = "1.6.1" koin = "4.1.0" turbine = "1.2.1" room = "2.7.2" androidx-sqlite = "2.5.2" coilCompose = "3.2.0" multiplatformsettings = "1.3.0" androidx-webkit = "1.8.0" # Compose material3 as per https://developer.android.com/jetpack/androidx/releases/compose-material3 # Required to use material3 window sizes compose-material3 = "1.3.2" lz4 = "1.8.0" atomicfu = "0.29.0" material = "1.12.0" [libraries] argparse4j = { module = "net.sourceforge.argparse4j:argparse4j", version.ref = "argparse4j" } coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coilCompose" } coil3-coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilCompose" } coil3-network = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coilCompose" } kotlin-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines"} androidx-lifecycle-viewmodel = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodel-compose = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodel-savedstate = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle" } androidx-lifecycle-runtime-compose = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } kotlinx-coroutines-swing = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } ktor-server-core = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" } ktor-server-netty = { module = "io.ktor:ktor-server-netty-jvm", version.ref = "ktor" } multiplatformsettings = { module = "com.russhwolf:multiplatform-settings", version.ref = "multiplatformsettings"} lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } navigation-compose = { group = "org.jetbrains.androidx.navigation", name = "navigation-compose", version.ref = "navigation" } json-schema-validator = { module = "com.networknt:json-schema-validator", version.ref = "json-schema-validator" } ktor-client-core = { module = "io.ktor:ktor-client-core-jvm", version.ref = "ktor" } ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor"} ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } ktor-client-json = { module = "io.ktor:ktor-client-json", version.ref = "ktor" } ktor-server-content-negotiation = { module = "io.ktor:ktor-server-content-negotiation", version.ref = "ktor" } ktor-server-conditional-headers = { module = "io.ktor:ktor-server-conditional-headers", version.ref = "ktor" } compose-material3-window-size-clazz = { module = "androidx.compose.material3:material3-window-size-class", version.ref = "compose-material3" } androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "androidx-webkit" } uri-kmp = { module = "com.eygraber:uri-kmp", version.ref = "uri-kmp" } kotlinx-date-time = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-date-time" } ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" } okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" } androidx-runner = { group = "androidx.test", name = "runner", version.ref = "runner" } androidx-core = { group = "androidx.test", name = "core", version.ref = "core" } turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" } koin-bom = { module = "io.insert-koin:koin-bom", version.ref = "koin" } koin-core = { module = "io.insert-koin:koin-core" } koin-android = { module = "io.insert-koin:koin-android" } koin-compose = { module = "io.insert-koin:koin-compose" } koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel" } koin-compose-viewmodel-navigation = { module = "io.insert-koin:koin-compose-viewmodel-navigation" } koin-test = { module = "io.insert-koin:koin-test" } androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } androidx-sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "androidx-sqlite" } lz4-pure-java = { module = "org.lz4:lz4-pure-java", version.ref = "lz4" } atomicfu = { module = "org.jetbrains.kotlinx:atomicfu", version.ref = "atomicfu"} material = { group = "com.google.android.material", name = "material", version.ref = "material" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } androidLibrary = { id = "com.android.library", version.ref = "agp" } composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" } composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } ktor = { id = "io.ktor.plugin", version.ref = "ktor" } kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } androidKotlinMultiplatformLibrary = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } room = { id = "androidx.room", version.ref = "room" } atomicfu = { id = "org.jetbrains.kotlinx.atomicfu", version.ref = "atomicfu" } kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }