diff --git a/app/backend/build.gradle.kts b/app/backend/build.gradle.kts
index e13b4fb24e04e7dec733c5b6f51446cf53729b04..233b3c437b76ffc05bcfca61a507d4d218583424 100644
--- a/app/backend/build.gradle.kts
+++ b/app/backend/build.gradle.kts
@@ -1,13 +1,13 @@
 val springVersion = "3.3.2"
 
 plugins {
-    id("org.springframework.boot") version "3.3.2"
-    id("io.spring.dependency-management") version "1.1.6"
-    id("org.jetbrains.kotlin.plugin.allopen") version "2.0.20-Beta2"
-    kotlin("jvm") version "2.0.0"
-    kotlin("plugin.spring") version "2.0.20-Beta2"
-    kotlin("plugin.jpa") version "2.0.20-Beta2"
-    kotlin("plugin.serialization") version "2.0.0"
+    alias(libs.plugins.springPlugin)
+    alias(libs.plugins.springDepMgt)
+    alias(libs.plugins.kotlinAllOpen)
+    alias(libs.plugins.kotlin)
+    alias(libs.plugins.kotlinSpring)
+    alias(libs.plugins.kotlinJpa)
+    alias(libs.plugins.serializationPlugin)
 }
 
 allOpen {
@@ -32,44 +32,28 @@ repositories {
     mavenCentral()
 }
 
-val coroutineVersion = "1.9.0-RC"
-val ktorVersion = "2.3.12"
 dependencies {
-    implementation("de.fraunhofer.iem.kpiCalculator:core:0.0.2-SNAPSHOT")
-    implementation("de.fraunhofer.iem.kpiCalculator:adapter:0.0.2-SNAPSHOT")
-    implementation("de.fraunhofer.iem.kpiCalculator:model:0.0.2-SNAPSHOT")
-    implementation("org.springframework.boot:spring-boot-starter-data-jpa:$springVersion")
-    implementation("org.springframework.boot:spring-boot-starter-validation:$springVersion")
-    implementation("org.springframework.boot:spring-boot-starter-security:$springVersion")
-    implementation("org.springframework.boot:spring-boot-starter-webflux:$springVersion")
-    implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.1")
-    implementation("org.jetbrains.kotlin:kotlin-reflect:2.0.0")
-    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion")
-    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutineVersion")
-    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$coroutineVersion")
-    implementation("org.springdoc:springdoc-openapi-starter-webflux-ui:2.5.0")
-    implementation("org.gitlab4j:gitlab4j-api:6.0.0-rc.5")
-    implementation("org.eclipse.jgit:org.eclipse.jgit:6.10.0.202406032230-r")
-    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
-    implementation("org.springframework.boot:spring-boot-starter-actuator:$springVersion")
-    implementation("io.ktor:ktor-client-core-jvm:$ktorVersion")
-    implementation("io.ktor:ktor-client-cio-jvm:$ktorVersion")
-    implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")
-    implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")
-    implementation("com.auth0:java-jwt:4.4.0")
-    developmentOnly("org.springframework.boot:spring-boot-devtools:$springVersion")
-    runtimeOnly("org.postgresql:postgresql:42.7.3")
-    testImplementation("org.springframework.boot:spring-boot-starter-test:$springVersion") {
-        exclude(module = "mockito-core")
+    implementation(libs.bundles.kpiCalculator)
+    implementation(libs.bundles.springBoot)
+    implementation(libs.bundles.ktor)
+    implementation(libs.bundles.coroutines)
+    implementation(libs.kotlinReflect)
+    implementation(libs.bundles.serialization)
+    implementation(libs.gitlab4j)
+    implementation(libs.jgit)
+    implementation(libs.authJwt)
+    runtimeOnly(libs.postgresql)
+    testImplementation(libs.ktorTest)
+    testImplementation(libs.springBootStarterTest) {
+        exclude("mockito-core")
         exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
     }
-    testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.3")
-    testImplementation("io.ktor:ktor-client-mock-jvm:$ktorVersion")
-    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.3")
-    testRuntimeOnly("com.h2database:h2:2.2.224")
-    testImplementation("com.ninja-squad:springmockk:4.0.2")
-    testImplementation("org.springframework.security:spring-security-test:6.3.0")
-    testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutineVersion")
+    testImplementation(libs.junitJupiterApi)
+    testImplementation(libs.bundles.springTest)
+    testImplementation(libs.coroutineTest)
+    developmentOnly(libs.devTools)
+    testRuntimeOnly(libs.junitJupiter)
+    testRuntimeOnly(libs.h2db)
 }
 
 tasks.named("compileKotlin", org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask::class.java) {
diff --git a/app/gradle/libs.versions.toml b/app/gradle/libs.versions.toml
new file mode 100644
index 0000000000000000000000000000000000000000..4d406c2f17c03116bac18400a28a1c92c1db2e36
--- /dev/null
+++ b/app/gradle/libs.versions.toml
@@ -0,0 +1,91 @@
+[versions]
+kotlin = "2.0.0"
+springBoot = "3.3.2"
+kotlinCoroutine = "1.9.0-RC"
+ktor = "2.3.12"
+kpiCalculator = "0.0.2-SNAPSHOT"
+kotlinJackson = "2.17.1"
+springOpenApi = "2.5.0"
+gitlab4j = "6.0.0-rc.5"
+jgit = "6.10.0.202406032230-r"
+kotlinxSerialization = "1.7.1"
+aut0Jwt = "4.4.0"
+postgresql = "42.7.3"
+junitJupiter = "5.10.3"
+h2 = "2.2.224"
+springmockk = "4.0.2"
+springSecurityTest = "6.3.0"
+
+springDepMgtPlugin = "1.1.6"
+kotlinSpringPlugin = "2.0.20-Beta2"
+
+[libraries]
+# KPI calculator
+kpi-calculator-core = { module = "de.fraunhofer.iem.kpiCalculator:core", version.ref = "kpiCalculator" }
+kpi-calculator-model = { module = "de.fraunhofer.iem.kpiCalculator:model", version.ref = "kpiCalculator" }
+kpi-calculator-adapter = { module = "de.fraunhofer.iem.kpiCalculator:adapter", version.ref = "kpiCalculator" }
+# Spring boot
+spring-boot-data-jpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa", version.ref = "springBoot" }
+spring-boot-data-validation = { module = "org.springframework.boot:spring-boot-starter-validation", version.ref = "springBoot" }
+spring-boot-data-security = { module = "org.springframework.boot:spring-boot-starter-security", version.ref = "springBoot" }
+spring-boot-data-webflux = { module = "org.springframework.boot:spring-boot-starter-webflux", version.ref = "springBoot" }
+spring-boot-data-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator", version.ref = "springBoot" }
+springdoc-openapi = { module = "org.springdoc:springdoc-openapi-starter-webflux-ui", version.ref = "springOpenApi" }
+# Spring boot test
+spring-boot-data-devtools = { module = "org.springframework.boot:spring-boot-devtools", version.ref = "springBoot" }
+spring-boot-data-test = { module = "org.springframework.boot:spring-boot-starter-test", version.ref = "springBoot" }
+# Kotlin
+kotlinReflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" }
+# Kotlinx
+coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinCoroutine" }
+coroutines-reactive = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", version.ref = "kotlinCoroutine" }
+coroutines-reactor = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", version.ref = "kotlinCoroutine" }
+# Ktor
+ktor-client-core = { module = "io.ktor:ktor-client-core-jvm", version.ref = "ktor" }
+ktor-client-cio = { module = "io.ktor:ktor-client-cio-jvm", version.ref = "ktor" }
+ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" }
+ktor-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }
+# Serialization / Deserialization
+kotlin-jackson = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "kotlinJackson" }
+kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
+# Git API Wrapper
+gitlab4j = { module = "org.gitlab4j:gitlab4j-api", version.ref = "gitlab4j" }
+# Git CLI Wrapper
+jgit = { module = "org.eclipse.jgit:org.eclipse.jgit", version.ref = "jgit" }
+# oauth
+authJwt = { module = "com.auth0:java-jwt", version.ref = "aut0Jwt" }
+postgresql = { module = "org.postgresql:postgresql", version.ref = "postgresql" }
+# TEST
+# Spring
+devTools = { module = "org.springframework.boot:spring-boot-devtools", version.ref = "springBoot" }
+spring-security-test = { module = "org.springframework.security:spring-security-test", version.ref = "springSecurityTest" }
+spring-mock = { module = "com.ninja-squad:springmockk", version.ref = "springmockk" }
+springBootStarterTest = { module = "org.springframework.boot:spring-boot-starter-test", version.ref = "springBoot" }
+# Coroutine Test
+coroutineTest = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinCoroutine" }
+# Ktor Test
+ktorTest = { module = "io.ktor:ktor-client-mock-jvm", version.ref = "ktor" }
+# Junit
+junitJupiter = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junitJupiter" }
+junitJupiterApi = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junitJupiter" }
+# db
+h2db = { module = "com.h2database:h2", version.ref = "h2" }
+
+[plugins]
+springPlugin = { id = "org.springframework.boot", version.ref = "springBoot" }
+springDepMgt = { id = "io.spring.dependency-management", version.ref = "springDepMgtPlugin" }
+kotlinAllOpen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlinSpringPlugin" }
+
+kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
+kotlinSpring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlinSpringPlugin" }
+kotlinJpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlinSpringPlugin" }
+serializationPlugin = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
+
+[bundles]
+kpiCalculator = ["kpi-calculator-adapter", "kpi-calculator-core", "kpi-calculator-model"]
+springBoot = ["spring-boot-data-actuator", "spring-boot-data-jpa", "spring-boot-data-security", "springdoc-openapi", "spring-boot-data-validation", "spring-boot-data-webflux"]
+springBootTest = ["spring-boot-data-test", "spring-boot-data-devtools"]
+coroutines = ["coroutines-core", "coroutines-reactive", "coroutines-reactor"]
+ktor = ["ktor-client-cio", "ktor-client-content-negotiation", "ktor-client-core", "ktor-serialization-json"]
+serialization = ["kotlin-jackson", "kotlinx-serialization-json"]
+springTest = ["spring-security-test", "spring-mock"]