diff --git a/.gitignore b/.gitignore
index e2ae9b790496e5cdd7131000009e13f864741208..fcb0ddbe87e33077152004f04e6d795f90141946 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,5 +17,8 @@ example
 
 # specifics for java
 !*.java
+!*.jar
+!*.properties
+!*.kts
 
 
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 0000000000000000000000000000000000000000..fda47c11f8b8aaa4eab9d410bf743aeb1dec2d89
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,22 @@
+
+plugins {
+    application // <1>
+}
+
+repositories {
+    mavenCentral() // <2>
+}
+
+dependencies {
+    testImplementation("org.junit.jupiter:junit-jupiter:5.8.1") // <3>
+
+    implementation("com.google.guava:guava:30.1.1-jre") // <4>
+}
+
+application {
+    mainClass.set("demo.App") // <5>
+}
+
+tasks.named<Test>("test") {
+    useJUnitPlatform() // <6>
+}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..41d9927a4d4fb3f96a785543079b8df6723c946b
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000000000000000000000000000000000..aa991fceae6e464c320a107e4b337daf48c0d7ab
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 0000000000000000000000000000000000000000..9bf900c3c0924f7f6917dfea3a03527a61fd7ca1
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,3 @@
+
+rootProject.name = "demo"
+include("app")