- Android CLI Setup: initialized empty-activity app (AGP 9.0, Kotlin 2.3.20)
- Version catalog: Compose BOM 2026.03.01, Material 3, Hilt 2.60.1, Room 2.7.2,
Retrofit 2.11.0, OkHttp 4.12.0, WorkManager 2.10.2, Kotlinx Serialization
- Room Database (v1): ListEntity, ItemEntity, OpLogEntity
- Room DAOs: ListDao, ItemDao, OpLogDao with LWW upsert queries
- Network layer: MitbringslApi Retrofit interface + DTOs + AuthInterceptor
- Dependency Injection: DatabaseModule, NetworkModule, RepositoryModule, HiltAndroidApp
- Build verification: assembleDebug & test green ✅
90 lines
No EOL
4.7 KiB
TOML
90 lines
No EOL
4.7 KiB
TOML
[versions]
|
|
androidGradlePlugin = "9.0.1"
|
|
androidxCore = "1.18.0"
|
|
androidxLifecycle = "2.10.0"
|
|
androidxActivity = "1.13.0"
|
|
androidxComposeBom = "2026.03.01"
|
|
androidxTest = "1.7.0"
|
|
androidxTestExt = "1.3.0"
|
|
androidxTestRunner = "1.7.0"
|
|
androidxTestEspresso = "3.7.0"
|
|
coroutines = "1.10.2"
|
|
hilt = "2.60.1"
|
|
junit = "4.13.2"
|
|
kotlin = "2.3.20"
|
|
ksp = "2.3.11"
|
|
nav3Core = "1.0.1"
|
|
lifecycleViewmodelNav3 = "2.10.0"
|
|
okhttp = "4.12.0"
|
|
retrofit = "2.11.0"
|
|
room = "2.7.2"
|
|
serialization = "1.8.1"
|
|
workmanager = "2.10.2"
|
|
|
|
[libraries]
|
|
# Core
|
|
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidxCore" }
|
|
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivity" }
|
|
|
|
# Compose BOM
|
|
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" }
|
|
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" }
|
|
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" }
|
|
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
|
|
androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
|
|
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
|
|
androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
|
|
|
|
# Lifecycle & ViewModel
|
|
androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" }
|
|
androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidxLifecycle" }
|
|
androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidxLifecycle" }
|
|
|
|
# Navigation 3
|
|
androidx-navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "nav3Core" }
|
|
androidx-navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "nav3Core" }
|
|
androidx-lifecycle-viewmodel-navigation3 = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "lifecycleViewmodelNav3" }
|
|
|
|
# Hilt (DI)
|
|
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
|
|
hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" }
|
|
hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version = "1.2.0" }
|
|
|
|
# Room (local DB)
|
|
room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
|
|
room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
|
|
room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
|
|
|
|
# Retrofit + OkHttp (network)
|
|
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
|
|
retrofit-serialization = { module = "com.squareup.retrofit2:converter-kotlinx-serialization", version.ref = "retrofit" }
|
|
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
|
|
okhttp-logging = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" }
|
|
|
|
# Kotlinx Serialization
|
|
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" }
|
|
|
|
# Coroutines
|
|
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" }
|
|
|
|
# WorkManager
|
|
workmanager-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workmanager" }
|
|
hilt-work = { module = "androidx.hilt:hilt-work", version = "1.2.0" }
|
|
hilt-work-compiler = { module = "androidx.hilt:hilt-compiler", version = "1.2.0" }
|
|
|
|
# Tests
|
|
androidx-test-core = { module = "androidx.test:core", version.ref = "androidxTest" }
|
|
androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidxTestExt" }
|
|
androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidxTestEspresso" }
|
|
androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidxTestRunner" }
|
|
junit = { module = "junit:junit", version.ref = "junit" }
|
|
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" }
|
|
|
|
[plugins]
|
|
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
|
|
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
|
|
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
|
|
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
|
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
|
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
|
room = { id = "androidx.room", version.ref = "room" } |