plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'org.jetbrains.kotlin.plugin.compose' id 'com.google.devtools.ksp' id 'org.jlleitschuh.gradle.ktlint' id 'io.gitlab.arturbosch.detekt' } android { namespace = 'com.collabtable.app' compileSdk = 34 defaultConfig { applicationId = "com.collabtable.app" minSdk = 26 targetSdk = 34 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_21 targetCompatibility JavaVersion.VERSION_21 } kotlinOptions { jvmTarget = '21' } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = '1.6.8' } packaging { resources { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } } dependencies { // Core Android implementation 'androidx.core:core-ktx:1.12.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2' implementation 'androidx.lifecycle:lifecycle-process:2.6.2' implementation 'androidx.activity:activity-compose:1.8.1' // Compose implementation platform('androidx.compose:compose-bom:2024.06.00') implementation 'androidx.compose.ui:ui' implementation 'androidx.compose.ui:ui-graphics' implementation 'androidx.compose.ui:ui-tooling-preview' implementation 'androidx.compose.material3:material3:1.1.2' implementation 'androidx.compose.material:material-icons-extended' implementation 'androidx.navigation:navigation-compose:2.7.5' // ViewModel implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2' // Room implementation 'androidx.room:room-runtime:2.6.1' implementation 'androidx.room:room-ktx:2.6.1' ksp 'androidx.room:room-compiler:2.6.1' // Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0' // Coroutines implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3' // WorkManager for background checks/notifications implementation 'androidx.work:work-runtime-ktx:2.9.0' // Testing testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation platform('androidx.compose:compose-bom:2023.10.01') androidTestImplementation 'androidx.compose.ui:ui-test-junit4' debugImplementation 'androidx.compose.ui:ui-tooling' debugImplementation 'androidx.compose.ui:ui-test-manifest' // Reorderable LazyColumn for drag-and-drop implementation 'org.burnoutcrew.composereorderable:reorderable:0.9.6' } // Ktlint configuration ktlint { android.set(true) ignoreFailures.set(false) outputToConsole.set(true) } // Detekt configuration (uses default rules; customize via detekt.yml if needed) detekt { buildUponDefaultConfig = true allRules = false } // Ensure Detekt uses a supported JVM target tasks.withType(io.gitlab.arturbosch.detekt.Detekt).configureEach { jvmTarget = "21" }