diff --git a/.run/Application.run.xml b/.run/Application.run.xml
new file mode 100644
index 0000000..4bf1bce
--- /dev/null
+++ b/.run/Application.run.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..73b0f4e
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,33 @@
+# Stage that builds the application, a prerequisite for the running stage
+FROM eclipse-temurin:21-jdk-jammy as build
+
+ARG SERVICE_ROOT
+
+RUN apt-get update -qq
+
+# Stop running as root at this point
+RUN useradd -m app
+WORKDIR /usr/src/app/
+RUN chown app:app /usr/src/app/
+USER app
+
+# Copy pom.xml and prefetch dependencies so a repeated build can continue from the next step with existing dependencies
+COPY --chown=app ${SERVICE_ROOT}/.mvn/ .mvn
+COPY --chown=app ${SERVICE_ROOT}/mvnw ${SERVICE_ROOT}/pom.xml ./
+
+# Copy all needed project files to a folder
+COPY --chown=app:app ${SERVICE_ROOT}/src ./src
+
+# Build the production package
+RUN ./mvnw --batch-mode clean verify -DskipTests
+
+# Running stage: the part that is used for running the application
+FROM eclipse-temurin:21-jre-jammy
+
+RUN useradd -m app
+USER app
+
+COPY --chown=app --from=build /usr/src/app/target/*.jar /usr/app/app.jar
+
+EXPOSE 8080
+CMD java -jar /usr/app/app.jar
diff --git a/pom.xml b/pom.xml
index 800bcdb..c285df7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,6 +55,15 @@
spring-modulith-starter-test
test
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
diff --git a/src/main/java/dev/mars3142/fhq/timezone_service/TimezoneServiceApplication.java b/src/main/java/dev/mars3142/fhq/timezone_service/Application.java
similarity index 68%
rename from src/main/java/dev/mars3142/fhq/timezone_service/TimezoneServiceApplication.java
rename to src/main/java/dev/mars3142/fhq/timezone_service/Application.java
index 3715066..e4a3928 100644
--- a/src/main/java/dev/mars3142/fhq/timezone_service/TimezoneServiceApplication.java
+++ b/src/main/java/dev/mars3142/fhq/timezone_service/Application.java
@@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
-public class TimezoneServiceApplication {
+public class Application {
public static void main(String[] args) {
- SpringApplication.run(TimezoneServiceApplication.class, args);
+ SpringApplication.run(Application.class, args);
}
}
diff --git a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/request/TimeZoneRequest.java b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/request/TimeZoneRequest.java
new file mode 100644
index 0000000..8042ca8
--- /dev/null
+++ b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/request/TimeZoneRequest.java
@@ -0,0 +1,5 @@
+package dev.mars3142.fhq.timezone_service.timezone.domain.model.request;
+
+public record TimeZoneRequest(String timezone) {
+
+}
diff --git a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/TimeZoneResponse.java b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/TimeZoneResponse.java
new file mode 100644
index 0000000..68177c7
--- /dev/null
+++ b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/domain/model/response/TimeZoneResponse.java
@@ -0,0 +1,5 @@
+package dev.mars3142.fhq.timezone_service.timezone.domain.model.response;
+
+public record TimeZoneResponse(String timezone) {
+
+}
diff --git a/src/main/java/dev/mars3142/fhq/timezone_service/timezone/web/controllers/TimeZoneController.java b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/web/controllers/TimeZoneController.java
new file mode 100644
index 0000000..d81d2c8
--- /dev/null
+++ b/src/main/java/dev/mars3142/fhq/timezone_service/timezone/web/controllers/TimeZoneController.java
@@ -0,0 +1,18 @@
+package dev.mars3142.fhq.timezone_service.timezone.web.controllers;
+
+import dev.mars3142.fhq.timezone_service.timezone.domain.model.request.TimeZoneRequest;
+import dev.mars3142.fhq.timezone_service.timezone.domain.model.response.TimeZoneResponse;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("v1/timezone")
+public class TimeZoneController {
+
+ @PostMapping()
+ public TimeZoneResponse getTimeZone(@RequestBody TimeZoneRequest request) {
+ return new TimeZoneResponse(request.timezone());
+ }
+}
diff --git a/src/test/java/dev/mars3142/fhq/timezone_service/TimezoneServiceApplicationTests.java b/src/test/java/dev/mars3142/fhq/timezone_service/ApplicationTests.java
similarity index 82%
rename from src/test/java/dev/mars3142/fhq/timezone_service/TimezoneServiceApplicationTests.java
rename to src/test/java/dev/mars3142/fhq/timezone_service/ApplicationTests.java
index 24a766b..1e620cb 100644
--- a/src/test/java/dev/mars3142/fhq/timezone_service/TimezoneServiceApplicationTests.java
+++ b/src/test/java/dev/mars3142/fhq/timezone_service/ApplicationTests.java
@@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
-class TimezoneServiceApplicationTests {
+class ApplicationTests {
@Test
void contextLoads() {