Index: detekt-rules/build.gradle.kts
===================================================================
diff --git a/detekt-rules/build.gradle.kts b/detekt-rules/build.gradle.kts
new file mode 100644
--- /dev/null	(revision df29a77f0ff346f2726e082a8b6d5d6f602132ba)
+++ b/detekt-rules/build.gradle.kts	(revision df29a77f0ff346f2726e082a8b6d5d6f602132ba)
@@ -0,0 +1,11 @@
+plugins {
+    kotlin("jvm")
+    idea
+    `java-library`
+    java
+}
+
+dependencies {
+    compileOnly("io.gitlab.arturbosch.detekt:detekt-api:1.23.8")
+    implementation("org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.0")
+}
Index: gradle/libs.versions.toml
===================================================================
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
new file mode 100644
--- /dev/null	(revision 49ba6acd2ac17c3aa9561c3453f4fa19cf5c967d)
+++ b/gradle/libs.versions.toml	(revision 49ba6acd2ac17c3aa9561c3453f4fa19cf5c967d)
@@ -0,0 +1,10 @@
+[versions]
+kotlin = "${kotlinVersion}"
+ksp = "${kspVersion}"
+detekt = "1.23.8"
+
+[plugins]
+kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
+kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
+ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
+detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
Index: build.gradle.kts
===================================================================
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
--- /dev/null	(revision 49ba6acd2ac17c3aa9561c3453f4fa19cf5c967d)
+++ b/build.gradle.kts	(revision 49ba6acd2ac17c3aa9561c3453f4fa19cf5c967d)
@@ -0,0 +1,53 @@
+plugins {
+    kotlin("jvm")
+    java
+    idea
+    alias(libs.plugins.detekt)
+}
+
+repositories {
+    mavenCentral()
+    gradlePluginPortal()
+}
+
+subprojects {
+    repositories {
+        mavenCentral()
+    }
+
+    apply(plugin = "io.gitlab.arturbosch.detekt")
+
+    dependencies {
+        detektPlugins(project(":detekt-rules"))
+    }
+
+    detekt {
+        toolVersion = "1.23.8"
+        config.setFrom(files(rootProject.file("detekt.yml")))
+        buildUponDefaultConfig = true
+        parallel = false
+        debug = true
+        input.from("src/main/kotlin", "src/main/java")
+    }
+
+    tasks.withType<io.gitlab.arturbosch.detekt.Detekt> {
+        jvmTarget = "21"
+        reports {
+            html.required.set(true)
+        }
+    }
+
+    plugins.withId("org.jetbrains.kotlin.jvm") {
+        kotlin {
+            jvmToolchain(21)
+            compilerOptions {
+                freeCompilerArgs.addAll(
+                    listOf(
+                        "-Xmulti-dollar-interpolation",
+                    )
+                )
+            }
+        }
+
+    }
+}
Index: gradle.properties
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>ISO-8859-1
===================================================================
diff --git a/gradle.properties b/gradle.properties
--- a/gradle.properties	(revision 3412d717fb463b9a39505ed8204a4c532a7b253d)
+++ b/gradle.properties	(revision 49ba6acd2ac17c3aa9561c3453f4fa19cf5c967d)
@@ -1,4 +1,7 @@
 kotlin.code.style=official
 kotlin.daemon.jvmargs=-Xmx4g
 org.gradle.jvmargs=-Xmx4g
-ksp.allow.all.target.configuration=true
\ No newline at end of file
+ksp.allow.all.target.configuration=true
+kotlinVersion=2.0.21
+kspVersion=2.0.21-1.0.27
+detektVersion=1.23.8
\ No newline at end of file
Index: settings.gradle.kts
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/settings.gradle.kts b/settings.gradle.kts
--- a/settings.gradle.kts	(revision 6a5c23c0c9ed945217e78f94d72330934d5949b7)
+++ b/settings.gradle.kts	(revision 49ba6acd2ac17c3aa9561c3453f4fa19cf5c967d)
@@ -3,11 +3,13 @@
         mavenCentral()
         gradlePluginPortal()
     }
-
     plugins {
-        kotlin("jvm") version "latest.release"
-        kotlin("kapt") version "latest.release"
-        id("com.google.devtools.ksp") version "latest.release"
+        val kotlinVersion: String by settings
+        val kspVersion: String by settings
+
+        kotlin("jvm") version kotlinVersion
+        kotlin("kapt") version kotlinVersion
+        id("com.google.devtools.ksp") version kspVersion
     }
 }
 
@@ -16,6 +18,4 @@
 }
 
 rootProject.name = "BingoNet-Server"
-include("annotation-proccessor")
-include("shared-annotation-proccessor")
-include("main")
+include("annotation-proccessor", "shared-annotation-proccessor", "main", "detekt-rules")
Index: annotation-proccessor/build.gradle.kts
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/annotation-proccessor/build.gradle.kts b/annotation-proccessor/build.gradle.kts
--- a/annotation-proccessor/build.gradle.kts	(revision 6a5c23c0c9ed945217e78f94d72330934d5949b7)
+++ b/annotation-proccessor/build.gradle.kts	(revision 3412d717fb463b9a39505ed8204a4c532a7b253d)
@@ -1,5 +1,3 @@
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
-
 plugins {
     kotlin("jvm")
     kotlin("kapt")
@@ -30,7 +28,7 @@
     implementation(project(":shared-annotation-proccessor"))
     testImplementation(kotlin("test"))
     implementation(kotlin("stdlib"))
-    //implementation("org.apache.logging.log4j:log4j-Core.INSTANCE:2.20.0")
+    // implementation("org.apache.logging.log4j:log4j-Core.INSTANCE:2.20.0")
     implementation("com.google.code.gson:gson")
     implementation("com.mysql:mysql-connector-j")
 //    implementation("io.github.JDA-Fork:JDA:82d7ab90d6")
@@ -73,15 +71,15 @@
 //    implementation("moe.nea:neurepoparser:latest.release")
     val exposedVersion = "latest.release"
 
-    implementation("org.jetbrains.exposed:exposed-core:${exposedVersion}")
-    implementation("org.jetbrains.exposed:exposed-crypt:${exposedVersion}")
-    implementation("org.jetbrains.exposed:exposed-dao:${exposedVersion}")
-    implementation("org.jetbrains.exposed:exposed-jdbc:${exposedVersion}")
-    implementation("org.jetbrains.exposed:exposed-kotlin-datetime:${exposedVersion}")
-    implementation("org.jetbrains.exposed:exposed-json:${exposedVersion}")
-    implementation("org.jetbrains.exposed:exposed-money:${exposedVersion}")
-    implementation("org.jetbrains.exposed:exposed-spring-boot-starter:${exposedVersion}")
-    implementation("org.jetbrains.exposed:exposed-migration:${exposedVersion}")
+    implementation("org.jetbrains.exposed:exposed-core:$exposedVersion")
+    implementation("org.jetbrains.exposed:exposed-crypt:$exposedVersion")
+    implementation("org.jetbrains.exposed:exposed-dao:$exposedVersion")
+    implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion")
+    implementation("org.jetbrains.exposed:exposed-kotlin-datetime:$exposedVersion")
+    implementation("org.jetbrains.exposed:exposed-json:$exposedVersion")
+    implementation("org.jetbrains.exposed:exposed-money:$exposedVersion")
+    implementation("org.jetbrains.exposed:exposed-spring-boot-starter:$exposedVersion")
+    implementation("org.jetbrains.exposed:exposed-migration:$exposedVersion")
 }
 
 application {
@@ -95,7 +93,20 @@
 tasks.withType<JavaCompile> {
     options.compilerArgs.add("-AprojectDir=${project.projectDir}")
 }
-val compileKotlin: KotlinCompile by tasks
-compileKotlin.compilerOptions {
-    freeCompilerArgs.set(listOf("-Xmulti-dollar-interpolation"))
-}
\ No newline at end of file
+
+// 1) Gemeinsame Kotlin‑Compiler‑Optionen
+kotlin {
+    jvmToolchain(21)
+    compilerOptions {
+        freeCompilerArgs.addAll(
+            listOf(
+                "-Xmulti-dollar-interpolation",
+            )
+        )
+    }
+}
+
+// Dein vorhandener Java‑Annotation‑Processor‑Hook bleibt unverändert:
+tasks.withType<JavaCompile> {
+    options.compilerArgs.add("-AprojectDir=${project.projectDir}")
+}
