diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..e6549f8ec0910d70176eaf41aa4713ea1065de48
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,18 @@
+FROM maven:3.8.6-amazoncorretto-8 AS build
+WORKDIR /app
+
+COPY pom.xml .
+RUN mvn dependency:go-offline
+
+COPY src ./src
+
+RUN mvn clean package
+
+FROM openjdk:8-jre-slim
+WORKDIR /app
+
+COPY --from=build /app/target/gymtracker-1.0-SNAPSHOT-jar-with-dependencies.jar ./app.jar
+
+EXPOSE 3001
+
+CMD ["java", "-jar", "app.jar", "--server.port=3001"]
\ No newline at end of file
diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c3d8cb5d5d09f1a4b88627b1d97bc83b69b21a53
--- /dev/null
+++ b/dependency-reduced-pom.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.gymtracker</groupId>
+  <artifactId>gymtracker</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>3.2.4</version>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <transformers>
+                <transformer>
+                  <mainClass>com.gymtracker.Main</mainClass>
+                </transformer>
+              </transformers>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>8</maven.compiler.source>
+    <maven.compiler.target>8</maven.compiler.target>
+  </properties>
+</project>
diff --git a/docker-compose.yml b/docker-compose.yml
index cbdfd74d77e69fdb42e30c7d150425239b06d6f9..38cc65c9bd7017c93e93b1e9107674e618594fd2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -17,11 +17,11 @@ services:
     environment:
       - PMA_HOST=db-java
       - PMA_PORT=3307
-  servlet-java:
+  java-app:
     build:
       context: .
       dockerfile: Dockerfile
     ports:
-      - "3001:8080"
+      - "3001:3001"
     depends_on:
-      - db-java
+      - db-java
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 4099076d15b2671b215223508ac41579d0c0eae4..4355c4ca761d81aca27d885fc271887b091415c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,62 +1,72 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion><java.version>1.8</java.version>
-  <groupId>com.example</groupId>
-  <artifactId>jax-w</artifactId>
-  <version>1.0-SNAPSHOT</version>
-  <name>jax-w</name>
-  <packaging>war</packaging>
-
-    <java.version>1.8</java.version>
-
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.target>11</maven.compiler.target>
-    <maven.compiler.source>11</maven.compiler.source>
-    <junit.version>5.9.2</junit.version>
-  </properties>
-
-  <dependencies>
-<dependency>
-      <groupId>jakarta.platform</groupId>
-      <artifactId>jakarta.jakartaee-api</artifactId>
-      <version>9.1.0</version>
-      <scope>provided</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.hibernate.orm</groupId>
-      <artifactId>hibernate-core</artifactId>
-      <version>6.0.2.Final</version>
-    </dependency>
-    <dependency>
-      <groupId>org.glassfish.jaxb</groupId>
-      <artifactId>jaxb-runtime</artifactId>
-      <version>3.0.2</version>
-    </dependency>
-<dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <version>${junit.version}</version>
-      <scope>test</scope>
-    </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-engine</artifactId>
-        <version>${junit.version}</version>
-        <scope>test</scope>
-      </dependency>  </dependencies>
-
-  <build>
-    <sourceDirectory>src/main/java/com/example/jaxw</sourceDirectory>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-war-plugin</artifactId>
-        <version>3.3.2</version>
-      </plugin>    
-    </plugins>
-  </build>
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.gymtracker</groupId>
+    <artifactId>gymtracker</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+            <version>20220320</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>1.5.0-b01</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <version>8.0.31</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.github.cdimascio</groupId>
+            <artifactId>dotenv-java</artifactId>
+            <version>2.2.0</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <archive>
+                                <manifest>
+                                    <mainClass>com.gymtracker.Main</mainClass>
+                                </manifest>
+                            </archive>
+                            <descriptorRefs>
+                                <descriptorRef>jar-with-dependencies</descriptorRef>
+                            </descriptorRefs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
diff --git a/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java b/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java
deleted file mode 100644
index dac005a67d3277d2c8a131e675eea1ec8f938e5b..0000000000000000000000000000000000000000
--- a/src/main/java/com/gymtracker/controllers/GenerateAPIKeyController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package src.main.java.com.gymtracker.controllers;
-
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import java.security.SecureRandom;
-import java.util.Base64;
-
-@WebService
-public class GenerateAPIKeyController {
-    @WebMethod
-    public String generateAPIKey() {
-        SecureRandom randomizer = new SecureRandom();
-        byte bytes[] = new byte[32];
-        randomizer.nextBytes(bytes);
-        Base64.Encoder encoder = Base64.getUrlEncoder().withoutPadding();
-        String token = encoder.encodeToString(bytes);
-
-        return token;
-    }
-}
diff --git a/src/main/java/com/gymtracker/middleware/APIKeyValidator.java b/src/main/java/com/gymtracker/middleware/APIKeyValidator.java
deleted file mode 100644
index 284239c3ee016eb3126be32247948645646ef430..0000000000000000000000000000000000000000
--- a/src/main/java/com/gymtracker/middleware/APIKeyValidator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package src.main.java.com.gymtracker.middleware;
-
-import com.sun.net.httpserver.Headers;
-import com.sun.net.httpserver.HttpExchange;
-import com.sun.xml.internal.ws.api.message.HeaderList;
-
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
-
-public class APIKeyValidator {
-    private String phpKey = "zc6c6K695UgTdBdCeZFvk4FL6KaQAMlx8MgS_-0BwJs";
-    private String restKey = "XGv3FUYsAmNhzwa7sDkOzHsr_cTk7IGtbeMsU3PzhcU";
-
-    public boolean verifyAPIKey(WebServiceContext wsContext) {
-        try {
-            MessageContext msgContext = wsContext.getMessageContext();
-
-            HttpExchange exchange = (HttpExchange) msgContext.get("com.sun.xml.internal.ws.http.exchange");
-            Headers reqHeaders = exchange.getRequestHeaders();
-
-            String key = reqHeaders.getFirst("Authorization");
-            System.out.println("\napi_key: " + key);
-
-            if (key.equals(phpKey) || key.equals(restKey)) {
-                System.out.println("API key is verified");
-                return true;
-            } else {
-                System.out.println("API key is not verified.");
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            System.out.println(e);
-        }
-        return false;
-    }
-}
diff --git a/src/main/resources/META-INF/beans.xml b/src/main/resources/META-INF/beans.xml
deleted file mode 100644
index 401135820009a94d35623614a4b27821e0feab70..0000000000000000000000000000000000000000
--- a/src/main/resources/META-INF/beans.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_3_0.xsd"
-       bean-discovery-mode="annotated">
-
-</beans>
\ No newline at end of file
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index a97e61552b7fb2aec8bc40a50e03cb1e0b5a617c..0000000000000000000000000000000000000000
--- a/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<persistence xmlns="https://jakarta.ee/xml/ns/persistence"
-             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-             xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
-             version="3.0">
-  <persistence-unit name="default">
-
-  </persistence-unit>
-</persistence>
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 2491795383b0bea934d46ea75e922da190b9d0ee..0000000000000000000000000000000000000000
--- a/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
-         version="5.0">
-</web-app>
\ No newline at end of file
diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp
deleted file mode 100644
index 3d6d7b9f79955a155b515a63fdd8c3963212682b..0000000000000000000000000000000000000000
--- a/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,12 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<!DOCTYPE html>
-<html>
-<head>
-  <title>JSP - Hello World</title>
-</head>
-<body>
-<h1><%= "Hello World!" %></h1>
-<br/>
-<a href="hello-servlet">Hello Servlet</a>
-</body>
-</html>
\ No newline at end of file