diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 9be4fc49..80f59570 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -7,12 +7,14 @@
+
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index 0583eaef..8106aba8 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -1,6 +1,8 @@
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 54089aca..7fed079a 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,9 +1,11 @@
+
diff --git a/README.md b/README.md
index 1bb27b87..514e63ed 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## CMPE352 Fundamentals of Software Engineering 2023 Spring - GROUP 5
+## CMPE451 Project Development in Software Engineering 2023 Fall-GROUP 5
[![Watch on GitHub](https://img.shields.io/github/watchers/bounswe/bounswe2023group5.svg?style=social)](https://github.com/bounswe/bounswe2023group5/watchers)
[![Star on GitHub](https://img.shields.io/github/stars/bounswe/bounswe2023group5.svg?style=social)](https://github.com/bounswe/bounswe2023group5/stargazers)
diff --git a/app/annotation/annotation/.gitignore b/app/annotation/annotation/.gitignore
new file mode 100644
index 00000000..4900fc67
--- /dev/null
+++ b/app/annotation/annotation/.gitignore
@@ -0,0 +1,40 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
+
+src/main/resources/.env
\ No newline at end of file
diff --git a/app/annotation/annotation/.idea/.gitignore b/app/annotation/annotation/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/app/annotation/annotation/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/app/annotation/annotation/.idea/encodings.xml b/app/annotation/annotation/.idea/encodings.xml
new file mode 100644
index 00000000..aa00ffab
--- /dev/null
+++ b/app/annotation/annotation/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/annotation/annotation/.idea/misc.xml b/app/annotation/annotation/.idea/misc.xml
new file mode 100644
index 00000000..82dbec8a
--- /dev/null
+++ b/app/annotation/annotation/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/annotation/annotation/.idea/vcs.xml b/app/annotation/annotation/.idea/vcs.xml
new file mode 100644
index 00000000..c2365ab1
--- /dev/null
+++ b/app/annotation/annotation/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/annotation/annotation/Dockerfile b/app/annotation/annotation/Dockerfile
new file mode 100644
index 00000000..9ad98765
--- /dev/null
+++ b/app/annotation/annotation/Dockerfile
@@ -0,0 +1,6 @@
+FROM maven:3.9.6-eclipse-temurin-21-jammy
+WORKDIR /app/annotation
+COPY . /app/annotation
+RUN mvn clean install
+EXPOSE 8080
+ENTRYPOINT ["java","-jar","/app/annotation/target/annotation-1.0-SNAPSHOT.jar"]
\ No newline at end of file
diff --git a/app/annotation/annotation/pom.xml b/app/annotation/annotation/pom.xml
new file mode 100644
index 00000000..42c2a8f3
--- /dev/null
+++ b/app/annotation/annotation/pom.xml
@@ -0,0 +1,91 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.0.0
+
+
+ com.app.annotation
+ annotation
+ 1.0-SNAPSHOT
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-mongodb
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.projectlombok
+ lombok
+ 1.18.30
+ provided
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 3.0.0
+
+
+ org.modelmapper
+ modelmapper
+ 3.1.1
+
+
+ me.paulschwarz
+ spring-dotenv
+ 4.0.0
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.2
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ 2.0.0
+ provided
+
+
+ io.swagger.core.v3
+ swagger-annotations-jakarta
+ 2.2.7
+ compile
+
+
+ org.springframework
+ spring-web
+
+
+ org.springframework.security
+ spring-security-web
+
+
+ org.springframework.security
+ spring-security-config
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/app/annotation/annotation/src/main/java/com/app/annotation/Main.java b/app/annotation/annotation/src/main/java/com/app/annotation/Main.java
new file mode 100644
index 00000000..85ebd8e8
--- /dev/null
+++ b/app/annotation/annotation/src/main/java/com/app/annotation/Main.java
@@ -0,0 +1,11 @@
+package com.app.annotation;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Main {
+ public static void main(String[] args) {
+ SpringApplication.run(Main.class, args);
+ }
+}
\ No newline at end of file
diff --git a/app/annotation/annotation/src/main/java/com/app/annotation/config/CorsConfig.java b/app/annotation/annotation/src/main/java/com/app/annotation/config/CorsConfig.java
new file mode 100644
index 00000000..fe18cb27
--- /dev/null
+++ b/app/annotation/annotation/src/main/java/com/app/annotation/config/CorsConfig.java
@@ -0,0 +1,27 @@
+package com.app.annotation.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.CorsConfigurationSource;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+
+import java.util.Arrays;
+
+@Configuration
+public class CorsConfig {
+
+ @Bean
+ public CorsConfigurationSource corsConfigurationSource() {
+ final CorsConfiguration configuration = new CorsConfiguration();
+ configuration.setAllowedOrigins(Arrays.asList("http://localhost:5173", "http://localhost", "http://ec2-51-20-78-40.eu-north-1.compute.amazonaws.com/"));
+ configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
+ configuration.setAllowCredentials(true);
+ configuration.setAllowedHeaders(Arrays.asList("Authorization", "Content-Type", "Set-Cookie", "credentials"));
+ configuration.setExposedHeaders(Arrays.asList("Set-Cookie"));
+
+ final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", configuration);
+ return source;
+ }
+}
diff --git a/app/annotation/annotation/src/main/java/com/app/annotation/config/MapperConfig.java b/app/annotation/annotation/src/main/java/com/app/annotation/config/MapperConfig.java
new file mode 100644
index 00000000..2b2c3201
--- /dev/null
+++ b/app/annotation/annotation/src/main/java/com/app/annotation/config/MapperConfig.java
@@ -0,0 +1,17 @@
+package com.app.annotation.config;
+
+import org.modelmapper.ModelMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MapperConfig {
+
+ @Bean
+ public static ModelMapper modelMapper() {
+ ModelMapper modelMapper = new ModelMapper();
+ modelMapper.getConfiguration().setFieldMatchingEnabled(true);
+ return modelMapper;
+ }
+
+}
diff --git a/app/annotation/annotation/src/main/java/com/app/annotation/config/SecurityConfig.java b/app/annotation/annotation/src/main/java/com/app/annotation/config/SecurityConfig.java
new file mode 100644
index 00000000..58415183
--- /dev/null
+++ b/app/annotation/annotation/src/main/java/com/app/annotation/config/SecurityConfig.java
@@ -0,0 +1,25 @@
+package com.app.annotation.config;
+
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.web.SecurityFilterChain;
+
+@Configuration
+@EnableWebSecurity
+public class SecurityConfig {
+
+ @Bean
+ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+ http
+ .cors()
+ .and()
+ .csrf().disable()
+ ;
+
+ return http.build();
+ }
+
+}
\ No newline at end of file
diff --git a/app/annotation/annotation/src/main/java/com/app/annotation/config/SpringdocConfig.java b/app/annotation/annotation/src/main/java/com/app/annotation/config/SpringdocConfig.java
new file mode 100644
index 00000000..a115ca76
--- /dev/null
+++ b/app/annotation/annotation/src/main/java/com/app/annotation/config/SpringdocConfig.java
@@ -0,0 +1,18 @@
+package com.app.annotation.config;
+
+import io.swagger.v3.oas.annotations.OpenAPIDefinition;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@OpenAPIDefinition
+@Configuration
+public class SpringdocConfig {
+
+ @Bean
+ public OpenAPI baseOpenAPI() {
+ return new OpenAPI().info(new Info().title("Spring Doc").version("1.0.0").description("Spring doc"));
+ }
+
+}
diff --git a/app/annotation/annotation/src/main/java/com/app/annotation/controller/AnnotationController.java b/app/annotation/annotation/src/main/java/com/app/annotation/controller/AnnotationController.java
new file mode 100644
index 00000000..803cd474
--- /dev/null
+++ b/app/annotation/annotation/src/main/java/com/app/annotation/controller/AnnotationController.java
@@ -0,0 +1,62 @@
+package com.app.annotation.controller;
+
+import com.app.annotation.service.AnnotationService;
+import com.app.annotation.dto.request.CreateAnnotationRequestDto;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/annotation")
+public class AnnotationController {
+
+ private final AnnotationService annotationService;
+
+ public AnnotationController(AnnotationService annotationService) {
+ this.annotationService = annotationService;
+ }
+
+ @PostMapping("/create")
+ public ResponseEntity