Dépendances
Toutes les dépendances sont déclarées dans app/build.gradle.kts à l'aide du système de catalogue de versions de Gradle (libs). Les versions spécifiques sont résolues dans le fichier projet gradle/libs.versions.toml.
Dépendances de production
Noyau AndroidX
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
core.ktx fournit des extensions Kotlin pour les API Android. lifecycle.runtime.ktx permet de lancer des coroutines avec une portée liée au cycle de vie du composant. activity.compose est le pont entre ComponentActivity et Jetpack Compose.
Jetpack Compose + Matériel 3
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
implementation("androidx.compose.material3:material3:1.2.0")
implementation("androidx.compose.material:material-icons-extended")
Le Compose BOM (Bill of Materials) synchronise les versions de tous les artefacts de la boîte à outils. material-icons-extended fournit l'ensemble complet des icônes de symboles matériels utilisées dans les différents composants de l'interface.
Navigation
implementation("androidx.navigation:navigation-compose:2.7.7")
Il permet de définir le graphe de navigation de manière déclarative à l'aide de composables. La version 2.7.7 prend en charge les API de type sécurisé et la gestion des arguments typés utilisés dans MainActivity.kt.
Base de feu
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.auth)
La nomenclature Firebase synchronise les versions des SDK Firebase. Seul le module d'authentification (firebase.auth) est utilisé au niveau du SDK client, puisque Data Connect est invoqué via des appels HTTP directs au point de terminaison GraphQL.
Supabase
implementation(libs.supabase.postgrest)
implementation(libs.supabase.auth)
implementation(libs.ktor.client.android)
Le SDK Supabase officiel pour Kotlin est divisé en modules. postgrest gère les opérations CRUD sur les tables PostgreSQL. supabase.auth fournit des flux d'authentification basés sur JWT. ktor.client.android est le moteur HTTP sous-jacent requis par le SDK.
Persistance locale
implementation(libs.androidx.datastore.preferences)
Les préférences DataStore sont utilisées dans ThemeManager.kt pour conserver la préférence de thème (clair/sombre) de l'utilisateur entre les sessions. Il s'agit du successeur recommandé de SharedPreferences lors d'un fonctionnement asynchrone sur des coroutines.
Matériel (hérité)
implementation(libs.material)
Inclus pour la compatibilité avec DatePickerDialog et TimePickerDialog d'Android View, qui sont instanciés directement dans MaquinasScreen.kt et ReservasScreen.kt puisque Compose Material 3 ne fournit pas ces boîtes de dialogue de manière native dans la version utilisée.
Test des dépendances
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
Les tests instrumentés se trouvent dans app/src/androidTest/ et les tests unitaires dans app/src/test/. Le projet inclut les classes de test par défaut générées par Android Studio (ExampleInstrumentedTest et ExampleUnitTest) sans tests personnalisés supplémentaires dans cette version.
Plugins de Gradle
// app/build.gradle.kts
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.google.services)
alias(libs.plugins.kotlin.serialization)
}
Le plugin kotlin.compose active le compilateur Compose pour Kotlin 2.0+. google.services traite google-services.json. kotlin.serialization active le processeur d'annotation kotlinx.serialization, utilisé par les classes de données de modèle pour la désérialisation automatique à partir des réponses Supabase.