Index: jobvista-backend/.gitignore
===================================================================
--- jobvista-backend/.gitignore	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/.gitignore	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -32,4 +32,2 @@
 ### VS Code ###
 .vscode/
-
-.env
Index: jobvista-backend/pom.xml
===================================================================
--- jobvista-backend/pom.xml	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/pom.xml	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -63,44 +63,6 @@
 			<scope>test</scope>
 		</dependency>
+
 		<!-- other -->
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-oauth2-client</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-mail</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>org.springframework.security</groupId>
-			<artifactId>spring-security-oauth2-jose</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.google.api-client</groupId>
-			<artifactId>google-api-client</artifactId>
-			<version>2.5.1</version>
-		</dependency>
-
-		<!-- https://mvnrepository.com/artifact/com.google.oauth-client/google-oauth-client -->
-		<dependency>
-			<groupId>com.google.oauth-client</groupId>
-			<artifactId>google-oauth-client-jetty</artifactId>
-			<version>1.34.1</version>
-		</dependency>
-
-		<dependency>
-			<groupId>com.google.http-client</groupId>
-			<artifactId>google-http-client-jackson2</artifactId>
-			<version>1.32.1</version>
-		</dependency>
-
-
-
-
-
-
 		<!-- https://mvnrepository.com/artifact/jakarta.validation/jakarta.validation-api -->
 		<dependency>
@@ -109,4 +71,6 @@
 			<version>3.0.2</version>
 		</dependency>
+
+
 
 		<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api -->
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/JobvistaBackendApplication.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/JobvistaBackendApplication.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/JobvistaBackendApplication.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -26,5 +26,6 @@
 			admin.setRole(Role.ROLE_ADMIN);
 			admin.setEmail("admin@admin.com");
-			admin.setHasAccess(true);
+//			admin.setName("admin");
+//			admin.setSurname("admin");
 			admin.setPassword(new BCryptPasswordEncoder().encode("admin"));
 			userRepository.save(admin);
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/GoogleOAuth2Properties.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/GoogleOAuth2Properties.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,28 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.config;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@ConfigurationProperties(prefix = "spring.security.oauth2.client.registration.google")
-public class GoogleOAuth2Properties {
-
-    private String clientId;
-    private String clientSecret;
-
-    public String getClientId() {
-        return clientId;
-    }
-
-    public void setClientId(String clientId) {
-        this.clientId = clientId;
-    }
-
-    public String getClientSecret() {
-        return clientSecret;
-    }
-
-    public void setClientSecret(String clientSecret) {
-        this.clientSecret = clientSecret;
-    }
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/JwtAuthFilter.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/JwtAuthFilter.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/JwtAuthFilter.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -44,4 +44,8 @@
                 token.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
 
+//                SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
+//                securityContext.setAuthentication(token);
+//                SecurityContextHolder.setContext(securityContext);
+
                 SecurityContextHolder.getContext().setAuthentication(token);
             }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/SecurityConfiguration.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/SecurityConfiguration.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/SecurityConfiguration.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -25,4 +25,5 @@
 
     private final JwtAuthFilter jwtAuthFilter;
+    //private final UserService userService;
     private final UserDetailsService userDetailsService;
 
@@ -30,39 +31,14 @@
     public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
         http.csrf(AbstractHttpConfigurer::disable)
-                .authorizeHttpRequests(request -> request
-                        .requestMatchers(
-                                "/api/auth/**",
-                                "/oauth2/**",
-                                "/api/job-advertisements/**",
-                                "/api/applications/**",
-                                "/api/recruiter/**",
-                                "/api/job-seeker/**",
-                                "/uploads/**"
-                        ).permitAll()
-                        .requestMatchers("/api/admin/**").hasAnyAuthority(Role.ROLE_ADMIN.name())
-                        .requestMatchers("/api/recruiter/{id}/edit-info").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/recruiter/submit-logo").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/job-seeker/{id}/edit-info").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/job-seeker/submit-profile-pic").hasAnyAuthority(Role.ROLE_JOBSEEKER.name())
-                        .requestMatchers("/api/job-advertisements/add").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/job-advertisements/edit/{id}").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/job-advertisements/delete/{id}").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/applications/{id}/update").hasAnyAuthority(Role.ROLE_JOBSEEKER.name())
-                        .requestMatchers("/api/applications/update").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/uploads/applications/**").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/job-advertisements/{advertisement_id}/applications").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/job-advertisements/{advertisement_id}/applications/filtered").hasAnyAuthority(Role.ROLE_RECRUITER.name())
-                        .requestMatchers("/api/applications/submit").hasAnyAuthority(Role.ROLE_JOBSEEKER.name())
-                        .requestMatchers("/api/my-applications/{id}").hasAnyAuthority(Role.ROLE_JOBSEEKER.name())
-                        .requestMatchers("/api/my-applications/{id}/filtered").hasAnyAuthority(Role.ROLE_JOBSEEKER.name())
-                .anyRequest().authenticated())
+                .authorizeHttpRequests(request -> request.requestMatchers("/api/auth/**")
+                        .permitAll()
+                        .requestMatchers("/api/admin").hasAnyAuthority(Role.ROLE_ADMIN.name())
+                        .requestMatchers("/api/job-seeker").hasAnyAuthority(Role.ROLE_JOBSEEKER.name())
+                        .requestMatchers("/api/recruiter").hasAnyAuthority(Role.ROLE_RECRUITER.name())
+                        .anyRequest().authenticated())
                 .sessionManagement(manager -> manager.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
                 .authenticationProvider(authenticationProvider()).addFilterBefore(
-                        jwtAuthFilter, UsernamePasswordAuthenticationFilter.class)
-                .oauth2Login(oauth2 -> oauth2
-                        .defaultSuccessUrl("/api/auth/google", true)
-                )
-        ;
-
+                        jwtAuthFilter, UsernamePasswordAuthenticationFilter.class
+                );
         return http.build();
     }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/WebConfig.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/WebConfig.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,14 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-@Configuration
-public class WebConfig implements WebMvcConfigurer {
-    @Override
-    public void addResourceHandlers(ResourceHandlerRegistry registry) {
-        registry.addResourceHandler("/uploads/**")
-                .addResourceLocations("file:D:/Finki-Projects/Internet-tehnologii/jobvista/jobvista-backend/uploads/");
-    }
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AdminController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AdminController.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AdminController.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -2,31 +2,18 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterAdminDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.AdminService;
-import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/api/admin")
 @RequiredArgsConstructor
-@CrossOrigin(origins = "*")
 public class AdminController {
 
-    private final AdminService adminService;
 
-    @PostMapping("/change-access/{recruiter_id}")
-    public ResponseEntity<?> changeAccess(@PathVariable("recruiter_id") Long recruiterId, @RequestBody boolean access) {
-        RecruiterAdminDetailsDTO recruiterAdminDetailsDTO = adminService.changeAccess(recruiterId, access);
-        return new ResponseEntity<>(recruiterAdminDetailsDTO, HttpStatus.OK);
-    }
-
-    @GetMapping("/recruiters")
-    public ResponseEntity<?> findAllRecruiters() {
-        List<RecruiterAdminDetailsDTO> recruiterAdminDetailsDTOList = adminService.findAllRecruiters();
-        return new ResponseEntity<>(recruiterAdminDetailsDTOList, HttpStatus.OK);
+    @GetMapping
+    public ResponseEntity<String> sayHello() {
+        return ResponseEntity.ok("Hi Admin");
     }
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/ApplicationController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/ApplicationController.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,101 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.controllers;
-
-import lombok.AllArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationStatusDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.ApplicationService;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.core.io.Resource;
-import org.springframework.http.HttpHeaders;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/api")
-@AllArgsConstructor
-@CrossOrigin(origins = "*")
-public class ApplicationController {
-    private final ApplicationService applicationService;
-
-    @GetMapping("/my-applications/{id}")
-    public ResponseEntity<?> findAllApplicationsByJobSeekerId(@PathVariable Long id) {
-        List<ApplicationDetailsDTO> applicationList = applicationService.findAllByJobSeekerId(id);
-        return new ResponseEntity<>(applicationList, HttpStatus.OK);
-    }
-
-    @PostMapping("/my-applications/{id}/filtered")
-    public ResponseEntity<?> filterApplicationsByJobSeekerId(@PathVariable Long id, @RequestBody String status) {
-        List<ApplicationDetailsDTO> applicationList = applicationService.filterByJobSeekerId(id, status);
-        return new ResponseEntity<>(applicationList, HttpStatus.OK);
-    }
-
-    @GetMapping("/job-advertisements/{advertisement_id}/applications")
-    public ResponseEntity<?> findAllApplicationsByJobAdvertisementId(@PathVariable("advertisement_id") Long advertisementId) {
-        List<ApplicationDetailsDTO> applicationList = applicationService.findAllByJobAdvertisementId(advertisementId);
-        return new ResponseEntity<>(applicationList, HttpStatus.OK);
-    }
-
-    @PostMapping("/job-advertisements/{advertisement_id}/applications/filtered")
-    public ResponseEntity<?> filterApplicationsByJobAdvertisementId(@PathVariable("advertisement_id") Long advertisementId, @RequestBody String status) {
-        List<ApplicationDetailsDTO> applicationList = applicationService.filterByJobAdvertisementId(advertisementId, status);
-         return new ResponseEntity<>(applicationList, HttpStatus.OK);
-    }
-
-    @PostMapping("/applications/{id}/update/NOT-IN-USE")
-    public ResponseEntity<?> updateApplicationStatus(@PathVariable("id") Long applicaitonId, @RequestBody ApplicationStatusDTO appStatusDTO) {
-        ApplicationStatusDTO applicationStatusDTO = applicationService.updateApplicationStatus(applicaitonId,appStatusDTO.getStatus());
-        return new ResponseEntity<>(applicationStatusDTO, HttpStatus.OK);
-    }
-
-    @PostMapping("/applications/update")
-    public ResponseEntity<?> updateApplications(@RequestBody List<ApplicationStatusDTO> changes) {
-       List<ApplicationStatusDTO> updatedApplications = applicationService.updateApplications(changes);
-       return new ResponseEntity<>(updatedApplications, HttpStatus.OK);
-    }
-
-    @GetMapping("/applications/{id}/download-resume")
-    public ResponseEntity<Resource> downloadResume(@PathVariable("id") Long applicationId) {
-        Resource resource = applicationService.loadResumeAsResource(applicationId);
-        return ResponseEntity.ok()
-                .contentType(MediaType.APPLICATION_PDF)
-                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
-                .body(resource);
-    }
-
-    @PostMapping("/applications/submit")
-    public ResponseEntity<ApplicationDetailsDTO> submitApplication(
-            @RequestParam("jobSeekerId") Long jobSeekerId,
-            @RequestParam("jobAdId") Long jobAdId,
-            @RequestParam("resumeFile") MultipartFile resumeFile,
-            @RequestParam("answerOne") String answerOne,
-            @RequestParam("answerTwo") String answerTwo,
-            @RequestParam("answerThree") String answerThree,
-            @RequestParam("messageToRecruiter") String messageToRecruiter) {
-
-        ApplicationDTO applicationDTO = new ApplicationDTO(jobSeekerId, jobAdId,
-                resumeFile, answerOne, answerTwo, answerThree, messageToRecruiter);
-        ApplicationDetailsDTO applicationDetailsDTO = applicationService.submitApplication(applicationDTO);
-        return new ResponseEntity<>(applicationDetailsDTO, HttpStatus.OK);
-    }
-
-    @PostMapping("/applications/{id}/update")
-    public ResponseEntity<ApplicationDetailsDTO> updateApplication(
-            @PathVariable("id") Long applicationId,
-            @RequestParam("additionalFiles") MultipartFile[] additionalFiles) {
-        ApplicationDetailsDTO applicationDetailsDTO = applicationService.updateApplication(applicationId, additionalFiles);
-        return new ResponseEntity<>(applicationDetailsDTO, HttpStatus.OK);
-    }
-
-    @GetMapping("/applications/{id}/download-additional-files")
-    public ResponseEntity<List<String>> getAdditionalFilesUrls(@PathVariable("id") Long applicationId) {
-        List<String> fileUrls = applicationService.loadAdditionalFilesAsUrls(applicationId);
-        return ResponseEntity.ok(fileUrls);
-    }
-
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AuthController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AuthController.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/AuthController.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -7,19 +7,13 @@
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers.JobSeekerMapper;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers.RecruiterMapper;
-
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.AuthService;
-
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Map;
-
-
-
+@CrossOrigin(origins = "*")
 @RestController
 @RequestMapping("/api/auth")
 @AllArgsConstructor
-@CrossOrigin(origins = "*")
 public class AuthController {
 
@@ -48,8 +42,3 @@
         return ResponseEntity.ok(authenticationService.refreshToken(refreshTokenRequest));
     }
-
-    @PostMapping("/google")
-    public ResponseEntity<?> googleSignIn(@RequestBody Map<String, String> token) {
-        return ResponseEntity.ok(authenticationService.googleSignIn(token));
-    }
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobAdvertisementController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobAdvertisementController.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,79 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.controllers;
-
-
-import lombok.AllArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdFilterDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdvertisementDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.ApplicationService;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobAdvertisementService;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/api/job-advertisements")
-@AllArgsConstructor
-@CrossOrigin(origins = "*")
-public class JobAdvertisementController {
-
-    private final JobAdvertisementService jobAdvertisementService;
-    private final ApplicationService applicationService;
-
-    @PostMapping("/add")
-    public ResponseEntity<?> addJobAdvertisement(@RequestBody JobAdvertisementDTO jobAdvertisementDTO) {
-        JobAdDetailsDTO jobAdDetailsDTO = jobAdvertisementService.addJobAdvertisement(jobAdvertisementDTO);
-        return new ResponseEntity<>(jobAdDetailsDTO, HttpStatus.OK);
-    }
-
-    @PutMapping("/edit/{id}")
-    public ResponseEntity<?> editJobAdvertisement(@PathVariable Long id, @RequestBody JobAdvertisementDTO JobAdvertisementDTO) {
-        JobAdDetailsDTO jobAdDetailsDTO = jobAdvertisementService.editJobAdvertisement(id, JobAdvertisementDTO);
-        return new ResponseEntity<>(jobAdDetailsDTO, HttpStatus.OK);
-    }
-
-    @DeleteMapping("/delete/{id}")
-    public ResponseEntity<?> deleteJobAdvertisement(@PathVariable Long id) {
-        jobAdvertisementService.deleteJobAdvertisement(id);
-        return new ResponseEntity<>("Job Advertisement with id: "+ id + "deleted.", HttpStatus.OK);
-    }
-
-    @GetMapping("/recruiter/{id}")
-    public ResponseEntity<?> findAllJobAdvertisementsByRecruiterId(@PathVariable Long id) {
-        List<JobAdDetailsDTO> jobAdDetailsDTOS = jobAdvertisementService.findAllJobAdvertisementsByRecruiterId(id);
-        return new ResponseEntity<>(jobAdDetailsDTOS, HttpStatus.OK);
-    }
-
-    @PostMapping("/recruiter/{id}/filtered")
-    public ResponseEntity<?> filterJobAdvertisementsByRecruiterId(@PathVariable Long id, @RequestBody JobAdFilterDTO jobAdFilterDTO) {
-        List<JobAdDetailsDTO> jobAdDetailsDTOS = jobAdvertisementService.filterJobAdvertisementsByRecruiterId(id, jobAdFilterDTO);
-        return new ResponseEntity<>(jobAdDetailsDTOS, HttpStatus.OK);
-    }
-
-    @GetMapping("/all")
-    public ResponseEntity<?> findAllJobAdvertisements() {
-        List<JobAdDetailsDTO> jobAdDetailsDTOS = jobAdvertisementService.findAllJobAdvertisements();
-        return new ResponseEntity<>(jobAdDetailsDTOS, HttpStatus.OK);
-    }
-
-    @PostMapping("/filtered")
-    public ResponseEntity<?> filterJobAdvertisements(@RequestBody JobAdFilterDTO jobAdFilterDTO) {
-        List<JobAdDetailsDTO> jobAdDetailsDTOS = jobAdvertisementService.filterJobAdvertisements(jobAdFilterDTO);
-        return new ResponseEntity<>(jobAdDetailsDTOS, HttpStatus.OK);
-    }
-
-    @GetMapping("/{id}")
-    public ResponseEntity<?> findJobAdvertisementById(@PathVariable Long id) {
-        JobAdDetailsDTO jobAdDetailsDTO = jobAdvertisementService.findJobAdvertisementById(id);
-        return new ResponseEntity<>(jobAdDetailsDTO, HttpStatus.OK);
-    }
-
-
-
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobSeekerController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobSeekerController.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/JobSeekerController.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -2,50 +2,11 @@
 
 
-import lombok.AllArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerEditDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobSeekerService;
-import org.springframework.core.io.Resource;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/api/job-seeker")
-@AllArgsConstructor
-@CrossOrigin(origins = "*")
+@RequiredArgsConstructor
 public class JobSeekerController {
-    private final JobSeekerService jobSeekerService;
-
-    @GetMapping("/{id}/edit-info")
-    public ResponseEntity<?> getJobSeekerEditDetailsById(@PathVariable("id") Long id) {
-        JobSeekerEditDetailsDTO jobSeekerEditDetailsDTO = jobSeekerService.getJobSeekerEditDetailsById(id);
-        return new ResponseEntity<>(jobSeekerEditDetailsDTO, HttpStatus.OK);
-    }
-
-    @PostMapping("/{id}/edit-info")
-    public ResponseEntity<?> editRecruiterDetailsById(@PathVariable("id") Long id, @RequestBody JobSeekerEditDetailsDTO jobSeekerEditDetailsDTO) {
-        JobSeekerEditDetailsDTO jobSeekerEditDetailsDTOresp = jobSeekerService.editJobSeekerDetailsById(id, jobSeekerEditDetailsDTO);
-        return new ResponseEntity<>(jobSeekerEditDetailsDTOresp, HttpStatus.OK);
-    }
-
-    @PostMapping("/submit-profile-pic")
-    public ResponseEntity<?> submitJobSeekerProfilePic(
-            @RequestParam("jobSeekerId") Long jobSeekerId,
-            @RequestParam("profilePicFile") MultipartFile profilePicFile) {
-        jobSeekerService.submitProfilePic(jobSeekerId, profilePicFile);
-        return new ResponseEntity<>(HttpStatus.OK);
-    }
-
-    @GetMapping("/{id}/download-profile-pic")
-    public ResponseEntity<?> downloadJobSeekerProfilePic(@PathVariable("id") Long id) {
-        Resource resource = jobSeekerService.loadProfilePicAsResource(id);
-        return ResponseEntity.ok()
-                .contentType(MediaType.IMAGE_JPEG)
-                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
-                .body(resource);
-    }
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/RecruiterController.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/RecruiterController.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/controllers/RecruiterController.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,57 +1,18 @@
 package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.controllers;
 
-import lombok.AllArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.RecruiterService;
-import org.springframework.core.io.Resource;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
+import lombok.RequiredArgsConstructor;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/api/recruiter")
-@AllArgsConstructor
-@CrossOrigin(origins = "*")
+@RequiredArgsConstructor
 public class RecruiterController {
 
-    private final RecruiterService recruiterService;
-
-    @GetMapping("/{id}/info")
-    public ResponseEntity<?> getRecruiterDetailsById(@PathVariable("id") Long id) {
-        RecruiterDetailsDTO recruiterDetailsDTO = recruiterService.getRecruiterDetailsById(id);
-        return new ResponseEntity<>(recruiterDetailsDTO, HttpStatus.OK);
-    }
-
-    @GetMapping("/{id}/edit-info")
-    public ResponseEntity<?> getRecruiterEditDetailsById(@PathVariable("id") Long id) {
-        RecruiterEditDetailsDTO recruiterEditDetailsDTO = recruiterService.getRecruiterEditDetailsById(id);
-        return new ResponseEntity<>(recruiterEditDetailsDTO, HttpStatus.OK);
-    }
-
-    @PostMapping("/{id}/edit-info")
-    public ResponseEntity<?> editRecruiterDetailsById(@PathVariable("id") Long id, @RequestBody RecruiterEditDetailsDTO recruiterEditDetailsDTO) {
-        RecruiterEditDetailsDTO recruiterEditDetailsDTOresp = recruiterService.editRecruiterDetailsById(id, recruiterEditDetailsDTO);
-        return new ResponseEntity<>(recruiterEditDetailsDTOresp, HttpStatus.OK);
-    }
-
-    @PostMapping("/submit-logo")
-    public ResponseEntity<?> submitRecruiterLogo(
-            @RequestParam("recruiterId") Long recruiterId,
-            @RequestParam("logoFile") MultipartFile logoFile) {
-        recruiterService.submitLogo(recruiterId, logoFile);
-        return new ResponseEntity<>(HttpStatus.OK);
-    }
-
-    @GetMapping("/{id}/download-logo")
-    public ResponseEntity<?> downloadRecruiterLogo(@PathVariable("id") Long id) {
-        Resource resource = recruiterService.loadLogoAsResource(id);
-        return ResponseEntity.ok()
-                .contentType(MediaType.IMAGE_JPEG)
-                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
-                .body(resource);
+    @GetMapping
+    public ResponseEntity<String> sayHello() {
+        return ResponseEntity.ok("Hi Recruiter");
     }
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/Application.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,85 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications;
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.ApplicationStatus;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-
-@Entity
-@NoArgsConstructor
-@AllArgsConstructor
-@Data
-@Table(name = "applications")
-public class Application {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    @ManyToOne
-    private JobSeeker jobSeeker;
-
-    @ManyToOne
-    private JobAdvertisement jobAdvertisement;
-
-    @Column(name = "resume_file_name", nullable = true)
-    private String resumeFilePath;
-
-    @ElementCollection
-    private List<String> questionAnswers;
-
-    private String message;
-
-    private LocalDateTime submittedOn;
-
-    @Enumerated(EnumType.STRING)
-    private ApplicationStatus status;
-
-    private String response;
-
-    @ElementCollection
-    private List<String> additionalFilePaths;
-
-    public Application(JobSeeker jobSeeker, JobAdvertisement jobAdvertisement, List<String> answers, String message) {
-        this.jobSeeker = jobSeeker;
-        this.jobAdvertisement = jobAdvertisement;
-        this.resumeFilePath = "";
-        this.questionAnswers = answers;
-        this.message = message;
-        submittedOn = LocalDateTime.now();
-        this.status = ApplicationStatus.PROPOSED;
-        this.response = "";
-        this.additionalFilePaths = new ArrayList<>();
-    }
-
-    public static ApplicationDetailsDTO mapToApplicationDetailsDTO (Application application) {
-        return new ApplicationDetailsDTO(
-                application.getId(),
-                application.getJobSeeker().getId(),
-                application.getJobSeeker().getName(),
-                application.getJobSeeker().getEmail(),
-                application.getJobSeeker().getPhoneNumber(),
-                application.getJobAdvertisement().getRecruiter().getId(),
-                application.getJobAdvertisement().getRecruiter().getName(),
-                application.getJobAdvertisement().getRecruiter().getContactEmailAddress(),
-                application.getJobAdvertisement().getRecruiter().getContactPhoneNumber(),
-                application.getJobAdvertisement().getId(),
-                application.getJobAdvertisement().getTitle(),
-                application.getQuestionAnswers(),
-                application.getResumeFilePath(),
-                application.getMessage(),
-                application.getSubmittedOn(),
-                application.getStatus().name(),
-                application.getResponse(),
-                application.getAdditionalFilePaths()
-        );
-    }
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import org.springframework.web.multipart.MultipartFile;
-
-@Data
-@AllArgsConstructor
-public class ApplicationDTO {
-    private Long jobSeekerId;
-    private Long jobAdId;
-    private MultipartFile resumeFile;
-    private String answerOne;
-    private String answerTwo;
-    private String answerThree;
-    private String messageToRecruiter;
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationDetailsDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO;
-
-import jakarta.persistence.EnumType;
-import jakarta.persistence.Enumerated;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.ApplicationStatus;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-public class ApplicationDetailsDTO {
-    private Long id;
-    private Long jobSeekerId;
-    private String jobSeekerName;
-    private String jobSeekerEmail;
-    private String jobSeekerPhoneNumber;
-    private Long recruiterId;
-    private String recruiterName;
-    private String recruiterEmail;
-    private String recruiterPhoneNumber;
-    private Long jobAdId;
-    private String jobAdTitle;
-    private List<String> questionAnswers;
-    private String fileName;
-    private String message;
-    private LocalDateTime submittedOn;
-    private String status;
-    private String response;
-    private List<String> additionalFileNames;
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationStatusDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/applications/DTO/ApplicationStatusDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class ApplicationStatusDTO {
-    Long id;
-    String status;
-    String response;
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/enumerations/ApplicationStatus.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/enumerations/ApplicationStatus.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,5 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations;
-
-public enum ApplicationStatus {
-    PROPOSED, UNDER_REVIEW, ACCEPTED, DENIED
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/enumerations/EmploymentStatus.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/enumerations/EmploymentStatus.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,5 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations;
-
-public enum EmploymentStatus {
-    FULL_TIME, PART_TIME
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/enumerations/JobType.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/enumerations/JobType.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,5 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations;
-
-public enum JobType {
-    JOB, INTERNSHIP
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdDetailsDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,21 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class JobAdDetailsDTO {
-    private String recruiterName;
-    private Long recruiterId;
-    private final Long id;
-    private String title;
-    private String description;
-    private String industry;
-    private int startingSalary;
-    private String postedOn;
-    private String activeUntil;
-    private boolean isActive;
-    private String jobType;
-    private String employmentStatus;
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdFilterDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdFilterDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class JobAdFilterDTO {
-    String searchTerm;
-    String industry;
-    String sortOrder;
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdvertisementDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/DTO/JobAdvertisementDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,21 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.Date;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class JobAdvertisementDTO {
-    private Long id;
-    private String title;
-    private String description;
-    private String industry;
-    private int startingSalary;
-    private String activeUntil;
-    private String jobType;
-    private String employmentStatus;
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/JobAdvertisement.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/job_advertisements/JobAdvertisement.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,83 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements;
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.EmploymentStatus;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.JobType;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-
-@Entity
-@NoArgsConstructor
-@AllArgsConstructor
-@Data
-@Table(name = "job_advertisements")
-public class JobAdvertisement {
-
-    public JobAdvertisement(Recruiter recruiter, String title, String description, String industry, int startingSalary, LocalDate activeUntil, JobType jobType, EmploymentStatus employmentStatus) {
-        this.recruiter = recruiter;
-        this.title = title;
-        this.description = description;
-        this.industry = industry;
-        this.startingSalary = startingSalary;
-        this.postedOn = LocalDateTime.now();
-        this.activeUntil = activeUntil;
-        this.isActive = true;
-        this.jobType = jobType;
-        this.employmentStatus = employmentStatus;
-    }
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    @ManyToOne
-    private Recruiter recruiter;
-
-    private String title;
-
-    @Column(columnDefinition="TEXT")
-    private String description;
-
-    private String industry;
-    private int startingSalary;
-    private LocalDateTime postedOn;
-    private LocalDate activeUntil;
-    private boolean isActive;
-
-    @Enumerated(EnumType.STRING)
-    JobType jobType;
-
-    @Enumerated(EnumType.STRING)
-    EmploymentStatus employmentStatus;
-
-    public boolean isJobAdActive() {
-        LocalDate date = LocalDate.now();
-        return date.isBefore(activeUntil);
-    }
-
-    public static JobAdDetailsDTO mapToJobAdDetailsDTO(JobAdvertisement jobAdvertisement) {
-
-        return new JobAdDetailsDTO(
-                jobAdvertisement.getRecruiter().getName(),
-                jobAdvertisement.getRecruiter().getId(),
-                jobAdvertisement.getId(),
-                jobAdvertisement.getTitle(),
-                jobAdvertisement.getDescription(),
-                jobAdvertisement.getIndustry(),
-                jobAdvertisement.getStartingSalary(),
-                jobAdvertisement.getPostedOn().toString(),
-                jobAdvertisement.getActiveUntil().toString(),
-                jobAdvertisement.isJobAdActive(),
-                jobAdvertisement.getJobType().name(),
-                jobAdvertisement.getEmploymentStatus().name()
-        );
-    }
-
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Admin.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Admin.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Admin.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -4,19 +4,20 @@
 import jakarta.persistence.Table;
 import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
 @Entity
-@Data
-@NoArgsConstructor
+//@Data
+//@NoArgsConstructor
+//@AllArgsConstructor
+//@Builder
 @Table(name = "admins")
 public class Admin extends User {
-
-//    private String name;
-//    private String surname;
-
     @Override
     public String getName() {
         return "Admin";
     }
+//    private String name;
+//    private String surname;
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/JobSeekerEditDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/JobSeekerEditDetailsDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class JobSeekerEditDetailsDTO {
-    private String email;
-    private String firstName;
-    private String lastName;
-    private String phoneNumber;
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/JwtAuthResponse.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/JwtAuthResponse.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/JwtAuthResponse.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -10,9 +10,7 @@
 @NoArgsConstructor
 public class JwtAuthResponse {
-    private Long id;
     private String email;
     private String name;
     private String role;
-    private boolean hasAccess;
     private String token;
     private String refreshToken;
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterAdminDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterAdminDetailsDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class RecruiterAdminDetailsDTO {
-    private Long id;
-    private String email;
-    private String companyName;
-    private String companyDescription;
-    private String contactEmail;
-    private String contactPhoneNumber;
-    private String receptionist;
-    private boolean hasAccess;
-    private LocalDateTime registeredOn;
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterDetailsDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,18 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class RecruiterDetailsDTO {
-    private String companyName;
-    private String companyDescription;
-    private String contactEmail;
-    private String contactPhoneNumber;
-    private String receptionist;
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterEditDetailsDTO.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/DTO/RecruiterEditDetailsDTO.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,18 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO;
-
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class RecruiterEditDetailsDTO {
-    private String email;
-    private String companyName;
-    private String companyDescription;
-    private String contactEmail;
-    private String contactPhoneNumber;
-    private String receptionist;
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/JobSeeker.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/JobSeeker.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/JobSeeker.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -5,9 +5,8 @@
 import jakarta.persistence.Table;
 import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.Role;
-
-import java.nio.file.Paths;
 
 @Entity
@@ -15,4 +14,5 @@
 @NoArgsConstructor
 @AllArgsConstructor
+@Builder
 @Table(name = "job_seekers")
 public class JobSeeker extends User {
@@ -24,8 +24,4 @@
         this.lastName = lastName;
         this.phoneNumber = phoneNumber;
-
-        String relativeProfilePicFilePath = Paths.get("uploads", "job-seekers", "profile-pics", "default-profile-pic.png").toString();
-        this.profilePicFilePath = relativeProfilePicFilePath;
-
         this.role = Role.ROLE_JOBSEEKER;
     }
@@ -40,6 +36,4 @@
     private String phoneNumber;
 
-    private String profilePicFilePath;
-
     @Override
     public String getName() {
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Recruiter.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Recruiter.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/Recruiter.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -9,9 +9,8 @@
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.Role;
 
-import java.nio.file.Paths;
-
 @Entity
 @Data
 @NoArgsConstructor
+@AllArgsConstructor
 @Table(name = "recruiters")
 public class Recruiter extends User {
@@ -22,10 +21,5 @@
         this.companyName = companyName;
         this.companyDescription = "";
-        this.contactEmailAddress = email;
-        this.contactPhoneNumber = phoneNumber;
-        this.receptionist = "";
-
-        String relativeLogoFilePath = Paths.get("uploads", "logo", "default-company-logo.png").toString();
-        this.logoFilePath = relativeLogoFilePath;
+        this.phoneNumber = phoneNumber;
         this.role = Role.ROLE_RECRUITER;
     }
@@ -37,11 +31,6 @@
     private String companyDescription;
 
-    private String contactEmailAddress;
-
-    private String contactPhoneNumber;
-
-    private String receptionist;
-
-    private String logoFilePath;
+    @Column(name = "phone_number")
+    private String phoneNumber;
 
     @Override
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/User.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/User.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/User.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -11,14 +11,13 @@
 import org.springframework.security.core.userdetails.UserDetails;
 
-import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 
 @Entity
+@Inheritance(strategy = InheritanceType.JOINED)
+@Table(name = "users")
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-@Inheritance(strategy = InheritanceType.JOINED)
-@Table(name = "users")
 public abstract class User implements UserDetails {
 
@@ -33,9 +32,4 @@
     @Enumerated(EnumType.STRING)
     protected Role role;
-
-    @Column(name = "has_access")
-    protected boolean hasAccess;
-
-    protected LocalDateTime registeredOn;
 
 
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/JobSeekerMapper.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/JobSeekerMapper.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/JobSeekerMapper.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -2,8 +2,5 @@
 
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerEditDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
 
 public class JobSeekerMapper {
@@ -29,12 +26,4 @@
     }
 
-    public static JobSeekerEditDetailsDTO mapToJobSeekerEditDetailsDTO(JobSeeker jobSeeker) {
-        return new JobSeekerEditDetailsDTO(
-                jobSeeker.getEmail(),
-                jobSeeker.getFirstName(),
-                jobSeeker.getLastName(),
-                jobSeeker.getPhoneNumber()
-        );
-    }
 
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/RecruiterMapper.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/RecruiterMapper.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/models/users/mappers/RecruiterMapper.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,8 +1,5 @@
 package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers;
 
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterAdminDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
 
@@ -14,39 +11,5 @@
                 recruiter.getPassword(),
                 recruiter.getCompanyName(),
-                recruiter.getContactPhoneNumber()
-        );
-    }
-
-    public static RecruiterDetailsDTO mapToRecruiterDetailsDTO(Recruiter recruiter) {
-        return new RecruiterDetailsDTO(
-                recruiter.getCompanyName(),
-                recruiter.getCompanyDescription(),
-                recruiter.getContactEmailAddress(),
-                recruiter.getContactPhoneNumber(),
-                recruiter.getReceptionist()
-        );
-    }
-    public static RecruiterEditDetailsDTO mapToRecruiterEditDetailsDTO(Recruiter recruiter) {
-        return new RecruiterEditDetailsDTO(
-                recruiter.getEmail(),
-                recruiter.getCompanyName(),
-                recruiter.getCompanyDescription(),
-                recruiter.getContactEmailAddress(),
-                recruiter.getContactPhoneNumber(),
-                recruiter.getReceptionist()
-        );
-    }
-
-    public static RecruiterAdminDetailsDTO mapToRecruiterAdminDetailsDTO(Recruiter recruiter) {
-        return new RecruiterAdminDetailsDTO(
-                recruiter.getId(),
-                recruiter.getEmail(),
-                recruiter.getCompanyName(),
-                recruiter.getCompanyDescription(),
-                recruiter.getContactEmailAddress(),
-                recruiter.getContactPhoneNumber(),
-                recruiter.getReceptionist(),
-                recruiter.isHasAccess(),
-                recruiter.getRegisteredOn()
+                recruiter.getPhoneNumber()
         );
     }
@@ -60,5 +23,4 @@
         );
     }
-
 //    Using MapStruct:
 //    RecruiterMapper INSTANCE = Mappers.getMapper(RecruiterMapper.class);
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/ApplicationRepository.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/ApplicationRepository.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories;
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-import java.util.List;
-
-public interface ApplicationRepository extends JpaRepository<Application, Long> {
-    List<Application> findAllByJobAdvertisementId(Long jobId);
-    List<Application> findAllByJobSeekerId(Long jobId);
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/JobAdvertisementRepository.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/JobAdvertisementRepository.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories;
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface JobAdvertisementRepository extends JpaRepository<JobAdvertisement, Long> {
-    List<JobAdvertisement> findAllByRecruiterId(Long id);
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/JobSeekerRepository.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/JobSeekerRepository.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/JobSeekerRepository.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -4,7 +4,4 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 
-import java.util.Optional;
-
 public interface JobSeekerRepository extends JpaRepository<JobSeeker, Long> {
-    Optional<JobSeeker> findByEmail(String email);
 }
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/RecruiterRepository.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/RecruiterRepository.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/repositories/RecruiterRepository.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -2,10 +2,6 @@
 
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers.RecruiterMapper;
 import org.springframework.data.jpa.repository.JpaRepository;
 
-import java.util.Optional;
-
 public interface RecruiterRepository extends JpaRepository<Recruiter, Long> {
-    Optional<Recruiter> findRecruiterByEmail(String email);
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AdminServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AdminServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,39 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
-
-import lombok.AllArgsConstructor;
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterAdminDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers.RecruiterMapper;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.RecruiterRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.AdminService;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.RecruiterService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@AllArgsConstructor
-public class AdminServiceImpl implements AdminService {
-    private final RecruiterService recruiterService;
-    private final RecruiterRepository recruiterRepository;
-
-    @Override
-    public RecruiterAdminDetailsDTO changeAccess(long recruiterId, boolean access) {
-        Recruiter recruiter = recruiterRepository.findById(recruiterId).orElse(null);
-        if (recruiter != null) {
-            recruiter.setHasAccess(access);
-            recruiterRepository.save(recruiter);
-            return RecruiterMapper.mapToRecruiterAdminDetailsDTO(recruiter);
-        }
-        return null;
-
-    }
-
-    @Override
-    public List<RecruiterAdminDetailsDTO> findAllRecruiters() {
-        List<Recruiter> recruiterList = recruiterRepository.findAll();
-        return recruiterList.stream().map(RecruiterMapper::mapToRecruiterAdminDetailsDTO).toList();
-    }
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/ApplicationServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/ApplicationServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,290 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationStatusDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.ApplicationStatus;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobSeekerRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.EmailSenderService;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.UrlResource;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.ApplicationRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobAdvertisementRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.UserRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.ApplicationService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-//@RequiredArgsConstructor
-public class ApplicationServiceImpl implements ApplicationService {
-    private final Path fileStorageLocation;
-
-    private final UserRepository userRepository;
-    private final ApplicationRepository applicationRepository;
-    private final JobAdvertisementRepository jobAdvertisementRepository;
-    private final JobSeekerRepository jobSeekerRepository;
-
-    @Autowired
-    private EmailSenderService emailSenderService;
-
-    @Autowired
-    public ApplicationServiceImpl(@Value("${file.upload-dir}") String uploadDir, UserRepository userRepository, ApplicationRepository applicationRepository, JobAdvertisementRepository jobAdvertisementRepository,
-                                  JobSeekerRepository jobSeekerRepository) {
-        this.fileStorageLocation = Paths.get(uploadDir + "/applications").toAbsolutePath().normalize();
-
-        try {
-            Files.createDirectories(this.fileStorageLocation);
-        } catch (IOException ex) {
-            throw new RuntimeException("Could not create the directory where the uploaded files will be stored.", ex);
-        }
-
-        this.userRepository = userRepository;
-        this.applicationRepository = applicationRepository;
-        this.jobAdvertisementRepository = jobAdvertisementRepository;
-        this.jobSeekerRepository = jobSeekerRepository;
-    }
-
-    @Override
-    public ApplicationDetailsDTO submitApplication(ApplicationDTO applicationDTO) {
-
-        JobSeeker jobSeeker = jobSeekerRepository.findById(applicationDTO.getJobSeekerId())
-                .orElseThrow(() -> new IllegalArgumentException("User not found."));
-        JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(applicationDTO.getJobAdId())
-                .orElseThrow(() -> new IllegalArgumentException("Job advertisement not found."));
-
-        if (applicationDTO.getResumeFile().isEmpty()) {
-            throw new RuntimeException("Failed to store empty file.");
-        }
-
-        List<String> answers = new ArrayList<>();
-        answers.add(applicationDTO.getAnswerOne());
-        answers.add(applicationDTO.getAnswerTwo());
-        answers.add(applicationDTO.getAnswerThree());
-
-        Application application = new Application(jobSeeker, jobAdvertisement,
-                answers,applicationDTO.getMessageToRecruiter());
-        application = applicationRepository.save(application);
-
-        Path filePath = this.fileStorageLocation.resolve(String.valueOf(application.getId())).resolve("resume");
-        Path targetLocation = filePath.resolve(applicationDTO.getResumeFile().getOriginalFilename());
-
-        try {
-            Files.createDirectories(filePath);
-            Files.copy(applicationDTO.getResumeFile().getInputStream(), targetLocation);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-
-        String relativePath = Paths.get("uploads","applications",String.valueOf(application.getId()),
-                "resume", applicationDTO.getResumeFile().getOriginalFilename()).toString();
-        application.setResumeFilePath(relativePath);
-        application = applicationRepository.save(application);
-
-        return Application.mapToApplicationDetailsDTO(application);
-    }
-
-    @Override
-    public ApplicationDetailsDTO updateApplication(Long applicationId, MultipartFile[] additionalFiles) {
-        Application application = applicationRepository.findById(applicationId).orElse(null);
-        if(application== null) {
-            throw new RuntimeException("Application not found.");
-        }
-
-        for (MultipartFile additionalFile : additionalFiles) {
-            if (additionalFile.isEmpty()) {
-                throw new RuntimeException("Failed to store empty file.");
-            }
-        }
-
-        Path filesPath = this.fileStorageLocation.resolve(String.valueOf(application.getId())).resolve("additional_files");
-        for(MultipartFile additionalFile: additionalFiles) {
-            Path targetLocation = filesPath.resolve(additionalFile.getOriginalFilename());
-
-            try {
-                Files.createDirectories(filesPath);
-                Files.copy(additionalFile.getInputStream(), targetLocation);
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-
-            String relativePath = Paths.get("uploads","applications",String.valueOf(application.getId()),
-                    "additional_files", additionalFile.getOriginalFilename()).toString();
-            List<String> currentAdditionalFilePaths = application.getAdditionalFilePaths();
-            currentAdditionalFilePaths.add(relativePath);
-            application.setAdditionalFilePaths(currentAdditionalFilePaths);
-            application = applicationRepository.save(application);
-        }
-        return Application.mapToApplicationDetailsDTO(application);
-    }
-
-    @Override
-    public List<ApplicationDetailsDTO> findAllByJobAdvertisementId(Long jobId) {
-        List<Application> applications =  applicationRepository.findAllByJobAdvertisementId(jobId);
-        return applications.stream().map(Application::mapToApplicationDetailsDTO).toList();
-    }
-
-    @Override
-    public List<ApplicationDetailsDTO> filterByJobAdvertisementId(Long jobId, String status) {
-        List<Application> applications =  applicationRepository.findAllByJobAdvertisementId(jobId);
-        String statusTrimmed = status.subSequence(0, status.length()-1).toString();
-
-        if(statusTrimmed.equals("ALL")) {
-            applications =  applicationRepository.findAllByJobAdvertisementId(jobId);
-        } else {
-            applications = applications.stream().filter(application -> application.getStatus().name().equals(statusTrimmed)).toList();
-        }
-        return applications.stream().map(Application::mapToApplicationDetailsDTO).toList();
-    }
-
-    @Override
-    public List<ApplicationDetailsDTO> findAllByJobSeekerId(Long jobSeekerId) {
-       List<Application> applications = applicationRepository.findAllByJobSeekerId(jobSeekerId);
-       return applications.stream().map(Application::mapToApplicationDetailsDTO).toList();
-    }
-
-    @Override
-    public List<ApplicationDetailsDTO> filterByJobSeekerId(Long jobSeekerId, String status) {
-        List<Application> applications = applicationRepository.findAllByJobSeekerId(jobSeekerId);
-        String statusTrimmed = status.subSequence(0, status.length()-1).toString();
-        if(statusTrimmed.equals("ALL")) {
-            applications =  applicationRepository.findAllByJobSeekerId(jobSeekerId);
-        } else {
-            applications = applications.stream().filter(application -> application.getStatus().name().equals(statusTrimmed)).toList();
-        }
-        return applications.stream().map(Application::mapToApplicationDetailsDTO).toList();
-    }
-
-    @Override
-    public Resource loadResumeAsResource(Long applicationId) {
-        Application application = applicationRepository.findById(applicationId).
-                orElseThrow(() -> new IllegalArgumentException("Application not found"));
-
-        String relativeFilePath = application.getResumeFilePath();
-        Path filePath = fileStorageLocation.getParent().getParent().resolve(relativeFilePath).normalize();
-
-        try {
-            Resource resource = new UrlResource(filePath.toUri());
-            if (resource.exists()) {
-                return resource;
-            } else {
-                throw new RuntimeException("File not found: " + relativeFilePath);
-            }
-        } catch (IOException ex) {
-            throw new RuntimeException("File path is invalid: " + relativeFilePath, ex);
-        }
-    }
-
-    public List<String> loadAdditionalFilesAsUrls(Long applicationId) {
-        Application application = applicationRepository.findById(applicationId)
-                .orElseThrow(() -> new IllegalArgumentException("Application not found"));
-
-        List<String> fileUrls = new ArrayList<>();
-        List<String> relativeFilePaths = application.getAdditionalFilePaths();
-
-        for (String relativeFilePath : relativeFilePaths) {
-            //TO DO: refactor
-            Path filePath = Paths.get(fileStorageLocation.getParent().getParent().toString(), relativeFilePath).normalize();
-            String relativePath = filePath.toString().replace("\\", "/").replaceFirst("^.+uploads", "uploads");
-
-            String fileUrl = ServletUriComponentsBuilder.fromCurrentContextPath()
-                    .path("/")
-                    .path(relativePath)
-                    .toUriString();
-            fileUrls.add(fileUrl);
-        }
-
-        return fileUrls;
-    }
-
-   /* @Override
-    public List<Resource> loadAdditionalFilesAsZippedResource(Long applicationId) {
-        Application application = applicationRepository.findById(applicationId).
-                orElseThrow(() -> new IllegalArgumentException("Application not found"));
-
-        List<Resource> resources = new ArrayList<>();
-
-        List<String> relativeFilePaths = application.getAdditionalFilePaths();
-        for(String relativeFilePath: relativeFilePaths) {
-            Path filePath = fileStorageLocation.getParent().getParent().resolve(relativeFilePath).normalize();
-
-            try {
-                Resource resource = new UrlResource(filePath.toUri());
-                if (resource.exists()) {
-                    resources.add(resource);
-                }
-            } catch (MalformedURLException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return resources;
-    }*/
-
-    @Override
-    public List<ApplicationStatusDTO> updateApplications(List<ApplicationStatusDTO> updates) {
-        List<ApplicationStatusDTO> updatedApplications = new ArrayList<>();
-
-        for(ApplicationStatusDTO applicationStatusDTO : updates) {
-            Application application = applicationRepository.findById(applicationStatusDTO.getId()).orElse(null);
-            if(application != null) {
-                application.setStatus(ApplicationStatus.valueOf(applicationStatusDTO.getStatus()));
-                application.setResponse(applicationStatusDTO.getResponse());
-                applicationRepository.save(application);
-                updatedApplications.add(applicationStatusDTO);
-
-                //email notification
-                String email = application.getJobSeeker().getEmail();
-                String subject = application.getJobAdvertisement().getRecruiter().getName() + ": " + application.getJobAdvertisement().getTitle() + " - STATUS UPDATE";
-                String text = "Dear " + application.getJobSeeker().getName() + ",\n\n";
-
-                switch (applicationStatusDTO.getStatus()) {
-                    case "ACCEPTED":
-                        text += "Great news! Your application has been accepted.\n\n";
-                        break;
-                    case "DENIED":
-                        text += "We regret to inform you that your application has been denied. We appreciate your interest and effort.\n\n";
-                        break;
-                    case "PROPOSED":
-                        text += "Your application status has been updated to 'Proposed'. We're considering your application for the next phase.\n\n";
-                        break;
-                    case "UNDER_REVIEW":
-                        text += "Your application is currently under review.\n\n";
-                        break;
-                }
-
-
-                if(!applicationStatusDTO.getResponse().isEmpty()) {
-                    text += "Response: " + applicationStatusDTO.getResponse() + "\n\n";
-                }
-               text += "Thank you.";
-           emailSenderService.sendEmail(email, subject, text);
-            }
-        }
-        return updatedApplications;
-    }
-
-    @Override
-    public ApplicationStatusDTO updateApplicationStatus(Long id, String status) {
-       Application application = applicationRepository.findById(id).orElse(null);
-        System.out.println(status);
-       application.setStatus(ApplicationStatus.valueOf(status));
-       applicationRepository.save(application);
-       return new ApplicationStatusDTO(id, status, "");
-    }
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AuthServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AuthServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AuthServiceImpl.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,12 +1,5 @@
 package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
 
-import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
-import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
-import com.google.api.client.http.javanet.NetHttpTransport;
-import com.google.api.client.json.jackson2.JacksonFactory;
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.config.GoogleOAuth2Properties;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.controllers.AuthController;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.Role;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.SignInDTO;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JwtAuthResponse;
@@ -19,30 +12,11 @@
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.UserRepository;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.AuthService;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobSeekerService;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JwtService;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
-import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
-import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
-import org.springframework.security.oauth2.core.user.DefaultOAuth2User;
-import org.springframework.security.oauth2.core.user.OAuth2User;
 import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
 
-import javax.imageio.ImageIO;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.time.LocalDateTime;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
 
 @Service
@@ -55,13 +29,10 @@
     private final AuthenticationManager authenticationManager;
     private final UserRepository userRepository;
-    private final JobSeekerService jobSeekerService;
     private final JwtService jwtService;
-    private final GoogleOAuth2Properties googleOAuth2Properties;
+
 
     @Override
     public User signUpJobSeeker(JobSeeker jobSeeker) {
         jobSeeker.setPassword(passwordEncoder.encode(jobSeeker.getPassword()));
-        jobSeeker.setHasAccess(true);
-        jobSeeker.setRegisteredOn(LocalDateTime.now());
         return jobSeekerRepository.save(jobSeeker);
     }
@@ -69,6 +40,4 @@
     public User signUpRecruiter(Recruiter recruiter) {
         recruiter.setPassword(passwordEncoder.encode(recruiter.getPassword()));
-        recruiter.setHasAccess(false);
-        recruiter.setRegisteredOn(LocalDateTime.now());
         return recruiterRepository.save(recruiter);
     }
@@ -81,170 +50,16 @@
         String refreshJwt = jwtService.generateRefreshToken(new HashMap<>(), user);
 
-        return new JwtAuthResponse(user.getId(), user.getEmail(), user.getName(), user.getRole().name(), user.isHasAccess(), jwt, refreshJwt);
+        return new JwtAuthResponse(user.getEmail(), user.getName(), user.getRole().name(), jwt, refreshJwt);
     }
-
+    
     public JwtAuthResponse refreshToken(RefreshTokenRequest refreshTokenRequest) {
         String userEmail = jwtService.extractUsername(refreshTokenRequest.getToken());
         User user = userRepository.findByEmail(userEmail).orElseThrow();
-        if (jwtService.isTokenValid(refreshTokenRequest.getToken(), user)) {
+        if(jwtService.isTokenValid(refreshTokenRequest.getToken(), user)) {
             String jwt = jwtService.generateToken(user);
 
-            return new JwtAuthResponse(user.getId(), user.getEmail(), user.getName(), user.getRole().name(), user.isHasAccess(), jwt, refreshTokenRequest.getToken());
+            return new JwtAuthResponse(user.getEmail(), user.getName(), user.getRole().name(), jwt, refreshTokenRequest.getToken());
         }
         return null;
     }
-
-    @Override
-    public JwtAuthResponse googleSignIn(Map<String, String> token) {
-        OAuth2AuthenticationToken authentication = getAuthentication(token.get("tokenId"));
-
-        OAuth2User oAuth2User = authentication.getPrincipal();
-        String email = oAuth2User.getAttribute("email");
-
-        JobSeeker jobSeeker = jobSeekerRepository.findByEmail(email)
-                .orElseGet(() -> {
-                    JobSeeker newJobSeeker = new JobSeeker();
-                    newJobSeeker.setEmail(email);
-                    newJobSeeker.setFirstName(oAuth2User.getAttribute("given_name"));
-                    newJobSeeker.setLastName(oAuth2User.getAttribute("family_name"));
-                    newJobSeeker.setPassword("");
-                    newJobSeeker.setRole(Role.ROLE_JOBSEEKER);
-                    newJobSeeker.setHasAccess(true);
-                    jobSeekerRepository.save(newJobSeeker);
-
-                    String googleProfilePicUrl = oAuth2User.getAttribute("picture");
-                    submitGoogleProfilePic(newJobSeeker.getId(), googleProfilePicUrl);
-
-                    return newJobSeeker;
-                });
-
-        String jwt = jwtService.generateToken(jobSeeker);
-
-        return new JwtAuthResponse(
-                jobSeeker.getId(),
-                jobSeeker.getEmail(),
-                jobSeeker.getFirstName() + " " + jobSeeker.getLastName(),
-                jobSeeker.getRole().name(),
-                jobSeeker.isHasAccess(),
-                jwt,
-                null
-        );
-    }
-
-    public OAuth2AuthenticationToken getAuthentication(String tokenId) {
-        try {
-            GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(), new JacksonFactory())
-                    .setAudience(Collections.singletonList(googleOAuth2Properties.getClientId()))
-                    .build();
-
-            GoogleIdToken idToken = verifier.verify(tokenId);
-            if (idToken != null) {
-                GoogleIdToken.Payload payload = idToken.getPayload();
-
-                String userId = payload.getSubject();
-                String email = payload.getEmail();
-                boolean emailVerified = Boolean.TRUE.equals(payload.getEmailVerified());
-                String name = (String) payload.get("name");
-                String pictureUrl = (String) payload.get("picture");
-                String familyName = Optional.ofNullable((String) payload.get("family_name")).orElse("");
-                String givenName = (String) payload.get("given_name");
-
-                Map<String, Object> attributes = Map.of(
-                        "sub", userId,
-                        "email", email,
-                        "email_verified", emailVerified,
-                        "name", name,
-                        "picture", pictureUrl,
-                        "family_name", familyName,
-                        "given_name", givenName
-                );
-
-                OAuth2User oAuth2User = new DefaultOAuth2User(
-                        Collections.singleton(new SimpleGrantedAuthority("ROLE_JOBSEEKER")),
-                        attributes,
-                        "sub"
-                );
-
-                return new OAuth2AuthenticationToken(oAuth2User, oAuth2User.getAuthorities(), "google");
-            } else {
-                throw new IllegalArgumentException("Invalid ID token");
-            }
-        } catch (Exception e) {
-            throw new RuntimeException("Failed to verify token", e);
-        }
-    }
-
-    public void submitGoogleProfilePic(Long jobSeekerId, String googleProfilePicUrl) {
-        try {
-            URL url = new URL(googleProfilePicUrl);
-            BufferedImage image = ImageIO.read(url);
-
-            // Convert BufferedImage to byte array
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            ImageIO.write(image, "jpg", baos);
-            byte[] imageBytes = baos.toByteArray();
-
-            // Convert byte array to MultipartFile
-            MultipartFile multipartFile = new InMemoryMultipartFile("profilePicFile", "google-profile-pic.jpg", "image/jpeg", imageBytes);
-
-            jobSeekerService.submitProfilePic(jobSeekerId, multipartFile);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    class InMemoryMultipartFile implements MultipartFile {
-
-        private final String name;
-        private final String originalFilename;
-        private final String contentType;
-        private final byte[] content;
-
-        public InMemoryMultipartFile(String name, String originalFilename, String contentType, byte[] content) {
-            this.name = name;
-            this.originalFilename = originalFilename;
-            this.contentType = contentType;
-            this.content = content;
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public String getOriginalFilename() {
-            return originalFilename;
-        }
-
-        @Override
-        public String getContentType() {
-            return contentType;
-        }
-
-        @Override
-        public boolean isEmpty() {
-            return content.length == 0;
-        }
-
-        @Override
-        public long getSize() {
-            return content.length;
-        }
-
-        @Override
-        public byte[] getBytes() throws IOException {
-            return content;
-        }
-
-        @Override
-        public InputStream getInputStream() throws IOException {
-            return new ByteArrayInputStream(content);
-        }
-
-        @Override
-        public void transferTo(java.io.File dest) throws IOException {
-            throw new UnsupportedOperationException("This method is not implemented");
-        }
-    }
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/EmailSenderServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/EmailSenderServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.EmailSenderService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.mail.SimpleMailMessage;
-import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.stereotype.Service;
-
-@Service
-public class EmailSenderServiceImpl implements EmailSenderService {
-
-    @Autowired
-    private JavaMailSender mailSender;
-
-    @Value("${custom.mail.sender.email}")
-    private String senderEmail;
-
-    @Value("${custom.mail.sender.name}")
-    private String senderName;
-
-    @Override
-    public void sendEmail(String to, String subject, String text) {
-        SimpleMailMessage message = new SimpleMailMessage();
-        message.setTo(to);
-        message.setSubject(subject);
-        message.setText(text);
-
-        message.setFrom(String.format("%s <%s>", senderName, senderEmail));
-
-        mailSender.send(message);
-    }
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,137 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.EmploymentStatus;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.JobType;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdFilterDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdvertisementDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobAdvertisementRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.RecruiterRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.UserRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobAdvertisementService;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDate;
-import java.util.Comparator;
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-public class JobAdvertisementServiceImpl implements JobAdvertisementService {
-    private final JobAdvertisementRepository jobAdvertisementRepository;
-    private final RecruiterRepository recruiterRepository;
-
-    @Override
-    public JobAdDetailsDTO addJobAdvertisement(JobAdvertisementDTO jobAdvertisementDTO) {
-        Recruiter recruiter = recruiterRepository.findById(jobAdvertisementDTO.getId())
-                .orElseThrow(() -> new IllegalArgumentException("User not found"));
-        JobAdvertisement jobAdvertisement = new JobAdvertisement(
-                recruiter,
-                jobAdvertisementDTO.getTitle(),
-                jobAdvertisementDTO.getDescription(),
-                jobAdvertisementDTO.getIndustry(),
-                jobAdvertisementDTO.getStartingSalary(),
-                LocalDate.parse(jobAdvertisementDTO.getActiveUntil()),
-                JobType.valueOf(jobAdvertisementDTO.getJobType()),
-                EmploymentStatus.valueOf(jobAdvertisementDTO.getEmploymentStatus())
-        );
-        jobAdvertisementRepository.save(jobAdvertisement);
-        return JobAdvertisement.mapToJobAdDetailsDTO(jobAdvertisement);
-    }
-
-    @Override
-    public JobAdDetailsDTO editJobAdvertisement(Long id, JobAdvertisementDTO jobAdvertisementDTO) {
-        JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(id)
-                .orElseThrow(() -> new IllegalArgumentException("Job Advertisement not found"));
-        jobAdvertisement.setTitle(jobAdvertisementDTO.getTitle());
-        jobAdvertisement.setDescription(jobAdvertisementDTO.getDescription());
-        jobAdvertisement.setIndustry(jobAdvertisementDTO.getIndustry());
-        jobAdvertisement.setStartingSalary(jobAdvertisementDTO.getStartingSalary());
-        jobAdvertisement.setActiveUntil(LocalDate.parse(jobAdvertisementDTO.getActiveUntil()));
-        jobAdvertisement.setActive(jobAdvertisement.isJobAdActive());
-        jobAdvertisement.setJobType(JobType.valueOf(jobAdvertisementDTO.getJobType()));
-        jobAdvertisement.setEmploymentStatus(EmploymentStatus.valueOf(jobAdvertisementDTO.getEmploymentStatus()));
-        jobAdvertisementRepository.save(jobAdvertisement);
-        return JobAdvertisement.mapToJobAdDetailsDTO(jobAdvertisement);
-    }
-
-    @Override
-    public void deleteJobAdvertisement(Long jobAdvertisementId) {
-        jobAdvertisementRepository.deleteById(jobAdvertisementId);
-    }
-
-    @Override
-    public List<JobAdDetailsDTO> findAllJobAdvertisements() {
-        List<JobAdvertisement> jobAdvertisementList = jobAdvertisementRepository.findAll();
-        jobAdvertisementList.forEach(jobAdvertisement -> {
-            if (!jobAdvertisement.isJobAdActive() && jobAdvertisement.isActive()) {
-                jobAdvertisement.setActive(false);
-                jobAdvertisementRepository.save(jobAdvertisement);
-            } else if (jobAdvertisement.isJobAdActive() && !jobAdvertisement.isActive()) {
-                jobAdvertisement.setActive(true);
-                jobAdvertisementRepository.save(jobAdvertisement);
-            }
-        });
-
-        return jobAdvertisementList.stream()
-                .map(JobAdvertisement::mapToJobAdDetailsDTO)
-                .toList();
-    }
-
-    @Override
-    public List<JobAdDetailsDTO> filterJobAdvertisements(JobAdFilterDTO jobAdFilterDTO) {
-        List<JobAdvertisement> filteredJobAds = jobAdvertisementRepository.findAll();
-        filteredJobAds = filter(filteredJobAds, jobAdFilterDTO);
-
-        return filteredJobAds.stream()
-                .map(JobAdvertisement::mapToJobAdDetailsDTO)
-                .toList();
-    }
-
-    private List<JobAdvertisement> filter(List<JobAdvertisement> filteredJobAdvertisements, JobAdFilterDTO jobAdFilterDTO) {
-        return filteredJobAdvertisements.stream()
-                .filter(jobAd -> jobAd.getTitle().toLowerCase().contains(jobAdFilterDTO.getSearchTerm().toLowerCase()))
-                .filter(jobAd -> jobAdFilterDTO.getIndustry().equals("all") || jobAd.getIndustry().equals(jobAdFilterDTO.getIndustry()))
-                .sorted(getComparator(jobAdFilterDTO.getSortOrder()))
-                .toList();
-    }
-
-    private Comparator<JobAdvertisement> getComparator(String sortOrder) {
-        return switch (sortOrder) {
-            case "date_newest" -> Comparator.comparing(JobAdvertisement::getPostedOn).reversed();
-            case "date_oldest" -> Comparator.comparing(JobAdvertisement::getPostedOn);
-            case "salary_highest" -> Comparator.comparing(JobAdvertisement::getStartingSalary).reversed();
-            case "salary_lowest" -> Comparator.comparing(JobAdvertisement::getStartingSalary);
-            default -> Comparator.comparing(JobAdvertisement::getPostedOn); // Default sorting order
-        };
-    }
-
-
-    @Override
-    public List<JobAdDetailsDTO> findAllJobAdvertisementsByRecruiterId(Long recruiterId) {
-        List<JobAdvertisement> jobAdvertisementList = jobAdvertisementRepository.findAllByRecruiterId(recruiterId);
-
-        return jobAdvertisementList.stream()
-                .map(JobAdvertisement::mapToJobAdDetailsDTO)
-                .toList();
-    }
-
-    @Override
-    public List<JobAdDetailsDTO> filterJobAdvertisementsByRecruiterId(Long recruiterId, JobAdFilterDTO jobAdFilterDTO) {
-        List<JobAdvertisement> filteredJobAds = jobAdvertisementRepository.findAllByRecruiterId(recruiterId);
-        filteredJobAds = filter(filteredJobAds, jobAdFilterDTO);
-        return filteredJobAds.stream()
-                .map(JobAdvertisement::mapToJobAdDetailsDTO)
-                .toList();
-    }
-
-    @Override
-    public JobAdDetailsDTO findJobAdvertisementById(Long id) {
-        JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(id).orElse(null);
-        return JobAdvertisement.mapToJobAdDetailsDTO(jobAdvertisement);
-    }
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobSeekerServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobSeekerServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,101 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerEditDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers.JobSeekerMapper;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobSeekerRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JobSeekerService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.UrlResource;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-
-@Service
-@RequiredArgsConstructor
-public class JobSeekerServiceImpl implements JobSeekerService {
-
-    private final JobSeekerRepository jobSeekerRepository;
-    private final Path profilePicStorageLocation;
-
-    @Autowired
-    JobSeekerServiceImpl(@Value("./uploads") String uploadDir, JobSeekerRepository jobSeekerRepository) {
-        this.jobSeekerRepository = jobSeekerRepository;
-
-        this.profilePicStorageLocation = Paths.get(uploadDir + "/job-seekers").toAbsolutePath().normalize();
-        try {
-            Files.createDirectories(this.profilePicStorageLocation);
-        } catch (IOException ex) {
-            throw new RuntimeException("Could not create the directory where the uploaded files will be stored.", ex);
-        }
-    }
-
-    @Override
-    public JobSeekerEditDetailsDTO editJobSeekerDetailsById(Long jobSeekerId, JobSeekerEditDetailsDTO jobSeekerEditDetailsDTO) {
-        JobSeeker jobSeeker = jobSeekerRepository.findById(jobSeekerId).orElse(null);
-        jobSeeker.setEmail(jobSeekerEditDetailsDTO.getEmail());
-        jobSeeker.setFirstName(jobSeekerEditDetailsDTO.getFirstName());
-        jobSeeker.setLastName(jobSeekerEditDetailsDTO.getLastName());
-        jobSeeker.setPhoneNumber(jobSeekerEditDetailsDTO.getPhoneNumber());
-        jobSeekerRepository.save(jobSeeker);
-        return JobSeekerMapper.mapToJobSeekerEditDetailsDTO(jobSeeker);
-    }
-
-    @Override
-    public JobSeekerEditDetailsDTO getJobSeekerEditDetailsById(Long jobSeekerId) {
-        JobSeeker jobSeeker = jobSeekerRepository.findById(jobSeekerId).orElse(null);
-        return JobSeekerMapper.mapToJobSeekerEditDetailsDTO(jobSeeker);
-    }
-
-    @Override
-    public void submitProfilePic(Long jobSeekerId, MultipartFile profilePicFile) {
-        Path jobSeekerProfilePicDir = this.profilePicStorageLocation.resolve(String.valueOf(jobSeekerId)).resolve("profile-pics");
-
-        try {
-            Files.createDirectories(jobSeekerProfilePicDir);
-            String originalFileName = profilePicFile.getOriginalFilename();
-
-            if(originalFileName != null) {
-                Path targetLocation = jobSeekerProfilePicDir.resolve(originalFileName);
-                Files.copy(profilePicFile.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);
-
-                JobSeeker jobSeeker = jobSeekerRepository.findById(jobSeekerId).orElse(null);
-                String relativePath = Paths.get("uploads", "job-seekers", String.valueOf(jobSeekerId), "profile-pics", originalFileName).toString();
-
-                jobSeeker.setProfilePicFilePath(relativePath);
-                jobSeekerRepository.save(jobSeeker);
-            }
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @Override
-    public Resource loadProfilePicAsResource(Long jobSeekerId) {
-       JobSeeker jobSeeker =  jobSeekerRepository.findById(jobSeekerId)
-               .orElseThrow(() -> new RuntimeException("Job Seeker not found"));
-
-       try {
-           String relativeProfilePicPath = jobSeeker.getProfilePicFilePath();
-           Path profilePicPath = profilePicStorageLocation.getParent().getParent().resolve(relativeProfilePicPath);
-            Resource resource = new UrlResource(profilePicPath.toUri());
-            if(resource.exists()) {
-                return resource;
-            } else {
-                throw new RuntimeException("Could not find profile pic at " + profilePicPath);
-            }
-       } catch (IOException ex) {
-           throw new RuntimeException(ex);
-       }
-
-
-    }
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JwtServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JwtServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JwtServiceImpl.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -6,5 +6,4 @@
 import io.jsonwebtoken.io.Decoders;
 import io.jsonwebtoken.security.Keys;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JwtService;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -20,10 +19,6 @@
     private final static String SECRET_KEY = "7191b1d33668d4a2316a02f9a40798b77bccd22173bd882c93a0a916a5e921d1";
 
-    public String generateToken(User user) {
-        return Jwts.builder().setSubject(user.getUsername())
-                .claim("name", user.getName())
-                .claim("role", user.getRole())
-                .claim("access", user.isHasAccess())
-                .claim("id", user.getId())
+    public String generateToken(UserDetails userDetails) {
+        return Jwts.builder().setSubject(userDetails.getUsername())
                 .setIssuedAt(new Date())
                 .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24))
@@ -46,4 +41,8 @@
     }
 
+    public String extractUsername(String token) {
+        return extractClaim(token, Claims::getSubject);
+    }
+
     private Claims extractAllClaims(String token) {
         return Jwts.parserBuilder().setSigningKey(getSigninKey()).build().parseClaimsJws(token).getBody();
@@ -55,10 +54,4 @@
     }
 
-    @Override
-    public String extractUsername(String token) {
-        return extractClaim(token, Claims::getSubject);
-    }
-
-    @Override
     public boolean isTokenValid(String token, UserDetails userDetails) {
         final String username = extractUsername(token);
@@ -66,6 +59,6 @@
     }
 
-    @Override
-    public boolean isTokenExpired(String token) {
+
+    private boolean isTokenExpired(String token) {
         return extractClaim(token, Claims::getExpiration).before(new Date());
     }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/RecruiterServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/RecruiterServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,115 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
-
-import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.mappers.RecruiterMapper;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.RecruiterRepository;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.RecruiterService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.UrlResource;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-
-@Service
-@RequiredArgsConstructor
-public class RecruiterServiceImpl implements RecruiterService {
-
-    private final RecruiterRepository recruiterRepository;
-    private final Path logoStorageLocation;
-
-    @Autowired
-    RecruiterServiceImpl(@Value("./uploads") String uploadDir, RecruiterRepository recruiterRepository) {
-        this.recruiterRepository = recruiterRepository;
-
-        this.logoStorageLocation = Paths.get(uploadDir + "/recruiters").toAbsolutePath().normalize();
-        try {
-            Files.createDirectories(this.logoStorageLocation);
-        } catch (IOException ex) {
-            throw new RuntimeException("Could not create the directory where the uploaded files will be stored.", ex);
-        }
-    }
-
-
-    @Override
-    public RecruiterEditDetailsDTO editRecruiterDetailsById(Long recruiterId, RecruiterEditDetailsDTO recruiterEditDetailsDTO) {
-        Recruiter recruiter = recruiterRepository.findById(recruiterId).orElse(null);
-        recruiter.setEmail(recruiterEditDetailsDTO.getEmail());
-        recruiter.setCompanyName(recruiterEditDetailsDTO.getCompanyName());
-        recruiter.setCompanyDescription(recruiterEditDetailsDTO.getCompanyDescription());
-        recruiter.setContactEmailAddress(recruiterEditDetailsDTO.getContactEmail());
-        recruiter.setContactPhoneNumber(recruiterEditDetailsDTO.getContactPhoneNumber());
-        recruiter.setReceptionist(recruiterEditDetailsDTO.getReceptionist());
-        recruiterRepository.save(recruiter);
-        return RecruiterMapper.mapToRecruiterEditDetailsDTO(recruiter);
-    }
-
-    @Override
-    public RecruiterEditDetailsDTO getRecruiterEditDetailsById(Long recruiterId) {
-        Recruiter recruiter = recruiterRepository.findById(recruiterId).orElse(null);
-        return RecruiterMapper.mapToRecruiterEditDetailsDTO(recruiter);
-    }
-
-
-    @Override
-    public RecruiterDetailsDTO getRecruiterDetailsById(Long recruiterId) {
-        Recruiter recruiter = recruiterRepository.findById(recruiterId).orElse(null);
-        return RecruiterMapper.mapToRecruiterDetailsDTO(recruiter);
-    }
-
-    @Override
-    public void submitLogo(Long recruiterId, MultipartFile logoFile) {
-
-        Path recruiterLogoDir = this.logoStorageLocation.resolve(String.valueOf(recruiterId)).resolve("logos");
-        try {
-            Files.createDirectories(recruiterLogoDir);
-            String originalFilename = logoFile.getOriginalFilename();
-
-            if (originalFilename != null) {
-                Path targetLocation = recruiterLogoDir.resolve(originalFilename);
-
-                Files.copy(logoFile.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);
-
-                Recruiter recruiter = recruiterRepository.findById(recruiterId)
-                        .orElseThrow(() -> new RuntimeException("Recruiter not found"));
-                String relativePath = Paths.get("uploads","recruiters", String.valueOf(recruiterId), "logos", originalFilename).toString();
-                recruiter.setLogoFilePath(relativePath);
-                recruiterRepository.save(recruiter);
-            }
-
-        } catch (IOException ex) {
-            throw new RuntimeException("Could not store file. Please try again!", ex);
-        }
-
-      
-    }
-
-    public Resource loadLogoAsResource(Long recruiterId) {
-        Recruiter recruiter = recruiterRepository.findById(recruiterId)
-                .orElseThrow(() -> new RuntimeException("Recruiter not found"));
-
-        try {
-            String relativeLogoPath = recruiter.getLogoFilePath();
-            Path logoPath = this.logoStorageLocation.getParent().getParent().resolve(relativeLogoPath);
-            Resource resource = new UrlResource(logoPath.toUri());
-            if (resource.exists()) {
-                return resource;
-            } else {
-                throw new RuntimeException("File not found " + logoPath);
-            }
-        } catch (IOException ex) {
-            throw new RuntimeException("File not found " + ex);
-        }
-
-    }
-
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/UserServiceImpl.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/UserServiceImpl.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/UserServiceImpl.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,11 +1,64 @@
 package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
 
-import lombok.RequiredArgsConstructor;
+import lombok.AllArgsConstructor;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobSeekerRepository;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.RecruiterRepository;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.UserRepository;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JwtService;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.UserService;
 
 @Service
-@RequiredArgsConstructor
-public class UserServiceImpl implements UserService {
+@AllArgsConstructor
 
+public class UserServiceImpl  {
+    private final UserRepository userRepository;
+    private final RecruiterRepository recruiterRepository;
+    private final JobSeekerRepository jobSeekerRepository;
+    private final PasswordEncoder passwordEncoder;
+    private final AuthenticationManager authenticationManager;
+    private final JwtService jwtService;
+
+
+//    @Override
+//    public User registerJobSeeker(JobSeeker jobSeeker) {
+//        jobSeeker.setPassword(passwordEncoder.encode(jobSeeker.getPassword()));
+//        return jobSeekerRepository.save(jobSeeker);
+//    }
+//
+//    @Override
+//    public User registerRecruiter(Recruiter recruiter) {
+//        recruiter.setPassword(passwordEncoder.encode(recruiter.getPassword()));
+//        return recruiterRepository.save(recruiter);
+//    }
+//
+//    @Override
+//    public JwtAuthenticationResponse login(JwtAuthenticationRequest jwtAuthenticationRequest) {
+//        authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(jwtAuthenticationRequest.getEmail(), jwtAuthenticationRequest.getPassword()));
+//
+//        var user = userRepository.findByEmail(jwtAuthenticationRequest.getEmail()).orElseThrow(() -> new IllegalArgumentException("Email or password is incorrect"));
+//        var jwt = jwtService.generateToken(user);
+//        var refreshToken = jwtService.generateRefreshToken(new HashMap<>(), user);
+//
+//        JwtAuthenticationResponse jwtAuthenticationResponse = new JwtAuthenticationResponse();
+//        jwtAuthenticationResponse.setToken(jwt);
+//        jwtAuthenticationResponse.setRefreshToken(refreshToken);
+//        return jwtAuthenticationResponse;
+//    }
+//
+//    @Override
+//    public JwtAuthenticationResponse refreshToken(RefreshTokenRequest refreshTokenRequest) {
+//        String userEmail = jwtService.extractUsername(refreshTokenRequest.getToken());
+//        User user = userRepository.findByEmail(userEmail).orElseThrow();
+//        if(jwtService.isTokenValid(refreshTokenRequest.getToken(), user)) {
+//            var jwt = jwtService.generateToken(user);
+//
+//            JwtAuthenticationResponse jwtAuthenticationResponse = new JwtAuthenticationResponse();
+//            jwtAuthenticationResponse.setToken(jwt);
+//            jwtAuthenticationResponse.setRefreshToken(refreshTokenRequest.getToken());
+//            return jwtAuthenticationResponse;
+//        }
+//        return null;
+//    }
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/AdminService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/AdminService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,11 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterAdminDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
-
-import java.util.List;
-
-public interface AdminService {
-    RecruiterAdminDetailsDTO changeAccess(long recruiterId, boolean access);
-    List<RecruiterAdminDetailsDTO> findAllRecruiters();
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/ApplicationService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/ApplicationService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,24 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
-
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.Application;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.applications.DTO.ApplicationStatusDTO;
-import org.springframework.core.io.Resource;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-public interface ApplicationService {
-    ApplicationDetailsDTO submitApplication(ApplicationDTO applicationDTO);
-    ApplicationDetailsDTO updateApplication(Long applicationId, MultipartFile[] additionalFiles);
-    List<ApplicationDetailsDTO> findAllByJobAdvertisementId(Long jobId);
-    List<ApplicationDetailsDTO> filterByJobAdvertisementId(Long jobId, String status);
-    List<ApplicationDetailsDTO> findAllByJobSeekerId(Long jobSeekerId);
-    List<ApplicationDetailsDTO> filterByJobSeekerId(Long jobSeekerId, String status);
-    Resource loadResumeAsResource(Long applicationId);
-    List<String> loadAdditionalFilesAsUrls(Long applicationId);
-    ApplicationStatusDTO updateApplicationStatus(Long id, String status);
-    List<ApplicationStatusDTO> updateApplications(List<ApplicationStatusDTO> updates);
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/AuthService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/AuthService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/AuthService.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -7,7 +7,4 @@
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
-import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
-
-import java.util.Map;
 
 public interface AuthService {
@@ -16,7 +13,3 @@
     JwtAuthResponse signIn(SignInDTO signInDTO);
     JwtAuthResponse refreshToken(RefreshTokenRequest refreshTokenRequest);
-
-    JwtAuthResponse googleSignIn(Map<String, String> token);
-    OAuth2AuthenticationToken getAuthentication(String tokenId);
-    void submitGoogleProfilePic(Long jobSeekerId, String googleProfilePicUrl);
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/EmailSenderService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/EmailSenderService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,5 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
-
-public interface EmailSenderService {
-    void sendEmail(String to, String subject, String text);
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/JobAdvertisementService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/JobAdvertisementService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,23 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdFilterDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.DTO.JobAdvertisementDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.job_advertisements.JobAdvertisement;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface JobAdvertisementService {
-    JobAdDetailsDTO addJobAdvertisement(JobAdvertisementDTO jobAdvertisementDTO);
-    JobAdDetailsDTO editJobAdvertisement(Long id, JobAdvertisementDTO jobAdvertisementDTO);
-    void deleteJobAdvertisement(Long jobAdvertisementId);
-
-    List<JobAdDetailsDTO> findAllJobAdvertisements();
-    List<JobAdDetailsDTO> filterJobAdvertisements(JobAdFilterDTO jobAdFilterDTO);
-    List<JobAdDetailsDTO> findAllJobAdvertisementsByRecruiterId(Long recruiterId);
-    List<JobAdDetailsDTO> filterJobAdvertisementsByRecruiterId(Long recruiterId, JobAdFilterDTO jobAdFilterDTO);
-    JobAdDetailsDTO findJobAdvertisementById(Long id);
-
-
-}
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/JobSeekerService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/JobSeekerService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JobSeekerEditDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
-import org.springframework.core.io.Resource;
-import org.springframework.web.multipart.MultipartFile;
-
-public interface JobSeekerService {
-
-    JobSeekerEditDetailsDTO editJobSeekerDetailsById(Long jobSeekerId, JobSeekerEditDetailsDTO jobSeekerEditDetailsDTO);
-    JobSeekerEditDetailsDTO getJobSeekerEditDetailsById(Long jobSeekerId);
-
-    void submitProfilePic(Long jobSeekerId, MultipartFile logoFile);
-    Resource loadProfilePicAsResource(Long jobSeekerId);
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/JwtService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/JwtService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/JwtService.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,5 +1,4 @@
 package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
 
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
 import org.springframework.security.core.userdetails.UserDetails;
 
@@ -7,9 +6,9 @@
 
 public interface JwtService {
-    String generateToken(User user);
-    String generateRefreshToken(Map<String, Object> extraClaims, UserDetails userDetails);
+
+    String generateToken(UserDetails userDetails);
     String extractUsername(String token);
     boolean isTokenValid(String token, UserDetails userDetails);
-    boolean isTokenExpired(String token);
+    String generateRefreshToken(Map<String, Object> extraClaims, UserDetails userDetails);
 
 }
Index: bvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/RecruiterService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/RecruiterService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,15 +1,0 @@
-package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
-
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterDetailsDTO;
-import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RecruiterEditDetailsDTO;
-import org.springframework.core.io.Resource;
-import org.springframework.web.multipart.MultipartFile;
-
-public interface RecruiterService {
-    RecruiterDetailsDTO getRecruiterDetailsById(Long recruiterId);
-    RecruiterEditDetailsDTO editRecruiterDetailsById(Long recruiterId, RecruiterEditDetailsDTO recruiterEditDetailsDTO);
-    RecruiterEditDetailsDTO getRecruiterEditDetailsById(Long recruiterId);
-
-    void submitLogo(Long recruiterId, MultipartFile logoFile);
-    Resource loadLogoAsResource(Long recruiterId);
-}
Index: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/UserService.java
===================================================================
--- jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/UserService.java	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/intef/UserService.java	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,7 +1,15 @@
 package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef;
 
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.SignInDTO;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JwtAuthResponse;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RefreshTokenRequest;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
 import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
+import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
 
 public interface UserService {
-
+    User registerJobSeeker(JobSeeker jobSeeker);
+    User registerRecruiter(Recruiter recruiter);
+    JwtAuthResponse login(SignInDTO signInDTO);
+    JwtAuthResponse refreshToken(RefreshTokenRequest refreshTokenRequest);
 }
Index: jobvista-backend/src/main/resources/application.properties
===================================================================
--- jobvista-backend/src/main/resources/application.properties	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-backend/src/main/resources/application.properties	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -2,37 +2,10 @@
 
 spring.datasource.driver-class-name=org.postgresql.Driver
-spring.datasource.url=${db_url}
-spring.datasource.username=${db_username}
-spring.datasource.password=${db_password}
+spring.datasource.url=jdbc:postgresql://localhost:5432/jobvistaDB
+spring.datasource.username=postgres
+spring.datasource.password=postgres
 
-#spring.jpa.hibernate.ddl-auto=create-drop
-spring.jpa.hibernate.ddl-auto=update
+spring.jpa.hibernate.ddl-auto=create-drop
 spring.jpa.show-sql=true
 
 spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
-
-file.upload-dir=${file_upload_dir}
-
-spring.servlet.multipart.enabled=true
-spring.servlet.multipart.max-file-size=2MB
-spring.servlet.multipart.max-request-size=2MB
-
-spring.security.oauth2.client.registration.google.client-id=${google_id}
-spring.security.oauth2.client.registration.google.client-secret=${google_secret}
-spring.security.oauth2.client.registration.google.scope=profile, email
-spring.security.oauth2.client.registration.google.redirect-uri=http://localhost:3000/login/oauth2/code/google
-spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/auth
-spring.security.oauth2.client.provider.google.token-uri=https://oauth2.googleapis.com/token
-spring.security.oauth2.client.provider.google.user-info-uri=https://www.googleapis.com/oauth2/v3/userinfo
-spring.security.oauth2.client.provider.google.user-name-attribute=sub
-
-spring.mail.host=smtp.gmail.com
-spring.mail.port=587
-spring.mail.username=${mail_username}
-spring.mail.password=${mail_password}
-custom.mail.sender.email=${mail_sender_email}
-custom.mail.sender.name=${mail_sender_name}
-spring.mail.properties.mail.smtp.auth=true
-spring.mail.properties.mail.smtp.starttls.enable=true
-
-
Index: jobvista-frontend/.gitignore
===================================================================
--- jobvista-frontend/.gitignore	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/.gitignore	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -22,4 +22,2 @@
 yarn-debug.log*
 yarn-error.log*
-
-.env
Index: bvista-frontend/.idea/codeStyles/codeStyleConfig.xml
===================================================================
--- jobvista-frontend/.idea/codeStyles/codeStyleConfig.xml	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,5 +1,0 @@
-<component name="ProjectCodeStyleConfiguration">
-  <state>
-    <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
-  </state>
-</component>
Index: jobvista-frontend/package-lock.json
===================================================================
--- jobvista-frontend/package-lock.json	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/package-lock.json	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -13,5 +13,4 @@
         "@hookform/resolvers": "^3.3.4",
         "@mui/material": "^5.15.17",
-        "@react-oauth/google": "^0.12.1",
         "@reduxjs/toolkit": "^2.2.3",
         "@testing-library/jest-dom": "^5.17.0",
@@ -20,18 +19,11 @@
         "axios": "^1.6.8",
         "formik": "^2.4.6",
-        "jwt-decode": "^4.0.0",
-        "primereact": "^10.6.6",
-        "quill": "^2.0.2",
         "react": "^18.3.1",
         "react-dom": "^18.3.1",
-        "react-hook-form": "^7.51.4",
         "react-jwt": "^1.2.1",
         "react-redux": "^9.1.2",
-        "react-responsive-modal": "^6.4.2",
         "react-router": "^6.23.0",
         "react-router-dom": "^6.23.0",
         "react-scripts": "5.0.1",
-        "react-select": "^5.8.0",
-        "react-toastify": "^10.0.5",
         "redux": "^5.0.1",
         "redux-thunk": "^3.1.0",
@@ -2044,23 +2036,4 @@
       "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
     },
-    "node_modules/@bedrock-layout/use-forwarded-ref": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/@bedrock-layout/use-forwarded-ref/-/use-forwarded-ref-1.6.1.tgz",
-      "integrity": "sha512-GD9A9AFLzFNjr7k6fgerSqxfwDWl+wsPS11PErOKe1zkVz0y7RGC9gzlOiX/JrgpyB3NFHWIuGtoOQqifJQQpw==",
-      "dependencies": {
-        "@bedrock-layout/use-stateful-ref": "^1.4.1"
-      },
-      "peerDependencies": {
-        "react": "^16.8 || ^17 || ^18"
-      }
-    },
-    "node_modules/@bedrock-layout/use-stateful-ref": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/@bedrock-layout/use-stateful-ref/-/use-stateful-ref-1.4.1.tgz",
-      "integrity": "sha512-4eKO2KdQEXcR5LI4QcxqlJykJUDQJWDeWYAukIn6sRQYoabcfI5kDl61PUi6FR6o8VFgQ8IEP7HleKqWlSe8SQ==",
-      "peerDependencies": {
-        "react": "^16.8 || ^17 || ^18"
-      }
-    },
     "node_modules/@csstools/normalize.css": {
       "version": "12.1.1",
@@ -3790,13 +3763,4 @@
       }
     },
-    "node_modules/@react-oauth/google": {
-      "version": "0.12.1",
-      "resolved": "https://registry.npmjs.org/@react-oauth/google/-/google-0.12.1.tgz",
-      "integrity": "sha512-qagsy22t+7UdkYAiT5ZhfM4StXi9PPNvw0zuwNmabrWyMKddczMtBIOARflbaIj+wHiQjnMAsZmzsUYuXeyoSg==",
-      "peerDependencies": {
-        "react": ">=16.8.0",
-        "react-dom": ">=16.8.0"
-      }
-    },
     "node_modules/@reduxjs/toolkit": {
       "version": "2.2.3",
@@ -6355,9 +6319,4 @@
       "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
     },
-    "node_modules/body-scroll-lock": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz",
-      "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg=="
-    },
     "node_modules/bonjour-service": {
       "version": "1.2.1",
@@ -6640,9 +6599,4 @@
       "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz",
       "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q=="
-    },
-    "node_modules/classnames": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
-      "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
     },
     "node_modules/clean-css": {
@@ -8944,9 +8898,4 @@
       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
     },
-    "node_modules/fast-diff": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
-      "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="
-    },
     "node_modules/fast-glob": {
       "version": "3.3.2",
@@ -12975,12 +12924,4 @@
       }
     },
-    "node_modules/jwt-decode": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
-      "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
-      "engines": {
-        "node": ">=18"
-      }
-    },
     "node_modules/keyv": {
       "version": "4.5.4",
@@ -13115,18 +13056,8 @@
       "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
     },
-    "node_modules/lodash.clonedeep": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
-    },
     "node_modules/lodash.debounce": {
       "version": "4.0.8",
       "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
       "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
-    },
-    "node_modules/lodash.isequal": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
-      "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
     },
     "node_modules/lodash.memoize": {
@@ -13246,9 +13177,4 @@
         "node": ">= 4.0.0"
       }
-    },
-    "node_modules/memoize-one": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
-      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
     },
     "node_modules/merge-descriptors": {
@@ -13885,9 +13811,4 @@
         "tslib": "^2.0.3"
       }
-    },
-    "node_modules/parchment": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz",
-      "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A=="
     },
     "node_modules/parent-module": {
@@ -15366,26 +15287,4 @@
       }
     },
-    "node_modules/primereact": {
-      "version": "10.6.6",
-      "resolved": "https://registry.npmjs.org/primereact/-/primereact-10.6.6.tgz",
-      "integrity": "sha512-+C0Bt6vS/jh09DQVS4UXpVctbvqJDUC3t3mVdGmhmIINYD8kdfL3fvc3bUGniGxkKKzwkSYdAQXhZlcgj8LUgw==",
-      "dependencies": {
-        "@types/react-transition-group": "^4.4.1",
-        "react-transition-group": "^4.4.1"
-      },
-      "engines": {
-        "node": ">=14.0.0"
-      },
-      "peerDependencies": {
-        "@types/react": "^17.0.0 || ^18.0.0",
-        "react": "^17.0.0 || ^18.0.0",
-        "react-dom": "^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/process-nextick-args": {
       "version": "2.0.1",
@@ -15517,36 +15416,4 @@
         }
       ]
-    },
-    "node_modules/quill": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.2.tgz",
-      "integrity": "sha512-QfazNrhMakEdRG57IoYFwffUIr04LWJxbS/ZkidRFXYCQt63c1gK6Z7IHUXMx/Vh25WgPBU42oBaNzQ0K1R/xw==",
-      "dependencies": {
-        "eventemitter3": "^5.0.1",
-        "lodash-es": "^4.17.21",
-        "parchment": "^3.0.0",
-        "quill-delta": "^5.1.0"
-      },
-      "engines": {
-        "npm": ">=8.2.3"
-      }
-    },
-    "node_modules/quill-delta": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz",
-      "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==",
-      "dependencies": {
-        "fast-diff": "^1.3.0",
-        "lodash.clonedeep": "^4.5.0",
-        "lodash.isequal": "^4.5.0"
-      },
-      "engines": {
-        "node": ">= 12.0.0"
-      }
-    },
-    "node_modules/quill/node_modules/eventemitter3": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
-      "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
     },
     "node_modules/raf": {
@@ -15839,4 +15706,5 @@
       "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.4.tgz",
       "integrity": "sha512-V14i8SEkh+V1gs6YtD0hdHYnoL4tp/HX/A45wWQN15CYr9bFRmmRdYStSO5L65lCCZRF+kYiSKhm9alqbcdiVA==",
+      "peer": true,
       "engines": {
         "node": ">=12.22.0"
@@ -15897,21 +15765,4 @@
       "engines": {
         "node": ">=0.10.0"
-      }
-    },
-    "node_modules/react-responsive-modal": {
-      "version": "6.4.2",
-      "resolved": "https://registry.npmjs.org/react-responsive-modal/-/react-responsive-modal-6.4.2.tgz",
-      "integrity": "sha512-ARjGEKE5Gu5CSvyA8U9ARVbtK4SMAtdXsjtzwtxRlQIHC99RQTnOUctLpl7+/sp1Kg1OJZ6yqvp6ivd4TBueEw==",
-      "dependencies": {
-        "@bedrock-layout/use-forwarded-ref": "^1.3.1",
-        "body-scroll-lock": "^3.1.5",
-        "classnames": "^2.3.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/pradel"
-      },
-      "peerDependencies": {
-        "react": "^16.8.0 || ^17 || ^18",
-        "react-dom": "^16.8.0 || ^17 || ^18"
       }
     },
@@ -16018,36 +15869,4 @@
       }
     },
-    "node_modules/react-select": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz",
-      "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==",
-      "dependencies": {
-        "@babel/runtime": "^7.12.0",
-        "@emotion/cache": "^11.4.0",
-        "@emotion/react": "^11.8.1",
-        "@floating-ui/dom": "^1.0.1",
-        "@types/react-transition-group": "^4.4.0",
-        "memoize-one": "^6.0.0",
-        "prop-types": "^15.6.0",
-        "react-transition-group": "^4.3.0",
-        "use-isomorphic-layout-effect": "^1.1.2"
-      },
-      "peerDependencies": {
-        "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
-        "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
-      }
-    },
-    "node_modules/react-toastify": {
-      "version": "10.0.5",
-      "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz",
-      "integrity": "sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==",
-      "dependencies": {
-        "clsx": "^2.1.0"
-      },
-      "peerDependencies": {
-        "react": ">=18",
-        "react-dom": ">=18"
-      }
-    },
     "node_modules/react-transition-group": {
       "version": "4.4.5",
@@ -18241,17 +18060,4 @@
         "querystringify": "^2.1.1",
         "requires-port": "^1.0.0"
-      }
-    },
-    "node_modules/use-isomorphic-layout-effect": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
-      "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
-      "peerDependencies": {
-        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
       }
     },
Index: jobvista-frontend/package.json
===================================================================
--- jobvista-frontend/package.json	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/package.json	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -8,5 +8,4 @@
     "@hookform/resolvers": "^3.3.4",
     "@mui/material": "^5.15.17",
-    "@react-oauth/google": "^0.12.1",
     "@reduxjs/toolkit": "^2.2.3",
     "@testing-library/jest-dom": "^5.17.0",
@@ -15,18 +14,11 @@
     "axios": "^1.6.8",
     "formik": "^2.4.6",
-    "jwt-decode": "^4.0.0",
-    "primereact": "^10.6.6",
-    "quill": "^2.0.2",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
-    "react-hook-form": "^7.51.4",
     "react-jwt": "^1.2.1",
     "react-redux": "^9.1.2",
-    "react-responsive-modal": "^6.4.2",
     "react-router": "^6.23.0",
     "react-router-dom": "^6.23.0",
     "react-scripts": "5.0.1",
-    "react-select": "^5.8.0",
-    "react-toastify": "^10.0.5",
     "redux": "^5.0.1",
     "redux-thunk": "^3.1.0",
Index: jobvista-frontend/public/index.html
===================================================================
--- jobvista-frontend/public/index.html	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/public/index.html	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -16,5 +16,5 @@
       user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
     -->
-<!--    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />-->
+    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
     <!--
       Notice the use of %PUBLIC_URL% in the tags above.
@@ -27,12 +27,5 @@
     -->
 
-    <!--    ICONS-->
     <link rel="preconnect" href="https://fonts.gstatic.com">
-    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
-    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" />
-    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" />
-
-<!--    GOOGLE-->
-    <script src="https://accounts.google.com/gsi/client" async defer></script>
     <title>Job Vista</title>
   </head>
Index: jobvista-frontend/src/App.css
===================================================================
--- jobvista-frontend/src/App.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/App.css	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -2,22 +2,13 @@
 @import url('https://fonts.googleapis.com/css2?family=Cabin:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap');
 
-* {
-  margin: 0;
-  padding: 0;
-  box-sizing: border-box;
+.App {
+  background-color: rgb(243, 242, 241);
+  height: 100vh;
 }
 
-html {
-  scroll-behavior: smooth;
-}
-
-.App {
-  /*background-color: rgb(243, 242, 241);*/
-  background-color: #E6E6E6;
-  /*background-color: #F4F2EE;*/
-  /*background-color: #0F0F0F;*/
-  /*background-color: #EBF2FC;*/
-  height: 100vh;
-  overflow-y: auto;
+.card {
+  border: 1px solid black;
+  border-radius: 5px;
+  padding: 10px;
 }
 
@@ -27,5 +18,5 @@
   -webkit-box-pack: center;
   justify-content: center;
-  margin-bottom: 20px;
+margin-bottom: 20px;
   margin-top: 20px;
 }
@@ -38,28 +29,8 @@
 
 .form-container {
-  font-family: "Segoe UI";
   background-color: white;
   border-radius: 10px;
   padding: 15px 30px;
-  margin-top: 40px;
-}
-
-
-.form-container h5, .form-container h3 {
-  text-align:center;
-  font-family: Poppins
-}
-
-.container {
-  width: 80% !important;
-  max-width: 1500px !important;
-}
-
-.container, .custom-container {
-  margin-top: 120px !important;
-}
-
-.no-additional-margin {
-  margin-top: 80px !important;
+  margin-top: 80px;
 }
 
@@ -67,167 +38,2 @@
 /*font-family: 'Ubuntu', sans-serif;*/
 /*font-family: 'Cairo', sans-serif;*/
-
-.react-responsive-modal-overlay {
-  backdrop-filter: blur(3px);
-}
-
-/*CARDS*/
-
-.col {
-  height: 280px !important;
-}
-
-.container .g-4 {
-  --bs-gutter-y: 6rem !important;
-  margin-bottom: 100px !important;
-}
-
-
-.add-new-card {
-  border-radius: 8px;
-  background-color: transparent;
-  border: 3px dashed grey;
-  transition: all 0.3s ease;
-  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
-  transform: translate(0, 0);
-  height: 270px;
-  width: 100%;
-  color: grey;
-  font-family: Ubuntu;
-  text-transform: uppercase;
-}
-.add-new-card h3 {
-  font-size: 25px;
-}
-.add-new-card:hover {
-  /*transform: translate(0, 8px);*/
-  /*box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);*/
-  color: black;
-  border: 3px dashed black;
-}
-
-.custom-card {
-  border-radius: 8px;
-  background-color: white;
-  transition: all 0.3s ease;
-  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
-  transform: translate(0, 0);
-  height: 360px;
-}
-
-.hub-card {
-  height: 270px !important;
-}
-
-.custom-card .card-foot {
-  position: absolute;
-  display: flex;
-  justify-content: center;
-  gap: 8px;
-  text-align: center;
-  height: auto;
-  width: 100%;
-  bottom: 20px;
-}
-
-
-
-
-.custom-card:hover {
-  transform: translate(0, 8px);
-  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
-}
-
-.custom-card .card-head {
-  padding: 25px;
-  padding-bottom: 0 !important;
-  height: 20%;
-}
-
-.custom-card .card-head .job-type {
-  font-size: 12px !important;
-  margin-left: 6px !important;
-  position: relative;
-  bottom: 3px;
-}
-
-.custom-card .card-head .expired {
-  font-size: 12px !important;
-  margin-left: 8px !important;
-  position: relative;
-  bottom: 3px;
-}
-
-.custom-card .card-head .card-management-btns {
-  float: right;
-  scale: 130%;
-  display: flex;
-  gap: 5px;
-  transition: 0.2s;
-}
-.custom-card .card-head .card-management-btns i:hover {
-  opacity: 0.5;
-  cursor: pointer;
-}
-
-.custom-card .card-body {
-  padding: 0 25px;
-  padding-top: 5px !important;
-  height: 50%;
-}
-.custom-card .card-body span{
-  font-size: 15px;
-}
-
-.custom-card .card-body .card-title {
-  margin-top: 10px;
-}
-
-
-.custom-card .card-body .card-title h5 {
-  display: inline;
-}
-
-
-.custom-card .card-body .hourly-salary {
-  margin-bottom: 30px;
-  display: inline;
-}
-
-.custom-card .card-body .card-info {
-  color: gray;
-  margin: 13px 0;
-}
-
-
-
-
-.card-button {
-  border: 0;
-  border-radius: 8px;
-  width: 45%;
-  background-image: linear-gradient(to bottom, #dddddd, #f0f0f0);
-  color: #333333;
-  font-weight: bold;
-  padding: 5px 10px;
-  transition: 0.2s;
-  text-decoration: none;
-  text-align: center;
-}
-
-.card-button:only-child {
-  width: 70%;
-}
-.card-button:not(.disabled):hover{
-  background: linear-gradient(to bottom, #bbbbbb, #dddddd);
-  color: #333333;
-}
-
-.card-company-logo {
-  border-radius: 15%
-}
-
-
-
-
-
Index: jobvista-frontend/src/App.js
===================================================================
--- jobvista-frontend/src/App.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/App.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,15 +1,11 @@
 import logo from './logo.svg';
 import './App.css';
-import {useDispatch, useSelector} from "react-redux";
+import {useDispatch} from "react-redux";
 import {BrowserRouter} from "react-router-dom";
 import {Header} from "./views/static/Header";
-import RoutesConfig from "./auth/RoutesConfig";
-import React, {useEffect, useState} from "react";
+import {RoutesConfig} from "./auth/RoutesConfig";
+import {useEffect} from "react";
 import {AuthActions} from "./redux/actions/authActions";
 import {AUTH_TOKEN} from "./axios/axiosInstance";
-import {jwtDecode} from "jwt-decode";
-import {NoAccess} from "./views/static/NoAccess";
-import {Loading} from "./views/static/Loading";
-import {ToastContainer} from "react-toastify";
 
 function App() {
@@ -20,64 +16,10 @@
     }, [dispatch])
 
-    const [user, setUser] = useState(null);
-    const [loading, setLoading] = useState(true);
-    const [minimumLoadingTime, setMinimumLoadingTime] = useState(true);
-
-    const auth = useSelector(state => state.auth);
-
-    useEffect(() => {
-        // Simulate a minimum loading time of 1 second
-        const timer = setTimeout(() => {
-            setMinimumLoadingTime(false);
-        }, 1000);
-
-        // Clear timeout if component unmounts
-        return () => clearTimeout(timer);
-    }, []);
-
-    useEffect(() => {
-        const token = localStorage.getItem(AUTH_TOKEN);
-        if (token !== null) {
-            try {
-                const decodedToken = jwtDecode(token);
-                setUser({
-                    name: decodedToken.name,
-                    role: decodedToken.role,
-                    hasAccess: decodedToken.access,
-                    id: decodedToken.id
-                });
-                setLoading(false);
-            } catch (error) {
-                console.error('Failed to decode token', error);
-                setLoading(false);
-            }
-        } else {
-            setLoading(false);
-        }
-    }, [auth]);
-
-    if (loading || minimumLoadingTime) {
-        return <Loading />; // Replace LoadingSpinner with your loading indicator component
-    }
-
   return (
       <div className="App">
           <BrowserRouter>
-              {user === null ? (
-                  <>
-                      <Header />
-                      <RoutesConfig />
-                  </>
-              ) : user.hasAccess ? (
-                  <>
-                      <Header />
-                      <RoutesConfig />
-                      {/*<Loading/>*/}
-                  </>
-              ) : (
-                  <NoAccess user={user}/>
-              )}
+              <Header/>
+              <RoutesConfig/>
           </BrowserRouter>
-          <ToastContainer/>
       </div>
   );
Index: jobvista-frontend/src/auth/RoutesConfig.js
===================================================================
--- jobvista-frontend/src/auth/RoutesConfig.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/auth/RoutesConfig.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,223 +1,17 @@
-import {Navigate, Route, Router, Routes} from 'react-router-dom'
+
+import {Route, Router, Routes} from 'react-router-dom'
 import {Dashboard} from "../views/dashboard/Dashboard";
 import {SignInForm} from "../views/auth/SignInForm";
 import {SignUpRecruiterForm} from "../views/auth/SignUpRecruiterForm";
 import {SignUpJobSeekerForm} from "../views/auth/SignUpJobSeekerForm";
-import {Workspace} from "../views/job_advertisements/JobManagementHub";
-import {JobAdDetails} from "../views/job_advertisements/JobAdDetails";
-import {ApplicationsByJobAd} from "../views/applications/ApplicationsByJobAd";
-import {ApplicationsByJobSeeker} from "../views/applications/ApplicationsByJobSeeker";
-
-import {AdminPanel} from "../views/admin_panel/AdminPanel";
-import {RecruiterProfile} from "../views/profiles/RecruiterProfile";
-import {AboutUs} from "../views/static/AboutUs";
-import {JobSeekerEditProfile} from "../views/profiles/JobSeekerEditProfile";
-import {RecruiterEditProfile} from "../views/profiles/RecruiterEditProfile";
-import Roles from "../enumerations/Roles";
-import {useSelector} from "react-redux";
-import {useEffect, useState} from "react";
-import {ErrorPage} from "../views/static/ErrorPage";
-import {NoAccess} from "../views/static/NoAccess";
-
-export const PrivateRoutes = [
-    {
-        component: AdminPanel,
-        path: '/admin-panel',
-        title: 'Admin Panel',
-        exact: true,
-        permission: [
-            Roles.ADMIN
-        ]
-    },
-    {
-        component: Workspace,
-        path: '/job-management-hub',
-        title: 'Job Management Hub',
-        exact: true,
-        permission: [
-            Roles.RECRUITER,
-        ]
-    },
-    {
-        component: ApplicationsByJobAd,
-        path: '/job-management-hub/applications/:advertisement_id',
-        title: 'Applications by Job Ad',
-        exact: true,
-        permission: [
-            Roles.RECRUITER
-        ]
-    },
-    {
-        component: ApplicationsByJobSeeker,
-        path: '/my-applications',
-        title: 'My Applications',
-        exact: true,
-        permission: [
-            Roles.JOBSEEKER
-        ]
-    },
-
-    {
-        component: JobSeekerEditProfile,
-        path: '/job-seeker/edit-profile',
-        title: 'Edit Job Seeker Profile',
-        exact: true,
-        permission: [
-            Roles.JOBSEEKER
-        ]
-    },
-    {
-        component: RecruiterEditProfile,
-        path: '/recruiter/edit-profile',
-        title: 'Edit Recruiter Profile',
-        exact: true,
-        permission: [
-            Roles.RECRUITER
-        ]
-    },
-]
-
-export const PublicRoutes = [
-    {
-        component: Dashboard,
-        path: "/",
-        exact: true,
-        permission: [
-            Roles.RECRUITER,
-            Roles.JOBSEEKER,
-            Roles.ADMIN,
-            Roles.GUEST
-        ]
-    },
-    {
-        component: SignInForm,
-        path: '/signin',
-        title: 'Sign In',
-        exact: true,
-        permission: [
-            Roles.GUEST,
-            Roles.RECRUITER,
-            Roles.JOBSEEKER,
-            Roles.ADMIN
-        ]
-    },
-
-    {
-        component: SignUpRecruiterForm,
-        path: '/signup/recruiter',
-        title: 'Sign Up as Recruiter',
-        permission: [
-            Roles.GUEST,
-            Roles.RECRUITER,
-            Roles.JOBSEEKER,
-            Roles.ADMIN
-        ]
-    },
-    {
-        component: SignUpJobSeekerForm,
-        path: '/signup/job-seeker',
-        title: 'Sign Up as Job Seeker',
-        permission: [
-            Roles.GUEST,
-            Roles.RECRUITER,
-            Roles.JOBSEEKER,
-            Roles.ADMIN
-        ]
-    },
-    {
-        component: JobAdDetails,
-        path: '/job-advertisements/:id',
-        title: 'Job Advertisement Details',
-        exact: true,
-        permission: [
-            Roles.RECRUITER,
-            Roles.JOBSEEKER,
-            Roles.ADMIN,
-            Roles.GUEST
-        ]
-    },
-    {
-        component: RecruiterProfile,
-        path: '/recruiters/:id',
-        title: 'Recruiter Profile',
-        exact: true,
-        permission: [
-            Roles.RECRUITER,
-            Roles.JOBSEEKER,
-            Roles.ADMIN,
-            Roles.GUEST
-        ]
-    },
-    {
-        component: AboutUs,
-        path: '/about',
-        title: 'About Us',
-        exact: true,
-        permission: [
-            Roles.GUEST,
-            Roles.RECRUITER,
-            Roles.JOBSEEKER,
-            Roles.ADMIN
-        ]
-    },
-    {
-        component: NoAccess,
-        path: '/no-access',
-        title: 'No Access',
-        exact: true,
-        permission: [
-            Roles.GUEST,
-            Roles.RECRUITER,
-        ]
-    },
-]
-
-const AllRoutes = [...PrivateRoutes, ...PublicRoutes];
-
-const filterRoutes = (roleParam) => {
-    return AllRoutes.filter(route => {
-        return route.permission.includes(roleParam);
-    });
-};
-const RoutesConfig = () => {
-    const currentUser = useSelector(state => state.auth.currentUser);
-    const [role, setRole] = useState(Roles.GUEST);
-
-    useEffect(() => {
-        if (currentUser) {
-            setRole(currentUser.role);
-        }
-    }, [currentUser]);
+export const RoutesConfig = () => {
 
     return (
-        <Routes>
-            {filterRoutes(role).map(route => (
-                <Route
-                    key={route.path}
-                    path={route.path}
-                    element={<route.component/>}
-                    exact={route.exact}
-                />
-            ))}
-            <Route path="*" element={<ErrorPage to="/"/>}/>
-        </Routes>
-
-        // <Routes>
-        //     <Route path="/" element={<Dashboard/>}></Route>
-        //     <Route path="/signin" element={<SignInForm/>}></Route>
-        //     <Route path="/signup/recruiter" element={<SignUpRecruiterForm/>}></Route>
-        //     <Route path="/signup/job-seeker" element={<SignUpJobSeekerForm/>}></Route>
-        //     <Route path="/job-management-hub" element={<Workspace/>}></Route>
-        //     <Route path="/my-applications" element={<ApplicationsByJobSeeker/>}></Route>
-        //     <Route path="/job-advertisements/:id" element={<JobAdDetails/>}></Route>
-        //     <Route path="/recruiters/:id" element={<RecruiterProfile/>}></Route>
-        //     <Route path="/job-management-hub/applications/:advertisement_id" element={<ApplicationsByJobAd/>}></Route>
-        //     <Route path="/admin-panel" element={<AdminPanel/>}></Route>
-        //     <Route path="/about" element={<AboutUs/>}></Route>
-        //     <Route path="/job-seeker/edit-profile" element={<JobSeekerEditProfile/>}></Route>
-        //     <Route path="/recruiter/edit-profile" element={<RecruiterEditProfile/>}></Route>
-        // </Routes>
+            <Routes>
+                <Route path="/" element={<Dashboard/>}></Route>
+                <Route path="/signin" element={<SignInForm/>}></Route>
+                <Route path="/signup/recruiter" element={<SignUpRecruiterForm/>}></Route>
+                <Route path="/signup/job-seeker" element={<SignUpJobSeekerForm/>}></Route>
+            </Routes>
     )
 }
-
-export default RoutesConfig
Index: bvista-frontend/src/enumerations/EmploymentStatus.js
===================================================================
--- jobvista-frontend/src/enumerations/EmploymentStatus.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,4 +1,0 @@
-export default {
-    FULL_TIME: 'Full-time',
-    PART_TIME: 'Part-time',
-};
Index: bvista-frontend/src/enumerations/JobType.js
===================================================================
--- jobvista-frontend/src/enumerations/JobType.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,4 +1,0 @@
-export default {
-    JOB: 'JOB',
-    INTERNSHIP: 'INTERNSHIP',
-};
Index: jobvista-frontend/src/enumerations/Roles.js
===================================================================
--- jobvista-frontend/src/enumerations/Roles.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/enumerations/Roles.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -14,4 +14,3 @@
     RECRUITER: 'ROLE_RECRUITER',
     JOBSEEKER: 'ROLE_JOBSEEKER',
-    GUEST: 'ROLE_GUEST'
 };
Index: jobvista-frontend/src/redux/actionTypes.js
===================================================================
--- jobvista-frontend/src/redux/actionTypes.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/redux/actionTypes.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -4,27 +4,2 @@
 export const UPDATE_TOKEN = "UPDATE_TOKEN"
 export const CURRENT_USER = "CURRENT_USER"
-
-export const ADD_JOB_ADVERTISEMENT = "ADD_JOB_ADVERTISEMENT"
-export const EDIT_JOB_ADVERTISEMENT = "EDIT_JOB_ADVERTISEMENT"
-export const DELETE_JOB_ADVERTISEMENT = "DELETE_JOB_ADVERTISEMENT"
-export const FETCH_JOB_ADVERTISEMENTS = "FETCH_JOB_ADVERTISEMENTS"
-export const FILTER_JOB_ADVERTISEMENTS = "FILTER_JOB_ADVERTISEMENTS"
-export const FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER = "FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER"
-export const FILTER_JOB_ADVERTISEMENTS_BY_RECRUITER = "FILTER_JOB_ADVERTISEMENTS_BY_RECRUITER"
-export const SUBMIT_APPLICATION = "SUBMIT_APPLICATION"
-export const UPDATE_APPLICATION = "UPDATE_APPLICATION"
-export const UPDATE_APPLICATION_STATUS = "UPDATE_APPLICATION_STATUS"
-export const UPDATE_APPLICATIONS = "UPDATE_APPLICATIONS"
-export const FETCH_APPLICATIONS_BY_JOB_ID = "FETCH_APPLICATIONS_BY_JOB_ID"
-export const FILTER_APPLICATIONS_BY_JOB_ID = "FILTER_APPLICATIONS_BY_JOB_ID"
-export const FETCH_APPLICATIONS_BY_JOB_SEEKER_ID = "FETCH_APPLICATIONS_BY_JOB_SEEKER_ID"
-export const FILTER_APPLICATIONS_BY_JOB_SEEKER_ID = "FILTER_APPLICATIONS_BY_JOB_SEEKER_ID"
-export const DOWNLOAD_RESUME = "DOWNLOAD_RESUME"
-
-export const FETCH_RECRUITERS = "FETCH_RECRUITERS"
-export const CHANGE_ACCESS = "CHANGE_ACCESS"
-export const SUBMIT_RECRUITER_LOGO = "SUBMIT_RECRUITER_LOGO"
-export const SUBMIT_RECRUITER_COVER = "SUBMIT_RECRUITER_COVER"
-export const SET_LOGO_URL = 'SET_LOGO_URL';
-export const SET_PROFILE_PIC_URL = 'SET_PROFILE_PIC_URL';
-
Index: bvista-frontend/src/redux/actions/JobSeekerActions.js
===================================================================
--- jobvista-frontend/src/redux/actions/JobSeekerActions.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,67 +1,0 @@
-import axios from "../../axios/axiosInstance";
-import {SET_PROFILE_PIC_URL} from "../actionTypes";
-
-export const JobSeekerActions = {
-
-    submitProfilePic: (formData, callback) => {
-        let jobSeekerId = formData.get("jobSeekerId");
-        let profilePicFile =  formData.get("profilePicFile")
-        return dispatch => {
-            axios.post("/job-seeker/submit-profile-pic", formData, {
-                headers: {
-                    'Content-Type': 'multipart/form-data'
-                }
-            })
-                .then(response => {
-                    const blob = new Blob([profilePicFile])
-                    const profilePicUrl = window.URL.createObjectURL(blob);
-                    dispatch({
-                        type: SET_PROFILE_PIC_URL,
-                        payload: {jobSeekerId, profilePicUrl}
-                    })
-                    callback(true, response)
-                }).catch(error => {
-                    callback(false, error)
-            })
-        }
-    },
-
-    downloadProfilePic: (jobSeekerId, callback) => {
-        return dispatch => {
-            return axios.get("/job-seeker/" + jobSeekerId + "/download-profile-pic", {responseType: "blob"})
-                .then(response => {
-                    const blob = new Blob([response.data])
-                    const profilePicUrl = window.URL.createObjectURL(blob);
-                    dispatch({
-                        type: SET_PROFILE_PIC_URL,
-                        payload: {jobSeekerId, profilePicUrl}
-                    });
-                    callback(true, profilePicUrl)
-                }).catch(error => {
-                    callback(false, error)
-                })
-        }
-    },
-
-    fetchJobSeekerEditDetailsById: (id, callback) => {
-        return dispatch => {
-            return axios.get("/job-seeker/"+id+"/edit-info")
-                .then(response => {
-                    callback(true, response)
-                }).catch(error => {
-                    callback(false, error)
-                })
-        }
-    },
-
-    editJobSeekerDetailsById: (data, id, callback) => {
-        return dispatch => {
-            return axios.post("/job-seeker/"+id+"/edit-info", data)
-                .then(response => {
-                    callback(true, response)
-                }).catch(error => {
-                    callback(false, error)
-                })
-        }
-    }
-}
Index: bvista-frontend/src/redux/actions/adminActions.js
===================================================================
--- jobvista-frontend/src/redux/actions/adminActions.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,36 +1,0 @@
-import axios from "../../axios/axiosInstance";
-import {CHANGE_ACCESS, FETCH_RECRUITERS} from "../actionTypes";
-
-export const AdminActions = {
-    fetchRecruiters: (callback) => {
-        return dispatch => {
-            axios.get("/admin/recruiters")
-                .then(response => {
-                dispatch({
-                    type: FETCH_RECRUITERS,
-                    recruiters: response.data
-                })
-                callback(true, response)
-            }).catch((error) => {
-                callback(false, error)
-            })
-        }
-    },
-    changeAccess: (recruiterId, access, callback) => {
-        return dispatch => {
-            axios.post("/admin/change-access/" + recruiterId, access, {
-                headers: {
-                    'Content-Type': 'application/json'
-                }
-            }).then(response => {
-                dispatch({
-                    type: CHANGE_ACCESS,
-                    recruiter: response.data
-                })
-                callback(true, response)
-            }).catch((error) => {
-                callback(false, error)
-            })
-        }
-    }
-}
Index: bvista-frontend/src/redux/actions/applicationActions.js
===================================================================
--- jobvista-frontend/src/redux/actions/applicationActions.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,168 +1,0 @@
-import axios from "../../axios/axiosInstance";
-import {
-    CURRENT_USER,
-    FETCH_APPLICATIONS_BY_JOB_ID,
-    FETCH_APPLICATIONS_BY_JOB_SEEKER_ID, FILTER_APPLICATIONS_BY_JOB_ID, FILTER_APPLICATIONS_BY_JOB_SEEKER_ID,
-    SUBMIT_APPLICATION, UPDATE_APPLICATION, UPDATE_APPLICATION_STATUS, UPDATE_APPLICATIONS
-} from "../actionTypes";
-
-export const ApplicationActions = {
-    submitApplication: (application, callback) => {
-        return dispatch => {
-            axios.post("/applications/submit", application, {
-                headers: {
-                    'Content-Type': 'multipart/form-data'
-                }
-            })
-                .then(response => {
-                    dispatch({
-                        type: SUBMIT_APPLICATION,
-                        application: response.data
-                    })
-                    callback(true, response)
-                }).catch(error => {
-                callback(false, error)
-                console.log(error)
-            })
-        }
-    },
-
-    updateApplication: (applicationId, additionalFiles, callback) => {
-        console.log(additionalFiles)
-        return dispatch => {
-            axios.post("/applications/"+ applicationId + "/update", additionalFiles, {
-                headers: {
-                    'Content-Type': 'multipart/form-data'
-                }
-            })
-                .then(response => {
-                    dispatch({
-                        type: UPDATE_APPLICATION,
-                        application: response.data
-                    })
-                    callback(true, response)
-                }).catch(error => {
-                callback(false, error)
-                console.log(error)
-            })
-        }
-    },
-    updateApplicationStatus: (id, status, callback) => {
-        console.log(status)
-        return dispatch => {
-            axios.post("/applications/" + id + "/update", {
-                id: id,
-                status: status
-            })
-                .then(response => {
-                    dispatch({
-                        type: UPDATE_APPLICATION_STATUS,
-                        application: response.data,
-                    })
-                    callback(true, response)
-                }).catch(error => {
-                callback(false, error)
-            })
-        }
-    },
-
-    updateApplications: (changes, callback) => {
-        return dispatch => {
-            axios.post("/applications/update", changes)
-                .then(response => {
-                    dispatch({
-                        type: UPDATE_APPLICATIONS,
-                        applications: response.data
-                    })
-                    callback(true, response)
-                }).catch(error => {
-                callback(false, error)
-            })
-        }
-    },
-
-    fetchApplicationsByJobSeeker: (jobSeekerId, callback) => {
-        return dispatch => {
-            axios.get("/my-applications/" + jobSeekerId)
-                .then(response => {
-                    dispatch({
-                        type: FETCH_APPLICATIONS_BY_JOB_SEEKER_ID,
-                        applicationsByJobSeeker: response.data
-                    })
-                    callback(true, response)
-                }).catch(error => {
-                callback(false, error)
-            })
-        }
-    },
-
-    filterApplicationsByJobSeeker: (jobSeekerId, status, callback) => {
-        return dispatch => {
-            axios.post("/my-applications/" + jobSeekerId + "/filtered", status)
-                .then(response => {
-                    dispatch({
-                        type: FILTER_APPLICATIONS_BY_JOB_SEEKER_ID,
-                        applicationsByJobSeeker: response.data
-                    })
-                    callback(true, response)
-                }).catch(error => {
-                callback(false, error)
-            })
-        }
-    },
-
-    fetchApplicationsByJobAdId: (jobAdId, callback) => {
-        return dispatch => {
-            axios.get("/job-advertisements/" + jobAdId + "/applications")
-                .then(response => {
-                        dispatch({
-                            type: FETCH_APPLICATIONS_BY_JOB_ID,
-                            applicationsByJobAdId: response.data
-                        })
-                        callback(true, response)
-                    }
-                ).catch(error => {
-                callback(false, error)
-            })
-        }
-    },
-
-    filterApplicationsByJobAdId: (jobAdId, status, callback) => {
-        return dispatch => {
-            axios.post("/job-advertisements/" + jobAdId + "/applications/filtered", status)
-                .then(response => {
-                        dispatch({
-                            type: FILTER_APPLICATIONS_BY_JOB_ID,
-                            applicationsByJobAdId: response.data
-                        })
-                        callback(true, response)
-                    }
-                ).catch(error => {
-                callback(false, error)
-            })
-        }
-    },
-    downloadResume: (id, callback) => {
-        return axios.get("/applications/" + id + "/download-resume", {responseType: "blob"})
-            .then(response => {
-                const blob = new Blob([response.data], {type: 'application/pdf'});
-                const url = window.URL.createObjectURL(blob);
-                callback(true, url);
-            })
-            .catch(error => {
-                callback(false, error)
-            })
-
-    },
-    downloadAdditionalFiles: (id, callback) => {
-        return axios.get("/applications/" + id + "/download-additional-files")
-            .then(response => {
-                const urls = response.data; // This will be a list of URLs
-                callback(true, urls);
-            })
-            .catch(error => {
-                callback(false, error);
-            });
-
-    }
-}
Index: jobvista-frontend/src/redux/actions/authActions.js
===================================================================
--- jobvista-frontend/src/redux/actions/authActions.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/redux/actions/authActions.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -36,30 +36,4 @@
     },
 
-    signInGoogle: (tokenId, callback) => {
-        return dispatch => {
-            axios.post("/auth/google", { tokenId })
-                .then(jwtResponse => {
-                    const response = jwtResponse.data;
-                    const token = response.token;
-                    const user = {
-                        name: response.name,
-                        role: response.role,
-                        access: response.hasAccess,
-                        id: response.id,
-                    };
-                    dispatch({
-                        type: SIGN_IN,
-                        payload: {
-                            token,
-                            user
-                        }
-                    });
-                    callback && callback(true);
-                }).catch(error => {
-                callback && callback(false, error);
-            });
-        };
-    },
-
     signIn: (email, password, callback) => {
         return dispatch => {
@@ -69,10 +43,9 @@
                 const response = jwtResponse.data;
                 const token = response.token;
-                //const refreshToken = response.refreshToken;
+                //const refreshToken = response.refreshToken; // Corrected typo
                 const user = {
+                    email: response.email,
                     name: response.name,
-                    role: response.role,
-                    access: response.hasAccess,
-                    id: response.id,
+                    role: response.role
                 };
                 dispatch({
Index: bvista-frontend/src/redux/actions/jobAdvertisementActions.js
===================================================================
--- jobvista-frontend/src/redux/actions/jobAdvertisementActions.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,137 +1,0 @@
-import axios from "../../axios/axiosInstance";
-import {
-    ADD_JOB_ADVERTISEMENT,
-    CURRENT_USER, DELETE_JOB_ADVERTISEMENT, EDIT_JOB_ADVERTISEMENT,
-    FETCH_JOB_ADVERTISEMENTS,
-    FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER, FILTER_JOB_ADVERTISEMENTS
-} from "../actionTypes";
-
-export const JobAdvertisementActions = {
-    addJobAdvertisement: (jobAdvertisement, callback) => {
-        return dispatch => {
-            axios.post("/job-advertisements/add", jobAdvertisement)
-                .then(response => {
-                    dispatch({
-                        type: ADD_JOB_ADVERTISEMENT,
-                        jobAdvertisement: response.data
-                    })
-                    callback(true)
-                }).catch((error) => {
-                console.error(error)
-                callback(false)
-            })
-        }
-    },
-    editJobAdvertisement: (jobAdvertisement, id, callback) => {
-        return dispatch => {
-            axios.put("/job-advertisements/edit/" + id, jobAdvertisement)
-                .then(response => {
-                    dispatch({
-                        type: EDIT_JOB_ADVERTISEMENT,
-                        jobAdvertisement: response.data
-                    })
-                    callback(true)
-                }).catch((error) => {
-                console.error(error)
-                callback(false)
-            })
-        }
-    },
-    deleteJobAdvertisement: (id, callback) => {
-        return dispatch => {
-            axios.delete("/job-advertisements/delete/" + id)
-                .then(response => {
-                    dispatch({
-                        type: DELETE_JOB_ADVERTISEMENT,
-                        id: id
-                    })
-                    callback(true)
-                }).catch(error => {
-                console.error(error)
-                callback(false)
-            })
-
-        }
-    },
-    fetchJobAdvertisementById: (id, callback) => {
-        axios.get("/job-advertisements/" + id)
-            .then(response => {
-                callback(true, response)
-            }).catch(error => {
-            callback(false, error)
-        })
-    },
-
-    fetchJobAdvertisements: (callback) => {
-        return dispatch => {
-            axios.get("/job-advertisements/all")
-                .then(response => {
-                    dispatch({
-                        type: FETCH_JOB_ADVERTISEMENTS,
-                        jobAdvertisements: response.data,
-                    })
-                    callback(true, response)
-                }).catch((error) => {
-                callback(false, error)
-            })
-        }
-    },
-    filterJobAdvertisements: (filter, callback) => {
-        axios.post("/job-advertisements/filtered", filter)
-            .then(response => {
-                callback(true, response)
-            }).catch((error) => {
-            callback(false, error)
-        })
-
-    },
-
-    fetchJobAdvertisementsByRecruiter: (recruiterId, callback) => {
-        return dispatch => {
-            let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER));
-            axios.get("/job-advertisements/recruiter/" + recruiterId)
-                .then(response => {
-                    dispatch({
-                        type: FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER,
-                        jobAdvertisementsByRecruiter: response.data,
-                    })
-                    callback(true, response)
-                }).catch((error) => {
-                callback(false, error)
-            })
-        }
-    },
-
-    fetchJobAdvertisementsByRecruiterProfile: (recruiterId, callback) => {
-        return dispatch => {
-            let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER));
-            axios.get("/job-advertisements/recruiter/" + recruiterId)
-                .then(response => {
-                    callback(true, response)
-                }).catch((error) => {
-                callback(false, error)
-            })
-        }
-    },
-
-    filterJobAdvertisementsByRecruiter: (id, filter, callback) => {
-
-        let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER));
-        axios.post("/job-advertisements/recruiter/" + id + "/filtered", filter)
-            .then(response => {
-                callback(true, response)
-            }).catch((error) => {
-            callback(false, error)
-        })
-
-    },
-
-    fetchRecruiterDetailsById: (id, callback) => {
-        axios.get("/recruiter/" + id + "/info")
-            .then(response => {
-                callback(true, response)
-            }).catch(error => {
-            callback(false, error)
-        })
-    }
-}
Index: bvista-frontend/src/redux/actions/recruiterActions.js
===================================================================
--- jobvista-frontend/src/redux/actions/recruiterActions.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,66 +1,0 @@
-
-import axios from "../../axios/axiosInstance";
-import {SET_LOGO_URL} from "../actionTypes";
-export const RecruiterActions =  {
-    submitLogo: (formData, callback) => {
-        let recruiterId = formData.get("recruiterId");
-        let logoFile =  formData.get("logoFile")
-        return dispatch => {
-            axios.post("/recruiter/submit-logo", formData, {
-                headers: {
-                    'Content-Type': 'multipart/form-data'
-                }
-            })
-                .then(response => {
-                    const blob = new Blob([logoFile])
-                    const logoUrl = window.URL.createObjectURL(blob);
-                    dispatch({
-                        type: SET_LOGO_URL,
-                        payload: { recruiterId, logoUrl }
-                    });
-                    callback(true, response)
-                }).catch(error => {
-                    callback(false, error)
-            })
-        }
-    },
-
-    downloadLogo: (recruiterId, callback) => {
-        return dispatch => {
-            return axios.get("/recruiter/" + recruiterId + "/download-logo", {responseType: "blob"})
-                .then(response => {
-                    const blob = new Blob([response.data])
-                    const logoUrl = window.URL.createObjectURL(blob);
-                    dispatch({
-                        type: SET_LOGO_URL,
-                        payload: { recruiterId, logoUrl }
-                    });
-                    callback(true, logoUrl);
-                }).catch(error => {
-                    callback(false, error)
-                })
-        }
-    },
-
-    fetchRecruiterEditDetailsById: (id, callback) => {
-        return dispatch => {
-            return axios.get("/recruiter/"+id+"/edit-info")
-                .then(response => {
-                    callback(true, response)
-                }).catch(error => {
-                    callback(false, error)
-                })
-        }
-    },
-
-    editRecruiterDetailsById: (data, id, callback) => {
-        return dispatch => {
-            return axios.post("/recruiter/"+id+"/edit-info", data)
-                .then(response => {
-                    callback(true, response)
-                }).catch(error => {
-                    callback(false, error)
-                })
-        }
-    }
-}
Index: bvista-frontend/src/redux/reducers/adminReducer.js
===================================================================
--- jobvista-frontend/src/redux/reducers/adminReducer.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,31 +1,0 @@
-import {CHANGE_ACCESS, FETCH_RECRUITERS} from "../actionTypes";
-import {sortElementsBy} from "../../utils/utils";
-
-const initialState = {
-    recruiters: [],
-}
-
-const AdminReducer = (state = initialState, action) => {
-    switch (action.type) {
-        case FETCH_RECRUITERS:
-            return {
-                ...state,
-                recruiters: sortElementsBy(action.recruiters, "registeredOn")
-            }
-        case CHANGE_ACCESS:
-            return {
-                ...state,
-                recruiters: state.recruiters.map(recruiter =>
-                recruiter.id === action.recruiter.id ?
-                    {...recruiter, hasAccess: action.recruiter.hasAccess} :
-                    recruiter
-                )
-            }
-        default:
-            return {
-                ...state,
-            };
-    }
-}
-
-export default AdminReducer
Index: bvista-frontend/src/redux/reducers/applicationReducer.js
===================================================================
--- jobvista-frontend/src/redux/reducers/applicationReducer.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,70 +1,0 @@
-import {
-    CURRENT_USER,
-    FETCH_APPLICATIONS_BY_JOB_ID,
-    FETCH_APPLICATIONS_BY_JOB_SEEKER_ID, FILTER_APPLICATIONS_BY_JOB_ID, FILTER_APPLICATIONS_BY_JOB_SEEKER_ID,
-    SUBMIT_APPLICATION, UPDATE_APPLICATION, UPDATE_APPLICATION_STATUS
-} from "../actionTypes";
-
-const initialState = {
-    applicationsByJobSeeker: [],
-    applicationsByJobAdId: []
-}
-
-let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER))
-
-export const ApplicationReducer = (state = initialState, action) => {
-    let applications;
-
-    switch (action.type) {
-        case SUBMIT_APPLICATION:
-            return {
-                ...state,
-                applicationsByJobSeeker: [...state.applicationsByJobSeeker, action.application]
-            }
-        case UPDATE_APPLICATION:
-            return {
-                ...state,
-                applicationsByJobSeeker: state.applicationsByJobSeeker.map(application =>
-                    application.id === action.application.id ?
-                        action.application : // Replace with the updated application
-                        application // Keep the old one
-                )
-            }
-        case UPDATE_APPLICATION_STATUS:
-            return {
-                ...state,
-                applicationsByJobAdId: state.applicationsByJobAdId.map(application =>
-                application.id === action.application.id ?
-                    {...application, status: action.application.status} :
-                    application
-                )
-            }
-        case FETCH_APPLICATIONS_BY_JOB_ID:
-            return {
-                ...state,
-                applicationsByJobAdId: action.applicationsByJobAdId
-            }
-        case FILTER_APPLICATIONS_BY_JOB_ID:
-            return {
-                ...state,
-                applicationsByJobAdId: action.applicationsByJobAdId
-            }
-
-        case FETCH_APPLICATIONS_BY_JOB_SEEKER_ID:
-            return {
-                ...state,
-                applicationsByJobSeeker: action.applicationsByJobSeeker
-            }
-        case FILTER_APPLICATIONS_BY_JOB_SEEKER_ID:
-            return {
-                ...state,
-                applicationsByJobSeeker: action.applicationsByJobSeeker
-            }
-        default:
-            return {
-                ...state,
-            };
-    }
-}
-
-export default ApplicationReducer
Index: jobvista-frontend/src/redux/reducers/authReducer.js
===================================================================
--- jobvista-frontend/src/redux/reducers/authReducer.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/redux/reducers/authReducer.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -3,5 +3,4 @@
 import {isExpired} from "react-jwt";
 import {CURRENT_USER, SIGN_IN, SIGN_OUT, UPDATE_TOKEN} from "../actionTypes";
-import {jwtDecode} from "jwt-decode";
 
 const initialState = {
@@ -14,5 +13,5 @@
         case SIGN_IN:
             localStorage.setItem(AUTH_TOKEN, action.payload.token);
-            //localStorage.setItem(CURRENT_USER, JSON.stringify(action.payload.user));
+            localStorage.setItem(CURRENT_USER, JSON.stringify(action.payload.user));
             return {
                 ...state,
@@ -22,24 +21,10 @@
         case UPDATE_TOKEN:
             let token = action.payload;
-            let decodedToken;
-            let currentUser = "";
-            if(token !=null) {
-                try {
-                    decodedToken = jwtDecode(token);
-                } catch (error) {
-                    console.log("Failed to decode token: " + error)
-                }
-            }
-
+            let currentUser = null
             if(!isExpired(token)) {
                 localStorage.setItem(AUTH_TOKEN, token);
-                currentUser = {
-                    name: decodedToken.name,
-                    role: decodedToken.role,
-                    access: decodedToken.access,
-                    id: decodedToken.id
-                };
+                currentUser = JSON.parse(localStorage.getItem(CURRENT_USER));
             } else {
-                //localStorage.removeItem(CURRENT_USER);
+                localStorage.removeItem(CURRENT_USER);
                 localStorage.removeItem(AUTH_TOKEN);
                 currentUser = "";
@@ -52,10 +37,11 @@
             };
         case SIGN_OUT:
-            //localStorage.removeItem(CURRENT_USER);
+            console.log("BRISAM")
+            localStorage.removeItem(CURRENT_USER);
             localStorage.removeItem(AUTH_TOKEN);
             return {
                 ...state,
-                currentUser: "",
-                token: "",
+                currentUser: null,
+                token: null
             }
 
Index: bvista-frontend/src/redux/reducers/imagesReducer.js
===================================================================
--- jobvista-frontend/src/redux/reducers/imagesReducer.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,32 +1,0 @@
-import {SET_LOGO_URL, SET_PROFILE_PIC_URL} from "../actionTypes";
-
-const initialState = {
-    profilePictures: {},
-    logos: {}
-}
-
-const ImagesReducer = (state = initialState, action) => {
-
-    switch (action.type) {
-        case SET_PROFILE_PIC_URL:
-            return{
-                ...state,
-                profilePictures: {
-                   ...state.profilePictures, [action.payload.jobSeekerId]: action.payload.profilePicUrl
-                }
-            }
-        case SET_LOGO_URL:
-            return {
-                ...state,
-                logos: {
-                    ...state.logos, [action.payload.recruiterId]: action.payload.logoUrl
-                }
-            }
-        default:
-            return {
-                ...state,
-            };
-    }
-}
-
-export default ImagesReducer
Index: bvista-frontend/src/redux/reducers/jobAdvertisementReducer.js
===================================================================
--- jobvista-frontend/src/redux/reducers/jobAdvertisementReducer.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,69 +1,0 @@
-import {
-    ADD_JOB_ADVERTISEMENT,
-    CURRENT_USER,
-    DELETE_JOB_ADVERTISEMENT,
-    EDIT_JOB_ADVERTISEMENT,
-    FETCH_JOB_ADVERTISEMENTS,
-    FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER,
-    FILTER_JOB_ADVERTISEMENTS,
-    FILTER_JOB_ADVERTISEMENTS_BY_RECRUITER,
-    SET_LOGO_URL
-} from "../actionTypes";
-import {sortElementsBy} from "../../utils/utils";
-import {useSelector} from "react-redux";
-
-const initialState = {
-    jobAdvertisements: [],
-    jobAdvertisementsByRecruiter: []
-}
-
-let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER))
-export const JobAdvertisementReducer = (state = initialState, action) => {
-    let jobAdvertisements;
-    let jobAdvertisementsByRecruiter;
-    switch (action.type) {
-        case ADD_JOB_ADVERTISEMENT:
-
-            return {
-                ...state,
-                jobAdvertisements: sortElementsBy([...state.jobAdvertisements, action.jobAdvertisement]),
-                jobAdvertisementsByRecruiter: sortElementsBy([...state.jobAdvertisementsByRecruiter, action.jobAdvertisement], "postedOn")
-            }
-        case EDIT_JOB_ADVERTISEMENT:
-            jobAdvertisements = state.jobAdvertisements.filter(jobAd => jobAd.id !== action.jobAdvertisement.id)
-            jobAdvertisementsByRecruiter = state.jobAdvertisementsByRecruiter.filter(jobAd => jobAd.id !== action.jobAdvertisement.id)
-
-            return {
-                jobAdvertisements: sortElementsBy([...jobAdvertisements, action.jobAdvertisement], "postedOn"),
-                jobAdvertisementsByRecruiter: sortElementsBy([...jobAdvertisementsByRecruiter, action.jobAdvertisement], "postedOn")
-            }
-        case DELETE_JOB_ADVERTISEMENT:
-            jobAdvertisements = state.jobAdvertisements.filter(jobAd => jobAd.id !== action.id)
-            jobAdvertisementsByRecruiter = state.jobAdvertisementsByRecruiter.filter(jobAd => jobAd.id !== action.id)
-
-            return {
-                jobAdvertisements: sortElementsBy([...jobAdvertisements], "postedOn"),
-                jobAdvertisementsByRecruiter: sortElementsBy([...jobAdvertisementsByRecruiter], "postedOn")
-            }
-
-        case FETCH_JOB_ADVERTISEMENTS:
-            return {
-                ...state,
-                jobAdvertisements: sortElementsBy(action.jobAdvertisements, "postedOn")
-            }
-
-
-        case FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER:
-            return {
-                ...state,
-                jobAdvertisementsByRecruiter: sortElementsBy(action.jobAdvertisementsByRecruiter, "postedOn")
-            }
-
-        default:
-            return {
-                ...state,
-            };
-    }
-}
-
-export default JobAdvertisementReducer
Index: jobvista-frontend/src/redux/store.js
===================================================================
--- jobvista-frontend/src/redux/store.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/redux/store.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -2,9 +2,5 @@
 import { combineReducers } from 'redux';
 import authReducer from "./reducers/authReducer";
-import jobAdReducer from "./reducers/jobAdvertisementReducer";
-import applicationReducer from "./reducers/applicationReducer"
-import adminReducer from "./reducers/adminReducer"
-import {AdminActions} from "./actions/adminActions";
-import ImagesReducer from "./reducers/imagesReducer";
+import { thunk } from 'redux-thunk';
 
 // const rootReducer = combineReducers({
@@ -19,9 +15,5 @@
 export const store = configureStore({
     reducer: {
-        auth: authReducer,
-        jobAd: jobAdReducer,
-        appl: applicationReducer,
-        admin: adminReducer,
-        images: ImagesReducer
+        auth: authReducer
     },
 });
Index: bvista-frontend/src/utils/toastUtils.js
===================================================================
--- jobvista-frontend/src/utils/toastUtils.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,190 +1,0 @@
-import { toast } from 'react-toastify';
-import 'react-toastify/dist/ReactToastify.css';
-
-
-export const notifyProfileEdit = () => {
-    toast.success(
-        <span>
-            Your details were successfully updated!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyProfilePicChange = () => {
-    toast.success(
-        <span>
-            Your profile picture was successfully changed!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyLogoChange = () => {
-    toast.success(
-        <span>
-            Your logo was successfully changed!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyJobAdEdit = () => {
-    toast.success(
-        <span>
-            Job advertisement updated successfully!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyJobAdPost = () => {
-    toast.success(
-        <span>
-            Job advertisement posted successfully!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyJobAdDelete = () => {
-    toast.success(
-        <span>
-            Job advertisement deleted successfully!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyAppStatusUpdate = () => {
-    toast.success(
-        <span>
-            Application/s updated successfully!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyJobAdApply = () => {
-    toast.success(
-        <span>
-            Your application was successfully sent!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyJobAdUpdate= () => {
-    toast.success(
-        <span>
-            Your application was successfully updated!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyAccessUpdate = (companyName) => {
-    toast.success(
-        <span>
-            {companyName}'s access was successfully changed!
-        </span>, {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        });
-}
-
-export const notifyIncorrectEmailOrPassword = () => {
-    toast.error(
-        <span>Incorrect email or password. Please try again.</span>,
-        {
-            position: "bottom-right",
-            autoClose: 5000,
-            hideProgressBar: false,
-            closeOnClick: true,
-            pauseOnHover: false,
-            draggable: true,
-            progress: undefined,
-            theme: "dark",
-            pauseOnFocusLoss: false
-        }
-    );
-}
Index: bvista-frontend/src/utils/utils.js
===================================================================
--- jobvista-frontend/src/utils/utils.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,38 +1,0 @@
-
-
-export const sortElementsBy = (array, column) => {
-    return array.slice().sort((a, b) => {
-        return new Date(b[column]).getTime() - new Date(a[column]).getTime()
-    });
-}
-
-export const formatRelativeTime = (dateString) => {
-    const date = new Date(dateString);
-    const now = new Date();
-    const diffTime = now - date;
-
-    const minute = 60 * 1000;
-    const hour = minute * 60;
-    const day = hour * 24;
-    const week = day * 7;
-    const month = day * 30;
-
-    if (diffTime < minute) {
-        return 'just now';
-    } else if (diffTime < hour) {
-        const minutes = Math.floor(diffTime / minute);
-        return `${minutes} ${minutes === 1 ? 'min' : 'min'} ago`;
-    } else if (diffTime < day) {
-        const hours = Math.floor(diffTime / hour);
-        return `${hours} ${hours === 1 ? 'hour' : 'hours'} ago`;
-    } else if (diffTime < week) {
-        const days = Math.floor(diffTime / day);
-        return `${days} ${days === 1 ? 'day' : 'days'} ago`;
-    } else if (diffTime < month) {
-        const weeks = Math.floor(diffTime / week);
-        return `${weeks} ${weeks === 1 ? 'week' : 'weeks'} ago`;
-    } else {
-        const months = Math.floor(diffTime / month);
-        return `${months} ${months === 1 ? 'month' : 'months'} ago`;
-    }
-}
Index: bvista-frontend/src/views/admin_panel/AdminPanel.css
===================================================================
--- jobvista-frontend/src/views/admin_panel/AdminPanel.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,61 +1,0 @@
-.table {
-
-}
-
-.table tbody tr:nth-child(even) {
-    background-color: #fff; /* Light gray */
-}
-
-.table tbody tr:nth-child(odd) {
-    background-color: #f2f2f2; /* White */
-}
-/* The switch - the box around the slider */
-.switch {
-    font-size: 12px;
-    position: relative;
-    display: inline-block;
-    width: 3.5em;
-    height: 2em;
-}
-
-/* Hide default HTML checkbox */
-.switch input {
-    opacity: 0;
-    width: 0;
-    height: 0;
-}
-.slider {
-    position: absolute;
-    cursor: pointer;
-    inset: 0;
-    background: #DB5A57;
-    border-radius: 50px;
-    transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
-}
-
-.slider:before {
-    position: absolute;
-    content: "";
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 2em;
-    width: 2em;
-    inset: 0;
-    background-color: white;
-    border-radius: 50px;
-    box-shadow: 0 10px 20px rgba(0,0,0,0.3);
-    transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
-}
-
-.switch input:checked + .slider {
-    background: #3DDC69;
-}
-
-.switch input:focus + .slider {
-    box-shadow: 0 0 1px #3DDC69;
-}
-
-.switch input:checked + .slider:before {
-    transform: translateX(1.6em);
-}
Index: bvista-frontend/src/views/admin_panel/AdminPanel.js
===================================================================
--- jobvista-frontend/src/views/admin_panel/AdminPanel.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,93 +1,0 @@
-import "./AdminPanel.css"
-
-import {useDispatch, useSelector} from "react-redux";
-import {useState, useEffect} from "react";
-import {AdminActions} from "../../redux/actions/adminActions";
-import {notifyAccessUpdate} from "../../utils/toastUtils";
-
-export const AdminPanel = () => {
-
-    const dispatch = useDispatch();
-    const [recruiters, setRecruiters] = useState([]);
-    let recruitersState = useSelector(state => state.admin.recruiters)
-    const [dispatched, setDispatched] = useState(false)
-
-    useEffect(() => {
-        if(!dispatched && recruitersState.length == 0) {
-            dispatch(AdminActions.fetchRecruiters((success, response) => {
-                if(success && response.data.length > 0) {
-                    setRecruiters(response.data)
-                }
-                setDispatched(true)
-                console.log("Fetch all recruiters GET")
-            }))
-        } else {
-            setRecruiters(recruitersState)
-            console.log("Fetch all recruiters STATE")
-            console.log(recruitersState)
-
-        }
-    }, [recruitersState])
-
-    const formatDate = (dateString) => {
-        const options = { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' };
-        return new Date(dateString).toLocaleDateString('en-US', options);
-    };
-
-    const handleAccessChange = (recruiterId, companyName, newAccessStatus) => {
-
-        setRecruiters(prevState =>
-            prevState.map(recruiter =>
-                recruiter.id === recruiterId
-                    ? { ...recruiter, hasAccess: newAccessStatus }
-                    : recruiter
-            )
-        );
-
-        dispatch(AdminActions.changeAccess(recruiterId, newAccessStatus, (success, response) => {
-            if(success) {
-                notifyAccessUpdate(companyName)
-            }
-        }));
-    };
-
-    return (
-        <div className="custom-container mt-5">
-            <table className="table">
-                <thead>
-                <tr>
-                    <th scope="col">ID</th>
-                    <th scope="col">Registered on</th>
-                    <th scope="col">Email</th>
-                    <th scope="col">Company Name</th>
-                    <th scope="col">Phone Number</th>
-                    <th scope="col">Access</th>
-                </tr>
-                </thead>
-                <tbody>
-                {recruitersState.map((recruiter) => (
-                    <tr key={recruiter.id}>
-                        <th scope="row">{recruiter.id}</th>
-                        <td>{formatDate(recruiter.registeredOn)}</td>
-                        <td>{recruiter.email}</td>
-                        <td>{recruiter.companyName}</td>
-                        <td>{recruiter.contactPhoneNumber}</td>
-                        <td>
-                            <label className="switch">
-                                <input
-                                    type="checkbox"
-                                    checked={recruiter.hasAccess}
-                                    onChange={(e) => handleAccessChange(recruiter.id, recruiter.companyName, e.target.checked)}
-                                />
-                                <span className="slider"></span>
-                            </label>
-                        </td>
-
-
-                    </tr>
-                ))}
-                </tbody>
-            </table>
-        </div>
-    )
-}
Index: bvista-frontend/src/views/applications/ApplicationDetailsModal.js
===================================================================
--- jobvista-frontend/src/views/applications/ApplicationDetailsModal.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,177 +1,0 @@
-import React, {useEffect, useState} from "react";
-import "../shared_css/Modal.css";
-
-import 'react-responsive-modal/styles.css';
-import {Modal} from 'react-responsive-modal';
-import Select from "react-select";
-
-//Validation
-import * as yup from "yup";
-import {yupResolver} from "@hookform/resolvers/yup";
-import {Controller, useForm} from "react-hook-form";
-
-
-import {employmentStatusOptions, industryOptions, jobTypeOptions} from "../selectOptions";
-import {useDispatch, useSelector} from "react-redux";
-import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions";
-import Roles from "../../enumerations/Roles";
-import {ApplicationActions} from "../../redux/actions/applicationActions";
-import {notifyJobAdApply, notifyJobAdUpdate} from "../../utils/toastUtils";
-
-
-export const ApplicationDetailsModal = (props) => {
-    const {application} = props
-    const [modal, setModal] = useState(false);
-    const dispatch = useDispatch();
-    const auth = useSelector(state => state.auth.currentUser)
-    const [resumeUrl, setResumeUrl] = useState("");
-    const [additionalFileUrls, setAdditionalFileUrls] = useState([]);
-
-    const [additionalFiles, setAdditionalFiles] = useState(null);
-    const toggleModal = () => {
-        setModal(!modal);
-    };
-
-    const {register, handleSubmit, control, formState: {errors}} = useForm();
-
-    useEffect(() => {
-        if (application) {
-            ApplicationActions.downloadResume(application.id, (success, response) => {
-                if (success) {
-                    setResumeUrl(response);
-
-                    if (application.additionalFileNames.length > 0) {
-                        ApplicationActions.downloadAdditionalFiles(application.id, (success2, response) => {
-                            if (success2) {
-                                setAdditionalFileUrls(response);
-                            }
-                        })
-                    }
-                }
-            })
-        }
-    }, [])
-
-    const updateApplication = async () => {
-        try {
-            const formData = new FormData();
-            if (additionalFiles && additionalFiles.length > 0) {
-                for (let i = 0; i < additionalFiles.length; i++) {
-                    formData.append('additionalFiles', additionalFiles[i]);
-                }
-            }
-
-            dispatch(ApplicationActions.updateApplication(application.id, formData, (success) => {
-                if (success) {
-                    toggleModal()
-                    window.location.reload()
-                }
-            }))
-        } catch (err) {
-            console.error(err)
-        }
-    }
-
-    function getFileName(path) {
-        let fileName = path.split('\\').pop().split('/').pop();
-
-        fileName = fileName.trim();
-
-        return fileName;
-    }
-
-    return (<div className="modal-wrap">
-        {auth.role === Roles.RECRUITER ? <button onClick={toggleModal} className="application-button">View
-            application</button> : (application.status === "UNDER_REVIEW" && application.response.length > 0 && additionalFileUrls.length === 0) ?
-            <button onClick={toggleModal} className="application-button">Update application</button> :
-            <button onClick={toggleModal} className="application-button">View application</button>}
-
-        <Modal open={modal} onClose={toggleModal} center>
-            <div className="head-modal">
-                <h3>{application.jobSeekerName}'s application for {application.jobAdTitle}</h3>
-                <i className="fa-solid fa-x btn-close-modal" onClick={toggleModal}></i>
-            </div>
-
-            <div className="modal-content">
-                <form onSubmit={handleSubmit(updateApplication)}>
-                    <div className="row">
-                        <div className="col-md-6 d-flex flex-column gap-4">
-                            <div>
-                                <label className="label">Why are you interested in joining our company?</label>
-                                <textarea disabled type="text" defaultValue={application.questionAnswers[0]} disabled
-                                          placeholder="Write your answer here..." className="application-textarea"/>
-                            </div>
-
-                            <div>
-                                <label className="label">What makes you a good fit for this position?</label>
-                                <textarea disabled type="text" defaultValue={application.questionAnswers[1]}
-                                          placeholder="Write your answer here..." className="application-textarea"/>
-                            </div>
-
-                            <div>
-                                <label className="label">What do you hope to achieve in your first 6 months in this
-                                    role?</label>
-                                <textarea disabled type="text" defaultValue={application.questionAnswers[2]}
-                                          placeholder="Write your answer here..." className="application-textarea"/>
-                            </div>
-
-
-                        </div>
-                        <div className="col-md-6 d-flex flex-column gap-4">
-                            <div>
-                                <label className="label" htmlFor="start">Curriculum vitae (CV)</label>
-
-                                <a className="resume-link" href={resumeUrl} target="_blank"
-                                   rel="noopener noreferrer">{getFileName(application.fileName)}</a>
-                            </div>
-
-                            <div>
-                                <label className="label">Message to the recruiter</label>
-                                <textarea disabled type="text" defaultValue={application.message}
-                                          placeholder="Optional..."
-                                          className="application-textarea"/>
-                            </div>
-
-
-                            {additionalFileUrls.length > 0 ? (<div>
-                                    <label className="label" htmlFor="start">Additional documents</label>
-                                    <ul style={{listStyleType: "none", padding: 0, margin: 0}}>
-                                        {additionalFileUrls.map((url, index) => (
-                                            <li style={{marginBottom: 10}} key={index}>
-                                                <a href={url} className="resume-link" download target="_blank">
-                                                    {getFileName(url)}
-                                                </a>
-                                            </li>))}
-                                    </ul>
-                                </div>) : (<div>
-                                    {(application.status === "UNDER_REVIEW" && application.response.length > 0 && auth.role == Roles.JOBSEEKER) &&
-                                        <div>
-                                            <label className="label" htmlFor="start">Additional documents</label>
-                                            <input
-                                                className="resume-link"
-                                                onChange={(e) => setAdditionalFiles(e.target.files)}
-                                                required type="file"
-                                                id="fileUpload"
-                                                accept=".pdf"
-                                                multiple
-                                            />
-                                        </div>}
-                                </div>
-                            )}
-
-
-                        </div>
-                    </div>
-                    {(additionalFileUrls.length  === 0 && application.status === "UNDER_REVIEW" && application.response.length > 0 && auth.role == Roles.JOBSEEKER) &&
-                        <div className="modal-buttons">
-                            <div className="cancel-btn" onClick={toggleModal}> Cancel</div>
-                            <button className="submit-btn"> Submit</button>
-                        </div>}
-
-                </form>
-
-
-            </div>
-        </Modal>
-    </div>)
-}
Index: bvista-frontend/src/views/applications/Applications.css
===================================================================
--- jobvista-frontend/src/views/applications/Applications.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,255 +1,0 @@
-.custom-container {
-    width: 65% !important;
-    max-width: 1500px !important;
-    margin: auto;
-}
-
-.application-title {
-    font-family: "Segoe UI";
-    margin-top: 40px;
-    margin-bottom: 20px;
-    display: flex;
-    justify-content: start;
-    border-bottom: 1px solid #CFCFCF;
-}
-.application-title h3 {
-    font-weight: 500;
-}
-
-.response-message {
-    background-color: floralwhite;
-    border-radius: 8px;
-    padding: 15px;
-    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
-}
-
-
-
-
-.application-card-wrapper {
-    margin: 15px 0;
-    display: flex;
-    flex-direction: column;
-    transition: all 0.4s ease-in-out;
-    gap: 3px;
-}
-
-.application-card.changed {
-    background-color: aliceblue;
-}
-
-.application-card-wrapper .expand-section {
-    max-height: 0;
-    opacity: 0;
-    transition: 0.5s ease;
-    display: flex;
-    flex-direction: column;
-    align-items: flex-end;
-    margin: 0 !important;
-}
-
-.application-card-wrapper.expanded .expand-section {
-    max-height: 200px;
-    opacity: 1;
-    transform: translateY(0);
-    margin-top: 10px;
-  /*  transition: max-height 0.3s ease, opacity 0.3s ease, transform 0.3s ease;*/
-}
-
-.expand-section textarea {
-    width: 100%;
-    padding: 10px;
-    border-radius: 8px;
-    border: 1px solid #ccc;
-}
-
-
-.application-card {
-    font-family: Poppins;
-     border: 1px solid lightgray;
-    border-radius: 8px;
-    background-color: white;
-    transition: all 0.3s ease;
-    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
-    /*height: auto;*/
-    padding: 20px 20px;
-    display: flex;
-}
-.application-card .app-job-seeker-pic {
-    border: 1px solid gray;
-    border-radius: 50%;
-    margin-right: 20px;
-}
-.application-card .app-job-seeker-pic img {
-    border-radius: 50%;
-}
-
-.application-card .app-company-logo {
-    width: 8%;
-}
-
-.application-card .app-info {
-    width: 60%;
-    display: inline-flex;
-    flex-direction: column;
-    align-items: flex-start;
-    justify-content: center;
-    gap: 10px;
-}
-
-.application-card .app-info .jobAd-title {
-    font-weight: 600;
-    font-size: 1.2rem;
-    /*text-transform: uppercase;*/
-    font-family: 'Segoe UI', sans-serif;
-    text-decoration: none;
-    color: black
-}
-
-.
-
-.application-card .app-info .contact-info {
-    display: inline-flex;
-    gap: 30px;
-}
-.application-card .app-info .contact-info .contact-item {
-    display: inline-flex;
-    align-items: center;
-    gap: 5px;
-    margin-right: 10px
-}
-
-.application-card .app-info .contact-info .contact-item span {
-   color: darkgray;
-}
-
-.application-card .app-status {
-    width: 38%;
-    display: inline-flex;
-    justify-content: end;
-    align-items: center;
-    gap: 10px;
-}
-
-.application-card .app-status .select {
-    width: 45%;
-    display: inline-block;
-}
-
-.app-status .status {
-    color: white;
-    padding: 5px 10px;
-    border-radius: 5px;
-    width: 150px;
-    text-align: center;
-}
-
-
-
-
-
-
-
-
-.application-button {
-    border: 0;
-    border-radius: 8px;
-    width: auto;
-    background-image: linear-gradient(to bottom, #dddddd, #f0f0f0);
-    background-color: #dddddd;
-    color: #333333;
-
-    font-weight: 700;
-    padding: 8px 13px;
-}
-
-.application-button:hover {
-    background: linear-gradient(to bottom, #bbbbbb, #dddddd);
-    color: #333333;
-}
-
-/*.application-card:hover {*/
-/*    transform: translate(0, 8px);*/
-/*    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);*/
-/*}*/
-
-.multi-button button{
-    /*font-size: 5vmin;*/
-    padding: .5em 1em;
-    background: #fff;
-    color: #4A5568;
-    border: 0px solid #A0AEC0;
-    //margin: .1em;
-    transition: background .2s ease, color .2s ease, box-shadow .2s ease, transform .2s ease;
-    box-shadow: 0 0 0 #BEE3F8;
-    transform: translateY(0);
-}
-.multi-button button:first-of-type{
-    border-radius: .5em 0 0 .5em;
-}
-.multi-button button:last-of-type{
-    border-radius: 0 .5em .5em 0;
-}
-.multi-button button i{
-    color: #A0AEC0;
-    margin-right: .3em;
-    transition: all .2s ease-out;
-}
-.multi-button:hover button{
-    color: #A0AEC0;
-}
-
-.multi-button:hover button:hover{
-    background: #D53F8C;
-    color: #fff;
-    box-shadow: 0 0 0.8em 0 rgba(213, 63, 140, .8);
-    transform: translateY(-.2em);
-}
-.multi-button:hover button i{
-    color: #CBD5E0;
-}
-.multi-button:hover button:hover i{
-    color: #FED7E2;
-    transform: rotate(-10deg);
-}
-
-.application-filters {
-    gap: 15px;
-    border-radius: 8px;
-    background-color: white;
-}
-
-/* Default Span Styles */
-.application-filters span {
-    padding: 8px 12px;
-    border-radius: 5px;
-    color: rgba(1,38,90,0.9);
-    cursor: pointer;
-    display: inline-flex;
-    align-items: center;
-}
-
-/* Icon Styles */
-.application-filters span i {
-    margin-right: 5px;
-}
-
-/* Hover Effect */
-.application-filters span:hover {
-    background-color: rgba(1,38,90,0.9);
-    color: white;
-}
-
-.application-filters span:hover i {
-    color: inherit; /* Makes the icon inherit the color from the parent span */
-}
-
-/* Selected State */
-.application-filters span.selected {
-    background-color: rgba(1,38,90,0.9);
-    color: white;
-}
-
-.application-filters span.selected i {
-    color: inherit; /* Ensures icon color matches the selected state */
-}
Index: bvista-frontend/src/views/applications/ApplicationsByJobAd.js
===================================================================
--- jobvista-frontend/src/views/applications/ApplicationsByJobAd.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,269 +1,0 @@
-import {useDispatch, useSelector} from "react-redux";
-import {useEffect, useState} from "react";
-import {useParams} from "react-router";
-import {ApplicationActions} from "../../redux/actions/applicationActions";
-import {ApplicationDetailsModal} from "./ApplicationDetailsModal";
-import "./Applications.css"
-import Select from "react-select";
-import {sortElementsBy} from "../../utils/utils";
-import {JobSeekerActions} from "../../redux/actions/JobSeekerActions";
-import {notifyAppStatusUpdate} from "../../utils/toastUtils";
-
-export const ApplicationsByJobAd = () => {
-
-    const dispatch = useDispatch();
-    let {advertisement_id} = useParams();
-
-    const [applicationsByJobAd, setApplicationsByJobAd] = useState([]);
-    let applicationsByJobAdState = useSelector(state => state.appl.applicationsByJobAdId)
-    const [dispatched, setDispatched] = useState(false);
-
-    const [profilePics, setProfilePics] = useState({});
-    let profilePicsState = useSelector(state => state.images.profilePictures)
-    const [profilePicsDispatched, setProfilePicsDispatched] = useState(false);
-
-    const [jobAdTitle, setJobAdTitle] = useState("");
-
-    const [changedApplications, setChangedApplications] = useState({});
-
-    useEffect(() => {
-        if(!dispatched) {
-            dispatch(ApplicationActions.fetchApplicationsByJobAdId(advertisement_id, (success, reponse) => {
-                if (success && reponse.data.length > 0) {
-                    setApplicationsByJobAd(sortElementsBy(reponse.data, "submittedOn"))
-                    setJobAdTitle(reponse.data[0].jobAdTitle)
-                }
-                setDispatched(true)
-                console.log("Fetch applications by job ad GET")
-            }))
-        } else {
-            setApplicationsByJobAd(sortElementsBy(applicationsByJobAdState, "submittedOn"));
-            if(applicationsByJobAdState.length > 0) {
-                setJobAdTitle(applicationsByJobAdState[0].jobAdTitle)
-            }
-
-        }
-
-    }, [applicationsByJobAdState])
-
-    useEffect(() => {
-        if(dispatched && !profilePicsDispatched) {
-            applicationsByJobAd.forEach(app => {
-                if(app.jobSeekerId && !profilePics[app.jobSeekerId]) {
-                    fetchProfilePic(app.jobSeekerId)
-                }
-            })
-            setProfilePicsDispatched(true);
-            console.log("Fetch all profile pics GET")
-        } else if(profilePicsDispatched) {
-            setProfilePics(profilePicsState)
-            console.log("Fetch all profile pics STATE")
-        }
-    }, [dispatched])
-
-
-    const fetchProfilePic = (jobSeekerId) => {
-        dispatch(JobSeekerActions.downloadProfilePic(jobSeekerId, (success, response) => {
-            if(success) {
-                setProfilePics(prevState => ({...prevState, [jobSeekerId]: response}))
-            }
-        }))
-    }
-
-    const options = [
-        {value: 'PROPOSED', label: <span><i className="fa-solid fa-paper-plane"></i> Proposed</span>},
-        {value: 'UNDER_REVIEW', label: <span><i className="fa-solid fa-file-pen"></i> Under Review</span>},
-        {value: 'ACCEPTED', label: <span><i className="fa-solid fa-user-check"></i> Accepted</span>},
-        {value: 'DENIED', label: <span><i className="fa-solid fa-user-slash"></i> Denied</span>}
-    ];
-
-    const [selectedFilter, setSelectedFilter] = useState('All');
-
-    const filters = [
-        { value: 'ALL', label: 'All', icon: 'fa-folder-open' },
-        { value: 'PROPOSED', label: 'Proposed', icon: 'fa-paper-plane' },
-        { value: 'UNDER_REVIEW', label: 'Under Review', icon: 'fa-file-pen' },
-        { value: 'ACCEPTED', label: 'Accepted', icon: 'fa-user-check' },
-        { value: 'DENIED', label: 'Denied', icon: 'fa-user-slash' },
-    ];
-
-    const filterApplicationsByJobAdvertisement = (filter) => {
-        dispatch(ApplicationActions.filterApplicationsByJobAdId(advertisement_id, filter, (success, response) => {
-            if(success) {
-                //notify
-            }
-        }))
-    }
-
-    let handleDefaultStatus = (status) => {
-        return options.find(option => option.value === status);
-    }
-
-    let handleStatusChange = (selectedOption, id) => {
-
-        const currentApplication = applicationsByJobAd.find(app => app.id === id);
-
-        setChangedApplications(prevState => ({
-            ...prevState,
-            [id]: {
-                ...prevState[id],
-                response: (selectedOption.value === "ACCEPTED" || selectedOption.value === "DENIED") ? (prevState[id]?.response || currentApplication.response || "") : "",
-                status: selectedOption.value
-            }
-        }))
-
-       setApplicationsByJobAd(prevState => (
-           prevState.map(application =>
-           application.id === id ? {...application, status: selectedOption.value} : application)
-       ))
-
-        const responseTextarea = document.getElementById(`response-${id}`);
-        if (responseTextarea) {
-            responseTextarea.value = "";
-        }
-
-       /* dispatch(ApplicationActions.updateApplicationStatus(id, selectedOption.value, (success, response) => {
-            if(success) {
-                notifyAppStatusUpdate()
-            }
-        }))*/
-    }
-
-    let handleResponseChange = (e, id) => {
-
-        const currentApplication = applicationsByJobAd.find(app => app.id === id);
-
-        setChangedApplications(prevState => ({
-                ...prevState,
-                [id]: {
-                    ...prevState[id],
-                    response: e.target.value,
-                    status: prevState[id]?.status || currentApplication.status,
-                }
-            }
-        ))
-    }
-
-    const handleSaveChanges = () => {
-        console.log(changedApplications)
-       const changes = Object.entries(changedApplications).map(
-           ([applicationId, change]) => ({
-               id: applicationId,
-               status: change.status,
-               response: change.response,
-           })
-       );
-        console.log(changes)
-
-       if(changes.length === 0) {
-           return;
-       }
-
-       dispatch(ApplicationActions.updateApplications(changes, (success, response) => {
-           if(success) {
-               setChangedApplications({});
-               notifyAppStatusUpdate()
-               //notify change success
-           }
-       }))
-
-
-    }
-
-    const isChangedApplication = (id) => {
-        return changedApplications && Object.keys(changedApplications).includes(id.toString());
-    };
-
-
-    return (<div className="custom-container">
-        <div className="application-title">
-            {jobAdTitle ?
-                <h3>Applications for <b>{jobAdTitle}</b></h3> :
-                <h1></h1>
-            }
-        </div>
-
-        <div className="row">
-            <div className="col-md-6 application-filters-wrap">
-                <div className="application-filters d-inline-flex flex-row justify-content-start">
-                    {
-                        filters.map(filter => (
-                            <span
-                                key={filter.label}
-                                className={selectedFilter === filter.label ? "selected" : ""}
-                                onClick={() => {
-                                    setSelectedFilter(filter.label)
-                                    filterApplicationsByJobAdvertisement(filter.value)
-                                    setChangedApplications({});
-                                }}
-                            ><i className={`fa-solid ${filter.icon}`}></i> {filter.label}</span>
-                        ))
-                    }
-                </div>
-
-            </div>
-            <div className="col-md-6 d-inline-flex flex-row justify-content-end">
-                <button onClick={handleSaveChanges}
-                        className={`blue-submit-button ${Object.keys(changedApplications).length === 0 ? 'disabled' : ''}`}
-                        disabled={Object.keys(changedApplications).length === 0}
-                >Submit Changes</button>
-            </div>
-        </div>
-
-
-
-        {applicationsByJobAd && applicationsByJobAd.map((application, index) => (
-            <div
-                key={application.id}
-                className={`application-card-wrapper ${(application.status !== "PROPOSED" ) ? 'expanded' : ''}`}
-            >
-
-                <div className={`application-card ${changedApplications[application.id] ? 'changed' : ''}`}>
-                    <div className="app-job-seeker-pic">
-                        <img
-                            src={profilePicsState[application.jobSeekerId]}
-                            alt=""
-                            width={75} height={75}
-                        />
-                    </div>
-                    <div className="app-info">
-                <span>Submitted on <b>{new Date(application.submittedOn).toLocaleString('default', {
-                    day: 'numeric',
-                    month: 'long',
-                    year: 'numeric'
-                })}</b></span>
-                        <div className="contact-info">
-                            <div className="contact-item">
-                                <i className="fa-solid fa-user"></i> <span>{application.jobSeekerName}</span>
-                            </div>
-                            <div className="contact-item">
-                                <i className="fa-solid fa-envelope"></i> <span>{application.jobSeekerEmail}</span>
-                            </div>
-                            <div className="contact-item">
-                                <i className="fa-solid fa-phone"></i> <span>{application.jobSeekerPhoneNumber}</span>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div className="app-status">
-                        <ApplicationDetailsModal application={application} />
-                        <div className="select">
-                            <Select options={options} onChange={(selectedOption) => handleStatusChange(selectedOption, application.id)} defaultValue={handleDefaultStatus(application.status)} />
-                        </div>
-                    </div>
-                </div>
-
-                <div className="expand-section">
-                <textarea
-                    id={`response-${application.id}`}
-                    placeholder={application.status === "UNDER_REVIEW" ? "Request additional documents..." :"Write your response..."}
-                    defaultValue={application.response}
-                    onChange={(e) => handleResponseChange(e, application.id)}
-                />
-                </div>
-            </div>
-        ))}
-
-
-    </div>)
-}
Index: bvista-frontend/src/views/applications/ApplicationsByJobSeeker.js
===================================================================
--- jobvista-frontend/src/views/applications/ApplicationsByJobSeeker.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,178 +1,0 @@
-import {useDispatch, useSelector} from "react-redux";
-import {useEffect, useState} from "react";
-import {ApplicationActions} from "../../redux/actions/applicationActions";
-import {ApplicationDetailsModal} from "./ApplicationDetailsModal";
-import Select from "react-select";
-
-import {RecruiterActions} from "../../redux/actions/recruiterActions";
-import {sortElementsBy} from "../../utils/utils";
-import {Link} from "react-router-dom";
-
-export const ApplicationsByJobSeeker = () => {
-    const dispatch = useDispatch();
-    const auth = useSelector(state => state.auth.currentUser);
-
-    const [applicationsByJobSeeker, setApplicationsByJobSeeker] = useState([]);
-    let applicationsByJobSeekerState = useSelector(state => state.appl.applicationsByJobSeeker);
-    const [dispatched, setDispatched] = useState(false);
-
-    const [logos, setLogos] = useState({});
-    let logosState = useSelector(state => state.images.logos)
-    const [logoDispatched, setLogoDispatched] = useState(false);
-
-
-    useEffect(() => {
-        if (!dispatched && (applicationsByJobSeekerState.length === 0 || applicationsByJobSeekerState.length === 1)) {
-            dispatch(ApplicationActions.fetchApplicationsByJobSeeker(auth.id, (success, response) => {
-                if (success && response.data.length > 0) {
-                    setApplicationsByJobSeeker(sortElementsBy(response.data, "submittedOn"));
-                }
-                setDispatched(true)
-                console.log("Fetch applications by job seeker GET")
-            }))
-
-        } else {
-            setApplicationsByJobSeeker(sortElementsBy(applicationsByJobSeekerState, "submittedOn"));
-            console.log("Fetch applications by job seeker STATE")
-        }
-    }, [applicationsByJobSeekerState])
-
-    useEffect(() => {
-
-        if (dispatched && !logoDispatched) {
-            applicationsByJobSeeker.forEach(jobAd => {
-                if (jobAd.recruiterId && !logos[jobAd.recruiterId]) {
-                    fetchLogo(jobAd.recruiterId);
-                }
-            })
-            setLogoDispatched(true)
-            console.log("Fetch all logos GET")
-        } else if (logoDispatched) {
-            setLogos(logosState)
-            console.log("Fetch all logos STATE")
-
-        }
-
-    }, [dispatched, logosState])
-
-
-    const fetchLogo = (recruiterId) => {
-        dispatch(RecruiterActions.downloadLogo(recruiterId, (success, response) => {
-            if (success) {
-                setLogos(prevLogos => ({...prevLogos, [recruiterId]: response}))
-            }
-        }));
-    };
-
-    const options = [{
-        value: 'PROPOSED', label: <span className="status" style={{backgroundColor: '#4A90E2'}}><i
-            className="fa-solid fa-paper-plane"></i> Proposed</span>
-    }, {
-        value: 'UNDER_REVIEW', label: <span className="status" style={{backgroundColor: '#F5A623'}}><i
-            className="fa-solid fa-file-pen"></i> Under Review</span>
-    }, {
-        value: 'ACCEPTED', label: <span className="status" style={{backgroundColor: '#7ED321'}}><i
-            className="fa-solid fa-user-check"></i> Accepted</span>
-    }, {
-        value: 'DENIED', label: <span className="status" style={{backgroundColor: '#D0021B'}}><i
-            className="fa-solid fa-user-slash"></i> Denied</span>
-    }];
-
-    const [selectedFilter, setSelectedFilter] = useState('All');
-
-    const filters = [
-        { value: 'ALL', label: 'All', icon: 'fa-folder-open' },
-        { value: 'PROPOSED', label: 'Proposed', icon: 'fa-paper-plane' },
-        { value: 'UNDER_REVIEW', label: 'Under Review', icon: 'fa-file-pen' },
-        { value: 'ACCEPTED', label: 'Accepted', icon: 'fa-user-check' },
-        { value: 'DENIED', label: 'Denied', icon: 'fa-user-slash' },
-    ];
-
-    const filterApplicationsByJobSeeker= (filter) => {
-        dispatch(ApplicationActions.filterApplicationsByJobSeeker(auth.id, filter, (success, response) => {
-            if(success) {
-                //notify
-            }
-        }))
-    }
-
-    let handleDefaultValue = (status) => {
-        return options.find(option => option.value === status);
-    }
-
-
-    return (<div className="custom-container">
-
-            <div className="application-title">
-                <h3>Application history</h3>
-            </div>
-
-        <div className="application-filters d-inline-flex flex-row justify-content-start">
-            {
-                filters.map(filter => (
-                    <span
-                        key={filter.label}
-                        className={selectedFilter === filter.label ? "selected" : ""}
-                        onClick={() => {
-                            setSelectedFilter(filter.label)
-                            filterApplicationsByJobSeeker(filter.value)
-                        }}
-                    ><i className={`fa-solid ${filter.icon}`}></i> {filter.label}</span>
-                ))
-            }
-        </div>
-
-            {applicationsByJobSeeker && applicationsByJobSeeker.map((application, index) => (
-                <div className="application-card-wrapper">
-                    <div key={index} className="application-card">
-                        <div className="app-company-logo">
-                            <img
-                                // loading gif
-                                src={logosState[application.recruiterId]}
-                                alt=""
-                                width={75} height={75}
-                            />
-                        </div>
-
-                        <div className="app-info">
-                            <Link to={`/job-advertisements/${application.jobAdId}`}
-                                  className="jobAd-title">{application.jobAdTitle}</Link>
-                            {/*<h5 className="jobAd-title"></h5>*/}
-                            <div className="contact-info">
-                                <div className="contact-item">
-                                    <i className="fa-solid fa-building"></i> <span>{application.recruiterName}</span>
-                                </div>
-                                <div className="contact-item">
-                                    <i className="fa-solid fa-envelope"></i> <span>{application.recruiterEmail}</span>
-                                </div>
-                                <div className="contact-item">
-                                    <i className="fa-solid fa-phone"></i>
-                                    <span>{application.recruiterPhoneNumber}</span>
-                                </div>
-                                <span> • Submitted on <b>{new Date(application.submittedOn).toLocaleString('default', {
-                                    day: 'numeric', month: 'long', year: 'numeric'
-                                })}</b></span>
-                            </div>
-                        </div>
-
-                        <div className="app-status">
-                            <ApplicationDetailsModal application={application}/>
-                            <> {handleDefaultValue(application.status).label}</>
-                            {/*<div className="select">*/}
-                            {/*    <Select isDisabled={true} options={options} />*/}
-                            {/*</div>*/}
-
-                        </div>
-                    </div>
-                    {application.response &&
-                        <div className="response-message">
-                            {application.response}
-                        </div>
-                    }
-
-                </div>
-
-            ))}
-
-        </div>)
-}
Index: bvista-frontend/src/views/applications/ApplyToJobAdModal.js
===================================================================
--- jobvista-frontend/src/views/applications/ApplyToJobAdModal.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,127 +1,0 @@
-import React, {useState} from "react";
-import "../shared_css/Modal.css";
-
-import 'react-responsive-modal/styles.css';
-import {Modal} from 'react-responsive-modal';
-
-//Validation
-import * as yup from "yup";
-import {yupResolver} from "@hookform/resolvers/yup";
-import {Controller, useForm} from "react-hook-form";
-
-
-import {useDispatch, useSelector} from "react-redux";
-import Roles from "../../enumerations/Roles";
-import {ApplicationActions} from "../../redux/actions/applicationActions";
-import {notifyJobAdApply} from "../../utils/toastUtils";
-
-
-export const ApplyToJobAdModal = (props) => {
-    const {jobAd, role} = props
-    const [modal, setModal] = useState(false);
-    const dispatch = useDispatch();
-    const auth = useSelector(state => state.auth.currentUser)
-
-    const [resumeFile, setResumeFile] = useState(null);
-    const toggleModal = () => {
-        setModal(!modal);
-    };
-
-    const schema = yup.object().shape({
-        answerOne: yup.string().required("Please answer the question"),
-        answerTwo: yup.string().required("Please answer the question"),
-        answerThree: yup.string().required("Please answer the question"),
-        messageToRecruiter: yup.string(),
-    })
-
-    const {register, handleSubmit, control, formState: {errors}} = useForm({
-        resolver: yupResolver(schema),
-    });
-
-    const submitApplication = async (values) => {
-        try {
-            const formData = new FormData();
-            formData.append('jobSeekerId', auth.id);
-            formData.append('jobAdId', jobAd.id);
-            formData.append('resumeFile', resumeFile);
-            formData.append('answerOne', values.answerOne);
-            formData.append('answerTwo', values.answerTwo);
-            formData.append('answerThree', values.answerThree);
-            formData.append('messageToRecruiter', values.messageToRecruiter);
-
-            dispatch(ApplicationActions.submitApplication(
-                formData, (success) => {
-                    if (success) {
-                        toggleModal()
-                        notifyJobAdApply()
-                    }
-                }
-            ))
-        } catch (err) {
-            console.error(err)
-        }
-    }
-    let minimumDate = new Date();
-    minimumDate.setDate(minimumDate.getDate() + 1);
-
-    return (<div className="modal-wrap">
-        {role === Roles.JOBSEEKER &&
-            <>
-                {jobAd.active && <button onClick={toggleModal} className="apply-button apply">Apply now</button>}
-                {!jobAd.active && <button className="card-button apply disabled">Apply now</button>}
-            </>
-        }
-        <Modal open={modal} onClose={toggleModal} center>
-            <div className="head-modal">
-                <h3>Applying to {jobAd.title} at {jobAd.recruiterName}</h3>
-                <i className="fa-solid fa-x btn-close-modal" onClick={toggleModal}></i>
-            </div>
-
-            <div className="modal-content">
-                <form onSubmit={handleSubmit(submitApplication)}>
-                    <div className="row">
-                        <div className="col-md-6">
-                            <label className="label">Why are you interested in joining our company?</label>
-                            <textarea type="text" placeholder="Write your answer here..."
-                                      {...register("answerOne")} className="application-textarea"/>
-                            <p style={{color: "red"}}>{errors.answerOne?.message}</p>
-
-                            <label className="label">What makes you a good fit for this position?</label>
-                            <textarea type="text" placeholder="Write your answer here..."
-                                      {...register("answerTwo")} className="application-textarea"/>
-                            <p style={{color: "red"}}>{errors.answerTwo?.message}</p>
-
-                            <label className="label">What do you hope to achieve in your first 6 months in this
-                                role?</label>
-                            <textarea type="text" placeholder="Write your answer here..."
-                                      {...register("answerThree")} className="application-textarea"/>
-                            <p style={{color: "red"}}>{errors.answerThree?.message}</p>
-
-                        </div>
-                        <div className="col-md-6">
-                            <label htmlFor="start">Curriculum vitae (CV)</label>
-                            <br/>
-                            <input {...register("file")} className="resume-link"
-                                   onChange={(e) => setResumeFile(e.target.files[0])} required type="file"
-                                   id="fileUpload" accept=".pdf"/>
-                            <br/>
-                            <label className="label">Message to the recruiter</label>
-                            <textarea type="text" placeholder="Optional..."
-                                      {...register("messageToRecruiter")} className="application-textarea"/>
-
-                            <br/><br/>
-                            <p style={{color: "red"}}>Please note that your personal data from your account will be used
-                                to identify and process your application.</p>
-                        </div>
-                    </div>
-
-                    <div className="modal-buttons">
-                        <div className="cancel-btn" onClick={toggleModal}> Cancel</div>
-                        <button className="submit-btn"> Submit</button>
-                    </div>
-
-                </form>
-            </div>
-        </Modal>
-    </div>)
-}
Index: jobvista-frontend/src/views/auth/SignInForm.js
===================================================================
--- jobvista-frontend/src/views/auth/SignInForm.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/views/auth/SignInForm.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,2 +1,3 @@
+import {Button, TextField} from "@mui/material";
 import {Link} from "react-router-dom";
 import "./auth.css"
@@ -7,7 +8,4 @@
 import {yupResolver} from "@hookform/resolvers/yup";
 import {AuthActions} from "../../redux/actions/authActions";
-import {notifyIncorrectEmailOrPassword} from "../../utils/toastUtils";
-
-import {GoogleOAuthProvider, GoogleLogin} from "@react-oauth/google";
 
 export const SignInForm = () => {
@@ -29,41 +27,24 @@
     const signIn = async (values) => {
         try {
-            dispatch(AuthActions.signIn(values.emailLog, values.passwordLog, success => {
-                    if(success) {
-                        navigate("/")
-                    } else {
-                        notifyIncorrectEmailOrPassword()
-                    }
+            dispatch(AuthActions.signIn(values.emailLog, values.passwordLog,
+                    success => {
+                    // createSnackbar({
+                    //     message: success ? 'Successfully signed up.' : 'Error while signing up. Try again!',
+                    //     timeout: 2500,
+                    //     theme: success ? 'success' : 'error'
+                    // });
+                    success && navigate("/");
                 }));
         } catch (err) {
-            // console.error(err);
+            console.error(err);
         }
     }
 
-    const handleGoogleSuccess = (response) => {
-        const tokenId = response.credential;
-
-        dispatch(AuthActions.signInGoogle(tokenId, (success, error) => {
-            if (success) {
-                console.log("User signed in successfully");
-                if(success) {
-                    navigate("/")
-                }
-            } else {
-                console.error("Google sign-in failed", error);
-            }
-        }));
-    };
-
-    const handleGoogleFailure = (error) => {
-        console.error(error);
-    };
-
     return (
 
-        <div className="">
+        <div className="d-flex align-items-center">
             <div className="container">
-                <div className="row d-flex flex-column justify-content-center align-items-center">
-                    <div className="col-md-8 form-container">
+                <div className="row">
+                    <div className="col-md-8 mx-auto form-container">
                         <h3 className="login-heading mb-4">Sign in</h3>
                         <form onSubmit={handleSubmit(signIn)}>
@@ -89,5 +70,5 @@
                             <div className="d-grid mb-3">
                                 <button
-                                    className="btn btn-lg auth-primary-btn text-uppercase fw-bold mb-2"
+                                    className="btn btn-lg btn-primary text-uppercase fw-bold mb-2"
                                     type="submit">Sign in
                                 </button>
@@ -103,33 +84,12 @@
 
                         <div className="row">
-                            <GoogleOAuthProvider clientId={process.env.REACT_APP_GOOGLE_CLIENT_ID}>
-                                <GoogleLogin
-                                    onSuccess={handleGoogleSuccess}
-                                    onError={handleGoogleFailure}
-                                    type={"standard"}
-                                    text={"signin_with"}
-                                    locale={"en"}
-                                    redirectUri="http://localhost:3000/login/oauth2/code/google"
-                                />
-                            </GoogleOAuthProvider>
-                        </div>
-                        <br/>
-                    </div>
-
-                    <div className="col-md-8 mt-5 form-container">
-                        <div>
-                            <h5 className="mb-3">Don't have an account?</h5>
-                        </div>
-
-                        <div className="row">
                             <div className="col-md-6">
-                                <Link to="/signup/recruiter" className="btn auth-secondary-btn text-uppercase fw-bold mb-2 w-100">SIGN UP AS RECRUITER</Link>
+                                <Link to="/signup/recruiter" className="btn btn-outline-primary text-uppercase fw-bold mb-2 w-100">SIGN UP AS RECRUITER</Link>
                             </div>
                             <div className="col-md-6">
-                                <Link to="/signup/job-seeker" className="btn auth-secondary-btn text-uppercase fw-bold mb-2 w-100">SIGN UP AS JOB SEEKER</Link>
+                                <Link to="/signup/job-seeker" className="btn btn-outline-primary text-uppercase fw-bold mb-2 w-100">SIGN UP AS JOB SEEKER</Link>
                             </div>
                         </div>
                     </div>
-
                 </div>
             </div>
Index: jobvista-frontend/src/views/auth/SignUpJobSeekerForm.js
===================================================================
--- jobvista-frontend/src/views/auth/SignUpJobSeekerForm.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/views/auth/SignUpJobSeekerForm.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -83,5 +83,5 @@
                             <div className="d-grid mb-3">
                                 <button
-                                    className="btn btn-lg auth-primary-btn text-uppercase fw-bold mb-2"
+                                    className="btn btn-lg btn-primary text-uppercase fw-bold mb-2"
                                     type="submit">Submit
                                 </button>
Index: jobvista-frontend/src/views/auth/SignUpRecruiterForm.js
===================================================================
--- jobvista-frontend/src/views/auth/SignUpRecruiterForm.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/views/auth/SignUpRecruiterForm.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -13,5 +13,5 @@
     const schema = yup.object().shape({
         companyNameReg: yup.string().required("Company name is required."),
-        phoneNumberReg: yup.string().required("Phone number is required"),
+        phoneNumberReg: yup.number().required("Phone number is required"),
         companyEmailReg: yup.string().required("Email is required.").email("Email is not valid."),
         passwordReg: yup.string().min(6, "Password must be at least 6 characters.").required("Password is required."),
@@ -32,5 +32,5 @@
                     //     theme: success ? 'success' : 'error'
                     // });
-                    success && navigate("/no-access");
+                    success && navigate("/");
                 }));
         } catch (err) {
@@ -80,5 +80,5 @@
                             <div className="d-grid mb-3">
                                 <button
-                                    className="btn btn-lg auth-primary-btn text-uppercase fw-bold mb-2"
+                                    className="btn btn-lg btn-primary text-uppercase fw-bold mb-2"
                                     type="submit">Submit
                                 </button>
Index: jobvista-frontend/src/views/auth/auth.css
===================================================================
--- jobvista-frontend/src/views/auth/auth.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/views/auth/auth.css	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -3,27 +3,2 @@
     padding: 5px 5px;
 }
-
-
-.auth-primary-btn{
-    background-color: rgba(1,38,90,0.80);
-    //background-color: #a1c4fd ;
-    color: white;
-}
-.auth-primary-btn:hover {
-    background-color: rgba(1,38,90,1);
-    color: white;
-}
-
-.auth-secondary-btn {
-    border: 2px solid rgba(1,38,90,0.7);
-    color: midnightblue;
-}
-
-.auth-secondary-btn:hover {
-    background-color: rgba(1,38,90,0.8);
-    color: white;
-}
-
-iframe{
-    margin: auto !important;
-}
Index: jobvista-frontend/src/views/dashboard/Dashboard.js
===================================================================
--- jobvista-frontend/src/views/dashboard/Dashboard.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/views/dashboard/Dashboard.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,173 +1,28 @@
-import "../shared_css/Random.css"
-
-import {useDispatch, useSelector} from "react-redux";
-import {useEffect, useState} from "react";
-import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions";
-import {formatRelativeTime, sortElementsBy} from "../../utils/utils";
-import {dataRangeOptions, industryOptions, industryOptionsFilter, sortOptions} from "../selectOptions";
-import Select from "react-select";
-import Roles from "../../enumerations/Roles";
-import {Link} from "react-router-dom";
-import JobType from "../../enumerations/JobType";
-import {AUTH_TOKEN} from "../../axios/axiosInstance";
-import {jwtDecode} from "jwt-decode";
-import {RecruiterActions} from "../../redux/actions/recruiterActions";
-
 export const Dashboard = () => {
 
-    const dispatch = useDispatch();
-
-    const [jobAdvertisements, setJobAdvertisements] = useState([]);
-    let jobAdvertisementsState = useSelector(state => state.jobAd.jobAdvertisements)
-    const [jobDispatched, setJobDispatched] = useState(false);
-
-    const [logos, setLogos] = useState({});
-    let logosState = useSelector(state => state.images.logos)
-    const [logoDispatched, setLogoDispatched] = useState(false);
-
-    const auth = useSelector(state => state.auth);
-
-    // const [role, setRole] = useState("");
-    const [selectedSortOrder, setSelectedSortOrder] = useState("date_newest");
-    const [selectedIndustry, setSelectedIndustry] = useState("all");
-    const [searchTerm, setSearchTerm] = useState("");
-
-
-    useEffect(() => {
-        if (!jobDispatched && jobAdvertisementsState.length == 0) {
-            dispatch(JobAdvertisementActions.fetchJobAdvertisements((success, response) => {
-                if (success && response.data.length > 0) {
-                    setJobAdvertisements(sortElementsBy(response.data, "postedOn"))
-                }
-                setJobDispatched(true)
-                console.log("Fetch all job advertisements GET")
-            }))
-
-        } else {
-            setJobAdvertisements(sortElementsBy(jobAdvertisementsState, "postedOn"))
-            console.log("Fetch all job advertisements STATE")
-
-
-        }
-    }, [jobAdvertisementsState])
-
-    useEffect(() => {
-
-        if(jobDispatched && !logoDispatched) {
-            jobAdvertisements.forEach(jobAd => {
-                if(jobAd.recruiterId && !logos[jobAd.recruiterId]) {
-                    fetchLogo(jobAd.recruiterId);
-                }
-            })
-            setLogoDispatched(true)
-            console.log("Fetch all logos GET")
-        } else {
-            setLogos(logosState)
-            console.log("Fetch all logos STATE")
-        }
-
-        }, [jobDispatched, logosState])
-
-    const fetchLogo = (recruiterId) => {
-        dispatch(RecruiterActions.downloadLogo(recruiterId, (success, response) => {
-            if(success) {
-                setLogos(prevLogos => ({...prevLogos, [recruiterId]: response}))
-            }
-        }));
-    };
-
-    let filterJobAdvertisements = () => {
-        JobAdvertisementActions.filterJobAdvertisements(
-            {
-                searchTerm: searchTerm,
-                industry: selectedIndustry,
-                sortOrder: selectedSortOrder
-            }, (success, response) => {
-                if (success) {
-                    setJobAdvertisements(response.data);
-                }
-            }
-        )
-    }
 
     return (
-
         <div className="container">
-            <div className="filter-container">
-                <div className="row">
-                    <div className="col-md-12 filter-box">
-                        <div className="search-container">
-                            <i className="fa-solid fa-magnifying-glass search-icon"></i>
-                            <input
-                                className="search-input"
-                                type="text"
-                                placeholder="Search job advertisement by title..."
-                                value={searchTerm}
-                                onChange={event => setSearchTerm(event.target.value)}
-                            />
-                        </div>
-                        <div className="sort-section item">
-                            <Select
-                                defaultValue={{value: "all", label: "All industries"}}
-                                value={selectedIndustry.value}
-                                onChange={option => setSelectedIndustry(option.value)}
-                                options={industryOptionsFilter}
-                                className="sort-range sort"
-                            />
-                        </div>
-                        <div className="sort-section item">
-                            <Select
-                                defaultValue={{value: "newest", label: "Date (Newest First)"}}
-                                value={selectedSortOrder.value}
-                                onChange={option => setSelectedSortOrder(option.value)}
-                                options={sortOptions}
-                                className="sort-range sort"
-                            />
-                        </div>
-                        <button onClick={filterJobAdvertisements} className="blue-submit-button">Find jobs</button>
+            <div className="row justify-content">
+                <div className="col-md-4">
+                    <div className="card">
+                        <h5 className="card-title">Job Listing Name</h5>
+                        <p>Job Listing Data</p>
+                    </div>
+                </div>
+                <div className="col-md-4">
+                    <div className="card">
+                        <h5 className="card-title">Job Listing Name</h5>
+                        <p>Job Listing Data</p>
+                    </div>
+                </div>
+                <div className="col-md-4">
+                    <div className="card">
+                        <h5 className="card-title">Job Listing Name</h5>
+                        <p>Job Listing Data</p>
                     </div>
                 </div>
             </div>
-            <div className="row row-cols-2 row-cols-md-4 g-4">
-                {jobAdvertisements &&
-                    jobAdvertisements.map((jobAd, index) => (
-                        <div key={index} className="col">
-                            <div className="custom-card dashboard-card">
-                                <div className="card-head">
-                                    <span className="hourly-salary"><b>${jobAd.startingSalary}/hr</b></span>
-                                    <span
-                                        className="job-type"> {jobAd.jobType === JobType.JOB ? "Job" : "Internship"}</span>
-                                    {!jobAd.active && <span className="expired">Expired</span>}
-                                </div>
-                                <div className="card-body">
-                                    <img className="card-company-logo"
-                                        // loading gif
-                                        src={logos[jobAd.recruiterId]}
-                                        alt=""
-                                        width={100} height={100}
-                                    />
-                                    <h5 className="card-title">{jobAd.title}</h5>
-                                    <span>{jobAd.industry} • <span style={{
-                                        color: "black",
-                                        fontWeight: "bold"
-                                    }}>{formatRelativeTime(jobAd.postedOn)}</span></span>
-                                    <div className="card-info">
-                                        <span><i className="fa-solid fa-building"
-                                                 style={{color: "#000000"}}></i> Company: <span style={{
-                                            color: "black",
-                                            fontWeight: "bold"
-                                        }}>{jobAd.recruiterName}</span></span> <br/>
-                                    </div>
 
-                                </div>
-                                <div className="card-foot">
-                                    <Link to={`/job-advertisements/${jobAd.id}`} className="card-button">Read
-                                        more</Link>
-                                </div>
-                            </div>
-                        </div>
-                    ))}
-
-            </div>
         </div>
     )
Index: bvista-frontend/src/views/job_advertisements/AddJobAdModal.js
===================================================================
--- jobvista-frontend/src/views/job_advertisements/AddJobAdModal.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,167 +1,0 @@
-import React, {useState} from "react";
-import "../shared_css/Modal.css";
-
-import { Editor } from 'primereact/editor';
-
-import 'react-responsive-modal/styles.css';
-import {Modal} from 'react-responsive-modal';
-import Select from "react-select";
-
-//Validation
-import * as yup from "yup";
-import {yupResolver} from "@hookform/resolvers/yup";
-import {Controller, useForm} from "react-hook-form";
-
-
-import {employmentStatusOptions, industryOptions, jobTypeOptions} from "../selectOptions";
-import {useDispatch, useSelector} from "react-redux";
-import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions";
-import {notifyJobAdPost} from "../../utils/toastUtils";
-
-
-export const AddJobAdModal = () => {
-    const [modal, setModal] = useState(false);
-    const dispatch = useDispatch();
-    const auth = useSelector(state => state.auth.currentUser)
-    const toggleModal = () => {
-        setModal(!modal);
-    };
-
-    const schema = yup.object().shape({
-        title: yup.string().required("Please enter a title"),
-        description: yup.string().required("Please enter a description"),
-        industry: yup.mixed().required("Select industry"),
-        startingSalary: yup.string().required("Please enter the starting salary"),
-        jobType: yup.mixed().required("Select job type"),
-        employmentStatus: yup.mixed().required("Select employment status"),
-    })
-
-    const {register, handleSubmit, control, formState: {errors}} = useForm({
-        resolver: yupResolver(schema),
-    });
-
-    const addJobAdvertisement = async (values) => {
-        try {
-            dispatch(JobAdvertisementActions.addJobAdvertisement(
-                {
-                    id: auth.id,
-                    title: values.title,
-                    description: values.description,
-                    industry: values.industry.value,
-                    startingSalary: values.startingSalary,
-                    activeUntil: values.date,
-                    jobType: values.jobType.value,
-                    employmentStatus: values.employmentStatus.value,
-                }, (success) => {
-                    if (success) {
-                        toggleModal()
-                        notifyJobAdPost()
-                    }
-                }
-            ))
-        } catch (err) {
-            console.error(err)
-        }
-    }
-    let minimumDate = new Date();
-    minimumDate.setDate(minimumDate.getDate() + 1);
-
-    return (<div className="modal-wrap">
-        <div className="col">
-            <button onClick={toggleModal} className="add-new-card">
-                <h3>+ Post Advertisement</h3>
-            </button>
-        </div>
-        {/*<button onClick={toggleModal} className="btn-open-modal">POST ADVERTISEMENT</button>*/}
-        <Modal open={modal} onClose={toggleModal} center>
-            <div className="head-modal">
-                <h3>Post Job Advertisement</h3>
-                <i className="fa-solid fa-x btn-close-modal" onClick={toggleModal}></i>
-            </div>
-
-            <div className="modal-content">
-                <form>
-                    <div className="row">
-                        <div className="col-md-7">
-
-                            <label className="label">Job title:</label>
-                            <input type="text" {...register("title")}/>
-                            <p style={{color: "red"}}>{errors.title?.message}</p>
-
-                            <label className="label">Job description:</label>
-                            {/*<textarea type="text" placeholder="Describe the job position and all the requirements"*/}
-                            {/*          className="description-textarea" {...register("description")}/>*/}
-
-
-                            <Controller
-                                name="description"
-                                control={control}
-                                render={({ field }) => (
-                                    <Editor
-                                        value={field.value}
-                                        onTextChange={(e) => field.onChange(e.htmlValue)}
-                                        style={{ height: '300px', fontSize: "16px", fontFamily: "Segoe UI" }}
-                                    />
-                                )}
-                            />
-                            <p style={{color: "red"}}>{errors.description?.message}</p>
-                        </div>
-
-                        <div className="col-md-5">
-                            <label className="label">Hourly rate:</label>
-                            <input type="number" {...register("startingSalary")}/>
-                            <p style={{color: "red"}}>{errors.startingSalary?.message}</p>
-
-                            <label className="label">Industry:</label>
-                            <Controller
-                                name="industry"
-                                control={control}
-                                render={({field}) => (<Select
-                                    {...field}
-                                    options={industryOptions}
-                                />)}
-                            />
-                            <p style={{color: "red"}}>{errors.industry?.message}</p>
-
-                            <label className="label">Job type:</label>
-                            <Controller
-                                name="jobType"
-                                control={control}
-                                render={({field}) => (<Select
-                                    {...field}
-                                    options={jobTypeOptions}
-                                />)}
-                            />
-                            <p style={{color: "red"}}>{errors.jobType?.message}</p>
-
-                            <label className="label">Employment status</label>
-                            <Controller
-                                name="employmentStatus"
-                                control={control}
-                                render={({field}) => (<Select
-                                    {...field}
-                                    options={employmentStatusOptions}
-                                />)}
-                            />
-                            <p style={{color: "red"}}>{errors.employmentStatus?.message}</p>
-
-                            <label htmlFor="start">Active until:</label>
-                            <input type="date" defaultValue={minimumDate.toLocaleDateString('en-CA')}
-                                   min={minimumDate.toLocaleDateString('en-CA')}
-                                   onChange={(event) => console.log(event.target.value)}
-                                   {...register("date")}/>
-
-
-                        </div>
-                    </div>
-
-                    <div className="modal-buttons">
-                        <div className="cancel-btn" onClick={toggleModal}> Cancel</div>
-                        <button className="submit-btn" onClick={handleSubmit(addJobAdvertisement)}>Submit</button>
-                    </div>
-
-                </form>
-            </div>
-        </Modal>
-    </div>)
-}
Index: bvista-frontend/src/views/job_advertisements/DeleteJobAdModal.js
===================================================================
--- jobvista-frontend/src/views/job_advertisements/DeleteJobAdModal.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,60 +1,0 @@
-import React, {useState} from "react";
-import "../shared_css/Modal.css";
-
-import 'react-responsive-modal/styles.css';
-import {Modal} from 'react-responsive-modal';
-import Select from "react-select";
-
-//Validation
-import * as yup from "yup";
-import {yupResolver} from "@hookform/resolvers/yup";
-import {Controller, useForm} from "react-hook-form";
-
-
-import {employmentStatusOptions, industryOptions, jobTypeOptions} from "../selectOptions";
-import {useDispatch, useSelector} from "react-redux";
-import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions";
-import {notifyJobAdDelete} from "../../utils/toastUtils";
-
-
-export const DeleteJobAdModal = (jobAd) => {
-    const [modal, setModal] = useState(false);
-    const dispatch = useDispatch();
-    const auth = useSelector(state => state.auth.currentUser)
-    const toggleModal = () => {
-        setModal(!modal);
-    };
-
-    const deleteJobAdvertisement = async () => {
-        try {
-            dispatch(JobAdvertisementActions.deleteJobAdvertisement(jobAd.props.id, (success) => {
-                if (success) {
-                    toggleModal()
-                    notifyJobAdDelete()
-                }
-            }))
-        } catch (err) {
-            console.error(err)
-        }
-    }
-
-    return (<div className="modal-wrap">
-        <i className="fa-solid fa-trash trash-delete-btn" onClick={toggleModal}></i>
-        <Modal open={modal} onClose={toggleModal} center classNames="job-advertisement-modal">
-            <i className="fa-solid fa-x btn-close-modal" style={{color: "black"}} onClick={toggleModal}></i>
-            <div className="modal-delete-content">
-                <div className="row modal-delete-content-inside">
-                    <div className="col-md-1"><i className="fa-regular fa-circle-xmark x-icon"></i></div>
-                    <div className="col-md-11 modal-delete-text">
-                        <h4>Are you sure?</h4>
-                        <p>Do you really want to delete this advertisement? This process cannot be undone.</p>
-                    </div>
-                </div>
-                <div className="modal-delete-buttons">
-                    <button className="cancel-btn" onClick={toggleModal}>Cancel</button>
-                    <button className="delete-btn" onClick={deleteJobAdvertisement}> Delete</button>
-                </div>
-            </div>
-        </Modal>
-    </div>)
-}
Index: bvista-frontend/src/views/job_advertisements/EditJobAdModal.js
===================================================================
--- jobvista-frontend/src/views/job_advertisements/EditJobAdModal.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,181 +1,0 @@
-import React, {useEffect, useState} from "react";
-import "../shared_css/Modal.css";
-
-import 'react-responsive-modal/styles.css';
-import {Modal} from 'react-responsive-modal';
-import Select from "react-select";
-
-//Validation
-import * as yup from "yup";
-import {yupResolver} from "@hookform/resolvers/yup";
-import {Controller, useForm} from "react-hook-form";
-
-
-import {employmentStatusOptions, industryOptions, jobTypeOptions} from "../selectOptions";
-import {useDispatch, useSelector} from "react-redux";
-import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions";
-import {Editor} from "primereact/editor";
-import {notifyJobAdDelete, notifyJobAdEdit} from "../../utils/toastUtils";
-
-
-export const EditJobAdModal = (jobAd) => {
-    const [modal, setModal] = useState(false);
-    const dispatch = useDispatch();
-    const auth = useSelector(state => state.auth.currentUser)
-    const toggleModal = () => {
-        console.log("NAD SET")
-        setModal(!modal);
-        console.log("POD SET")
-
-    };
-
-    const schema = yup.object().shape({
-        title: yup.string().required("Please enter a title"),
-        description: yup.string().required("Please enter a description"),
-        industry: yup.mixed().required("Select industry"),
-        startingSalary: yup.number().required("Please enter the starting salary"),
-        jobType: yup.mixed().required("Select job type"),
-        employmentStatus: yup.mixed().required("Select employment status"),
-    })
-
-    const {register, handleSubmit, control, formState: {errors}} = useForm({
-        resolver: yupResolver(schema),
-    });
-    const editJobAdvertisement = async (values) => {
-        try {
-            dispatch(JobAdvertisementActions.editJobAdvertisement(
-                {
-                    email: auth.email,
-                    title: values.title,
-                    description: values.description,
-                    industry: values.industry.value,
-                    startingSalary: values.startingSalary,
-                    activeUntil: values.date,
-                    jobType: values.jobType.value,
-                    employmentStatus: values.employmentStatus.value,
-                }, jobAd.props.id, (success) => {
-                    if(success) {
-                        toggleModal()
-                        notifyJobAdEdit()
-                    }
-                }
-            ))
-        } catch (err) {
-            console.error(err)
-        }
-    }
-
-    let minimumDate = new Date();
-    minimumDate.setDate(minimumDate.getDate() + 1);
-
-    return (<div className="modal-wrap">
-
-        <i className="fa-solid fa-pen-to-square pen-edit-btn" onClick={() => {
-            // setSelectedRecord(record);
-                toggleModal()
-        }}></i>
-        <Modal open={modal} onClose={toggleModal} center classNames="job-advertisement-modal">
-            <div className="head-modal">
-                <h3>Edit Job Advertisement</h3>
-                <i className="fa-solid fa-x btn-close-modal" onClick={toggleModal}></i>
-            </div>
-
-            <div className="modal-content">
-                <form>
-                    <div className="row">
-                        <div className="col-md-7">
-                            <label className="label">Job title:</label>
-                            <input type="text" defaultValue={jobAd.props.title} {...register("title")}/>
-                            <p style={{color: "red"}}>{errors.title?.message}</p>
-
-                            <label className="label">Job description:</label>
-                            {/*<textarea type="text" defaultValue={jobAd.props.description} placeholder="Describe the job position and all the requirements"*/}
-                            {/*          className="description-textarea" {...register("description")}/>*/}
-
-                            <Controller
-                                name="description"
-                                control={control}
-                                defaultValue={jobAd.props.description}
-                                render={({ field }) => (
-                                    <Editor
-                                        // defaultValue={jobAd.props.description}
-                                        value={jobAd.props.description}
-                                        onTextChange={(e) => field.onChange(e.htmlValue)}
-                                        style={{ height: '300px', fontSize: "16px", fontFamily: "Segoe UI" }}
-                                    />
-                                )}
-                            />
-
-                            <p style={{color: "red"}}>{errors.description?.message}</p>
-                        </div>
-
-                        <div className="col-md-5">
-                            <label className="label">Hourly rate:</label>
-                            <input type="number" defaultValue={jobAd.props.startingSalary} {...register("startingSalary")}/>
-                            <p style={{color: "red"}}>{errors.startingSalary?.message}</p>
-
-                            <label className="label">Industry:</label>
-                            <Controller
-                                name="industry"
-                                control={control}
-                                defaultValue={{
-                                    label: jobAd.props.industry,
-                                    value: jobAd.props.industry
-                                }}
-                                render={({ field })  => (<Select
-                                    {...field}
-                                    options={industryOptions}
-                                />)}
-                            />
-                            <p style={{color: "red"}}>{errors.industry?.message}</p>
-
-                            <label className="label">Job type:</label>
-                            <Controller
-                                name="jobType"
-                                control={control}
-                                defaultValue={{
-                                    value: jobAd.props.jobType,
-                                    label: jobAd.props.jobType==="JOB" ? "Job" : "Internship"
-                                }}
-                                render={({ field }) => (
-                                    <Select
-                                    {...field}
-                                    options={jobTypeOptions}
-                                />)}
-                            />
-                            <p style={{color: "red"}}>{errors.jobType?.message}</p>
-
-                            <label className="label">Employment status</label>
-                            <Controller
-                                name="employmentStatus"
-                                control={control}
-                                defaultValue={{
-                                    value: jobAd.props.employmentStatus,
-                                    label: jobAd.props.employmentStatus==="FULL_TIME" ? "Full time" : "Part time"
-                                }}
-                                render={({ field }) => (
-                                    <Select
-                                    {...field}
-                                    options={employmentStatusOptions}
-                                />)}
-                            />
-                            <p style={{color: "red"}}>{errors.employmentStatus?.message}</p>
-
-                            <label htmlFor="start">Active until:</label>
-                            <input type="date" defaultValue={new Date(jobAd.props.activeUntil).toLocaleDateString('en-CA')}
-                                   min={minimumDate.toLocaleDateString('en-CA')} onChange={(event) => console.log(event.target.value)}
-                                   {...register("date")}/>
-
-
-                        </div>
-                    </div>
-
-                    <div className="modal-buttons">
-                        <div className="cancel-btn" onClick={toggleModal}> Cancel</div>
-                        <button className="submit-btn" onClick={handleSubmit(editJobAdvertisement)}> Save changes</button>
-                    </div>
-                </form>
-            </div>
-        </Modal>
-    </div>)
-}
Index: bvista-frontend/src/views/job_advertisements/JobAdDetails.css
===================================================================
--- jobvista-frontend/src/views/job_advertisements/JobAdDetails.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,116 +1,0 @@
-
-/*font-family: 'Ubuntu', sans-serif;*/
-/*font-family: 'Cairo', sans-serif;*/
-/*font-family: 'Poppins', sans-serif;*/
-
-* {
-    //font-family: Poppins, sans-serif;
-}
-
-.details-wrap {
-    width: 100%;
-    height: auto;
-    max-height: 80vh;
-    overflow-y: auto;
-    background-color: #fff;
-    border-radius: 12px;
-    padding: 15px 20px;
-    margin-bottom: 20px;
-
-    /*scrollbar-width: thin; !* "auto" hides scrollbar on some browsers, "thin" shows a thin scrollbar *!*/
-    /*scrollbar-color: #999999 #fff;*/
-}
-
-.min-wrap {
-    min-height: 80vh;
-}
-
-.details-wrap .span-about {
-    color: darkgray;
-}
-
-
-
-.details-wrap-profile {
-    width: 100%;
-    height: auto;
-
-    background-color: #fff;
-    border-radius: 12px;
-    padding: 15px 20px;
-    margin-bottom: 20px;
-    margin-top: 30px;
-}
-
-.details-wrap .details-head-info {
-    font-size: 18px;
-}
-
-.job-type, .expired {
-    font-size: 16px;
-    padding: 3px 8px;
-    border-radius: 5px;
-    font-family: Poppins;
-   position: relative;
-    bottom: 5px;
-    margin-left: 13px;
-}
-
-.expired {
-    background-color: transparent;
-    border: 1px solid indianred;
-    color: indianred;
-    font-weight: 600;
-}
-
-.job-type {
-    background-color: indianred;
-    color: white;
-}
-
-.title {
-    //display: inline-flex;
-    //justify-items: start;
-    display: block;
-}
-
-.title h2, .title span {
-    display: inline-block;
-}
-
-.apply-button {
-    border: 0;
-    border-radius: 8px;
-    width: 45%;
-    background-image: linear-gradient(to right, #a1c4fd 0%, aliceblue 61%, #a1c4fd 100%);
-    background-size: 200% auto;
-    font-weight: bold;
-    padding: 5px 10px;
-    transition: 0.4s;
-}
-
-.apply-button:not(.disabled):hover{
-    background-color: rgb(187, 215, 235);
-    color: black;
-}
-
-.disabled {
-    cursor: default !important;
-    opacity: 0.6;
-}
-
-.apply:not(.expired) {
-    width: 20% !important;
-    background-size: 200% auto;
-
-}
-.apply:not(.expired):hover {
-    width: 20% !important;
-    background-position: right center;
-}
-
-.recruiter-link {
-    color: black;
-    font-size: 30px;
-    text-decoration:none;
-}
Index: bvista-frontend/src/views/job_advertisements/JobAdDetails.js
===================================================================
--- jobvista-frontend/src/views/job_advertisements/JobAdDetails.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,139 +1,0 @@
-import "./JobAdDetails.css"
-import {useEffect, useState} from "react";
-import {useDispatch, useSelector} from "react-redux";
-import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions";
-import {useParams} from "react-router";
-import Roles from "../../enumerations/Roles";
-import JobType from "../../enumerations/JobType";
-import EmploymentStatus from "../../enumerations/EmploymentStatus";
-import {formatRelativeTime} from "../../utils/utils";
-import {AddJobAdModal} from "./AddJobAdModal";
-import {ApplyToJobAdModal} from "../applications/ApplyToJobAdModal";
-import {Link} from "react-router-dom";
-import {RecruiterActions} from "../../redux/actions/recruiterActions";
-
-
-export const JobAdDetails = () => {
-    const dispatch = useDispatch();
-    const [jobAd, setJobAd] = useState("")
-    const [recruiterDetails, setRecruiterDetails] = useState("");
-    const [role, setRole] = useState("")
-    const {id} = useParams();
-    const auth = useSelector(state => state.auth.currentUser);
-
-    let logosState = useSelector(state => state.images.logos)
-    const [logoDispatched, setLogoDispatched] = useState(false)
-    const [logoView, setLogoView] = useState(null);
-
-    useEffect(() => {
-        setRole(auth.role)
-    }, [auth])
-
-    useEffect(() => {
-        if (jobAd) {
-            if (!logoDispatched && !logosState[jobAd.recruiterId]) {
-                dispatch(RecruiterActions.downloadLogo(jobAd.recruiterId, (success, response) => {
-                    if (success) {
-                        setLogoView(response)
-                        setLogoDispatched(true)
-                    }
-                }))
-            } else {
-                setLogoView(logosState[jobAd.recruiterId])
-            }
-
-        }
-
-    }, [jobAd])
-
-
-    useEffect(() => {
-        JobAdvertisementActions.fetchJobAdvertisementById(id, (success, response) => {
-            if (success) {
-                setJobAd(response.data)
-                JobAdvertisementActions.fetchRecruiterDetailsById(response.data.recruiterId, (successAgain, responseAgain) => {
-                    if(successAgain) {
-                        setRecruiterDetails(responseAgain.data)
-                    }
-                })
-            }
-        });
-    }, [])
-    return (<div className="container">
-        <div className="row">
-            <div className="col-md-9">
-                <div className="details-wrap min-wrap">
-                    <div className="row">
-                        <div className="col-md-9">
-                            <div className="title">
-                                <h2>{jobAd.title} </h2>
-                                <span className="job-type"> {jobAd.jobType===JobType.JOB ? "Job" : "Internship"}</span>
-                                {!jobAd.active && <span className="expired">Expired</span>}
-                            </div>
-
-                            <p className="details-head-info">
-                                <span><b>{jobAd.recruiterName}</b></span> • <span>{jobAd.industry}</span> • <span>{formatRelativeTime(jobAd.postedOn)}</span>
-                            </p>
-
-                            <p><i className="fa-solid fa-money-check-dollar"></i> <span>Hourly rate: ${jobAd.startingSalary}</span></p>
-                            <p><i className="fa-solid fa-briefcase"></i> Employment status: {jobAd.employmentStatus==="FULL_TIME" ? "Full-time" : "Part-time"}</p>
-                            <p><i className="fa-solid fa-calendar-days"></i> Active until: {new Date(jobAd.activeUntil).toLocaleString('default', { day: 'numeric', month: 'long',  year: 'numeric' })}</p>
-
-                        </div>
-                        <div className="col-md-3">
-                            {jobAd.recruiterId &&
-                                <>
-                                    <img
-                                        className="card-company-logo"
-                                        // loading gif
-                                        src={logosState[jobAd.recruiterId]}
-                                        alt=""
-                                        width={200} height={200}
-                                    />
-                                </>
-                            }
-
-                        </div>
-                    </div>
-
-
-                    <h4>About the job</h4>
-                    {jobAd.description && (
-                        <p dangerouslySetInnerHTML={{ __html: jobAd.description.replace(/\n/g, "<br>") }}></p>
-                    )}
-                    <ApplyToJobAdModal jobAd={jobAd} role={role}/>
-
-                </div>
-            </div>
-            <div className="col-md-3">
-                <div className="details-wrap">
-                    <Link className="recruiter-link" to={`/recruiters/${jobAd.recruiterId}`}>{jobAd.recruiterName} </Link>
-
-                    <h4>About the company</h4>
-                    <p>
-                        {recruiterDetails.companyDescription
-                            ? recruiterDetails.companyDescription.length > 710
-                                ? `${recruiterDetails.companyDescription.substring(0, 710)}...`
-                                : recruiterDetails.companyDescription
-                            : "There is no info about this company yet."
-                        }
-                    </p>
-
-                    <p>
-                        <i className="fa-solid fa-envelope"></i> <span className="span-about"> {recruiterDetails.contactEmail}</span> <br/>
-                        <i className="fa-solid fa-phone"></i> <span className="span-about"> {recruiterDetails.contactPhoneNumber}</span> <br/>
-                        {recruiterDetails.receptionist && <><i className="fa-solid fa-user"></i> <span className="span-about"> {recruiterDetails.receptionist}</span> </>}
-                    </p>
-
-                    <div className="d-flex justify-content-center mt-4">
-                        <Link className="card-button" to={`/recruiters/${jobAd.recruiterId}`}>Read more </Link>
-                    </div>
-                </div>
-            </div>
-
-        </div>
-
-
-
-    </div>)
-}
Index: bvista-frontend/src/views/job_advertisements/JobAdvertisements.css
===================================================================
--- jobvista-frontend/src/views/job_advertisements/JobAdvertisements.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,126 +1,0 @@
-.photo-box {
-    position: relative;
-    margin-bottom: 140px;
-}
-
-.photo-box div img {
-    background-color: rgb(243, 242, 241);
-}
-
-.company-banner {
-    width: 100%;
-    height: 300px;
-    object-fit: cover;
-    object-position: initial;
-    display: block;
-    border-radius: 10px;
-}
-
-.company-logo {
-    position: absolute;
-    border-radius: 25px;
-    border: 5px solid rgb(243, 242, 241);
-    bottom: -110px;
-    left: 70px
-}
-
-.info-tab {
-    margin: 20px 10px;
-    position: absolute;
-    left: 280px;
-    font-family: Poppins;
-}
-
-.photo-box .edit-buttons {
-    display: flex;
-    gap: 10px;
-    position: absolute;
-    right: 20px;
-    bottom: -100px;
-}
-
-.edit-buttons .exclamation {
-    display: inline;
-    position: relative;
-}
-
-.fa-circle-exclamation {
-    color: #d80e0e;
-
-}
-
-.edit-buttons .modal-wrap .react-responsive-modal-modal .head-modal {
-    background-color: white !important;
-    color: black !important;
-}
-
-.edit-buttons button {
-    background-color: white;
-    border: none;
-    border-radius: 5px;
-    padding: 7px 13px;
-    transition: 0.1s;
-}
-
-.edit-buttons button:hover {
-    /*background-color: #F2F2F2;*/
-    background-color: lightgray;
-}
-
-.my-workspace {
-    position: relative;
-}
-
-.custom-text-area {
-    height: 14rem !important;
-}
-
-.line-separator {
-    width: 95%;
-    border-top: 1px solid gray;
-    border-radius: 5px;
-    margin: auto;
-    margin-bottom: 30px;
-}
-
-
-.confirmation-bar {
-    position: fixed;
-    //top: 80px;
-    left: 0;
-    width: calc(100% - 17px);
-    background-color: rgba(0, 0, 0, 0.5); /* Adjust background color as needed */
-    //background-color: #7D7D7A; /* Adjust background color as needed */
-    padding: 10px;
-    z-index: 11;
-
-}
-.confirmation-bar-buttons {
-    display: flex;
-    justify-content: right;
-    gap: 10px;
-    margin-right: 60px
-}
-.confirmation-bar .confirmation-bar-buttons button {
-    padding: 5px 20px;
-    border: none;
-    border-radius: 8px;
-    color: white;
-    transition: 0.1s;
-}
-.confirmation-bar .confirmation-bar-buttons .cancel-changes {
-    background-color: #8D8D8B;
-}
-
-.confirmation-bar .confirmation-bar-buttons .cancel-changes:hover {
-    background-color: #9B9A99;
-}
-
-.confirmation-bar .confirmation-bar-buttons .save-changes {
-    background-color: #0866FF;
-
-}
-.confirmation-bar .confirmation-bar-buttons .save-changes:hover {
-    background-color: dodgerblue;
-}
-
Index: bvista-frontend/src/views/job_advertisements/JobManagementHub.js
===================================================================
--- jobvista-frontend/src/views/job_advertisements/JobManagementHub.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,166 +1,0 @@
-import {AddJobAdModal} from "./AddJobAdModal";
-
-import "./JobAdvertisements.css"
-import "../shared_css/Random.css"
-
-import {useDispatch, useSelector} from "react-redux";
-import {useEffect, useState} from "react";
-import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions";
-import {formatRelativeTime, sortElementsBy} from "../../utils/utils";
-import {dataRangeOptions, industryOptions, industryOptionsFilter, sortOptions} from "../selectOptions";
-import Select from "react-select";
-import {DeleteJobAdModal} from "./DeleteJobAdModal";
-import {EditJobAdModal} from "./EditJobAdModal";
-import {Link} from "react-router-dom";
-import JobType from "../../enumerations/JobType";
-import {RecruiterActions} from "../../redux/actions/recruiterActions";
-
-
-export const Workspace = (props) => {
-
-    const dispatch = useDispatch();
-    const [dispatched, setDispatched] = useState(false)
-
-    const auth = useSelector(state => (state.auth.currentUser))
-
-    const [jobAdvertisementsByRecruiter, setJobAdvertisementsByRecruiter] = useState([]);
-    let jobAdvertisementsByRecruiterState = useSelector(state => (state.jobAd.jobAdvertisementsByRecruiter))
-
-    const [recruiterDetails, setRecruiterDetails] = useState(null);
-
-    const [selectedSortOrder, setSelectedSortOrder] = useState("date_newest");
-    const [selectedIndustry, setSelectedIndustry] = useState("all");
-    const [searchTerm, setSearchTerm] = useState("");
-
-    const [activeJobListingsCount, setActiveJobListingsCount] = useState(0);
-
-    useEffect(() => {
-        if (auth) {
-            dispatch(RecruiterActions.fetchRecruiterEditDetailsById(auth.id, (success, response) => {
-                if (success) {
-                    setRecruiterDetails(response.data)
-                }
-            }))
-        }
-    }, [auth]);
-
-
-    useEffect(() => {
-        if (!dispatched && jobAdvertisementsByRecruiterState.length === 0) {
-            dispatch(JobAdvertisementActions.fetchJobAdvertisementsByRecruiter(auth.id, (success, response) => {
-                if (success && response.data.length > 0) {
-                    setJobAdvertisementsByRecruiter(sortElementsBy(response.data))
-                }
-                console.log("Fetch job advertisements by recruiter GET")
-            }))
-            setDispatched(true);
-
-        } else {
-            setJobAdvertisementsByRecruiter(jobAdvertisementsByRecruiterState)
-            console.log("Fetch job advertisements by recruiter STATE")
-
-            setActiveJobListingsCount(countActiveJobListings(jobAdvertisementsByRecruiterState));
-        }
-
-    }, [jobAdvertisementsByRecruiterState])
-
-    let filterJobAdvertisements = () => {
-        JobAdvertisementActions.filterJobAdvertisementsByRecruiter(auth.id, {
-            searchTerm: searchTerm, industry: selectedIndustry, sortOrder: selectedSortOrder
-        }, (success, response) => {
-            if (success) {
-                setJobAdvertisementsByRecruiter(response.data);
-            }
-        })
-    }
-
-    function countActiveJobListings(jobAds) {
-        if (jobAds.length > 0) {
-            const activeJobListings = jobAds.filter(job => job.active)
-            return activeJobListings.length;
-        }
-        return 0;
-    }
-
-    return (<div className="container">
-
-            {/*<div className="line-separator"></div>*/}
-
-            <div className="filter-container">
-                <div className="row">
-                    <div className="col-md-12 filter-box">
-                        <div className="search-container">
-                            <i className="fa-solid fa-magnifying-glass search-icon"></i>
-                            <input
-                                className="search-input"
-                                type="text"
-                                placeholder="Search job advertisement by title..."
-                                value={searchTerm}
-                                onChange={event => setSearchTerm(event.target.value)}
-                            />
-                        </div>
-                        <div className="sort-section item">
-                            <Select
-                                defaultValue={{value: "all", label: "All industries"}}
-                                value={selectedIndustry.value}
-                                onChange={option => setSelectedIndustry(option.value)}
-                                options={industryOptionsFilter}
-                                className="sort-range sort"
-                            />
-                        </div>
-                        <div className="sort-section item">
-                            <Select
-                                defaultValue={{value: "newest", label: "Date (Newest First)"}}
-                                value={selectedSortOrder.value}
-                                onChange={option => setSelectedSortOrder(option.value)}
-                                options={sortOptions}
-                                className="sort-range sort"
-                            />
-                        </div>
-                        <button onClick={filterJobAdvertisements} className="blue-submit-button">Find jobs</button>
-                    </div>
-                </div>
-            </div>
-            <div className="row row-cols-1 row-cols-md-5 g-3">
-                <AddJobAdModal/>
-
-                {jobAdvertisementsByRecruiter && jobAdvertisementsByRecruiter.map((jobAd, index) => (
-                    <div key={index} className="col">
-                        <div className="custom-card hub-card">
-                            <div className="card-head">
-                                <span className="hourly-salary"><b>${jobAd.startingSalary}/hr</b></span>
-                                <span
-                                    className="job-type"> {jobAd.jobType === JobType.JOB ? "Job" : "Internship"}</span>
-                                {!jobAd.active && <span className="expired">Expired</span>}
-                                <div className="card-management-btns">
-                                    <DeleteJobAdModal props={jobAd}/>
-                                    <EditJobAdModal props={jobAd}/>
-                                </div>
-                            </div>
-                            <div className="card-body">
-                                <h5 className="card-title">{jobAd.title}</h5>
-                                <span>{jobAd.industry} • <span style={{
-                                    color: "black", fontWeight: "bold"
-                                }}>{formatRelativeTime(jobAd.postedOn)}</span></span>
-                                <div className="card-info">
-                                        <span><i className="fa-solid fa-building"
-                                                 style={{color: "#000000"}}></i> Company: <span style={{
-                                            color: "black", fontWeight: "bold"
-                                        }}>{jobAd.recruiterName}</span></span> <br/>
-                                </div>
-
-                            </div>
-
-
-                            <div className="card-foot">
-                                <Link to={`/job-management-hub/applications/${jobAd.id}`}
-                                      className="card-button">View applications</Link>
-                            </div>
-                        </div>
-                    </div>))}
-            </div>
-        </div>
-
-
-    )
-}
Index: bvista-frontend/src/views/profiles/JobSeekerEditProfile.css
===================================================================
--- jobvista-frontend/src/views/profiles/JobSeekerEditProfile.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,22 +1,0 @@
-.profile-pic {
-    position: absolute;
-    border-radius: 100px;
-    border: 5px solid rgb(243, 242, 241);
-    bottom: -110px;
-    left: 70px;
-    object-fit: contain;
-}
-
-/*.floating-wrap {*/
-/*    position: relative;*/
-/*}*/
-
-/*.floating-wrap h5 {*/
-/*    z-index: 100;*/
-/*    position: absolute;*/
-/*    top: -25px;*/
-/*    left: 20px;*/
-/*    padding: 5px 10px;*/
-/*    background: white;*/
-/*    border-radius: 10px;*/
-/*}*/
Index: bvista-frontend/src/views/profiles/JobSeekerEditProfile.js
===================================================================
--- jobvista-frontend/src/views/profiles/JobSeekerEditProfile.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,252 +1,0 @@
-import React, {useEffect, useState} from "react";
-
-import "../shared_css/Modal.css"
-
-import 'react-responsive-modal/styles.css';
-import "./JobSeekerEditProfile.css"
-
-//Validation
-import * as yup from "yup";
-import {yupResolver} from "@hookform/resolvers/yup";
-import {Controller, useForm} from "react-hook-form";
-
-import {useDispatch, useSelector} from "react-redux";
-import {JobSeekerActions} from "../../redux/actions/JobSeekerActions";
-import {notifyProfileEdit, notifyProfilePicChange} from "../../utils/toastUtils";
-
-
-export const JobSeekerEditProfile = (props) => {
-
-    const dispatch = useDispatch();
-    const auth = useSelector(state => state.auth.currentUser)
-
-    const [seekerDetails, setSeekerDetails] = useState(null);
-
-    const [profilePicFile, setProfilePicFile] = useState(null);
-
-    let profilePicState = useSelector(state => state.images.profilePictures);
-
-    const [profilePicPreview, setProfilePicPreview] = useState(null);
-    const [profilePicView, setProfilePicView] = useState(null);
-
-
-    useEffect(() => {
-        if(auth) {
-            dispatch(JobSeekerActions.fetchJobSeekerEditDetailsById(auth.id, (success, response) => {
-                if(success) {
-                    setSeekerDetails(response.data);
-                    console.log(response.data)
-                }
-            }))
-        }
-    }, [auth])
-
-    useEffect(() => {
-        if (auth.id) {
-            if(!profilePicState[auth.id]) {
-                dispatch(JobSeekerActions.downloadProfilePic(auth.id, (success, response) => {
-                    if (success) {
-                        setProfilePicView(response)
-                        //setDispatched(true)
-                    }
-                }))
-                //console.log("LOGO FETCH")
-            } else {
-                setProfilePicView(profilePicState[auth.id])
-                //console.log("LOGO STATE")
-            }
-
-        }
-
-    }, [auth])
-    const schema = yup.object().shape({
-        email: yup.string().required("Please enter your email"),
-        firstName: yup.string().required("Please enter your first name"),
-        lastName: yup.string().required("Please enter your last name"),
-        phoneNumber: yup.string().required("Please enter your phone number"),
-
-    })
-
-
-
-    const {register, handleSubmit, formState: {errors}} = useForm({
-        resolver: yupResolver(schema),
-    });
-
-    const editJobSeekerDetails = async (values) => {
-        try {
-            dispatch(JobSeekerActions.editJobSeekerDetailsById(
-                {
-                    email: values.email,
-                    firstName: values.firstName,
-                    lastName: values.lastName,
-                    phoneNumber: values.phoneNumber,
-
-
-                }, auth.id, (success, response) => {
-                    if (success) {
-                        // console.log("Recruiter details edited")
-                        notifyProfileEdit()
-                        setSeekerDetails(response.data)
-                    }
-                }
-            ))
-        } catch (err) {
-            console.error(err)
-        }
-    }
-
-    const handleButtonClick = () => {
-        document.getElementById('logo-upload-input').click();
-    };
-    const handleLogoChange = (event) => {
-        const file = event.target.files[0];
-        if (file && (file.type === 'image/png' || file.type === 'image/jpeg')) {
-            setProfilePicFile(file)
-            setProfilePicPreview(URL.createObjectURL(file));
-        }
-        event.target.value = null;
-    };
-    const handleLogoUpload = async () => {
-        try {
-            const formData = new FormData();
-            formData.append("jobSeekerId", auth.id);
-            formData.append("profilePicFile", profilePicFile);
-
-            dispatch(JobSeekerActions.submitProfilePic(formData, (success, response) => {
-                if (success) {
-                    // window.location.reload(); // MAYBE REMOVE
-                    // console.log("Logo uploaded successfully")
-                    notifyProfilePicChange()
-                    setProfilePicPreview(null)
-                    setProfilePicView(URL.createObjectURL(profilePicFile))
-
-                }
-            }))
-
-        } catch (error) {
-            console.error(error)
-        }
-    }
-
-    const handleCancelUpload = () => {
-        setProfilePicFile(null)
-        setProfilePicPreview(null)
-    }
-
-
-    return (<div className="custom-container no-additional-margin">
-
-        {profilePicPreview && (
-            <div className="confirmation-bar">
-                <div className="confirmation-bar-buttons">
-                    <button className="cancel-changes" onClick={handleCancelUpload}>Cancel</button>
-                    <button className="save-changes" onClick={handleLogoUpload}>Save changes</button>
-
-                </div>
-            </div>
-        )}
-        <div className="photo-box">
-            <div>
-                <img
-                    src="/images/mountains.png"
-                    className="company-banner"
-                    alt="Company Banner"
-                />
-                {profilePicPreview ? <>
-                    <img
-                        src={profilePicPreview}
-                        className="profile-pic"
-                        alt=""
-                        width={200} height={200}
-                    />
-                </> : <>
-                    <img
-                        // loading gif
-                        src={profilePicView}
-                        className="profile-pic"
-                        alt=""
-                        width={200} height={200}
-                    />
-                </>}
-
-            </div>
-
-            <div className="info-tab">
-                {seekerDetails &&  <h3>{seekerDetails.firstName + " " + seekerDetails.lastName}</h3>}
-                {/*<p>Active job listings: <span>{activeJobListingsCount}</span></p>*/}
-            </div>
-
-            <div className="edit-buttons">
-
-                <input
-                    type="file"
-                    id="logo-upload-input"
-                    accept="image/png, image/jpeg"
-                    onChange={handleLogoChange}
-                    style={{display: 'none'}}
-                />
-                <button onClick={handleButtonClick}>
-                    <i className="fa-solid fa-camera"></i> Change profile picture
-                </button>
-                <button><i className="fa-solid fa-panorama"></i> Change cover photo</button>
-            </div>
-
-        </div>
-
-
-
-        {seekerDetails &&
-            <>
-                <div className="floating-wrap">
-                    <h5>Personal details</h5>
-                    <form onSubmit={handleSubmit(editJobSeekerDetails)}>
-                        <div className="row">
-                            <div className="col-md-12">
-
-
-                                <div className="form-floating mb-3">
-                                    <input type="text" className="form-control" defaultValue={seekerDetails.email}  {...register("email")}
-                                           placeholder="David"/>
-                                    <label htmlFor="floatingFirstName">Email address</label>
-                                    <p className="error-message">{errors.email?.message}</p>
-                                </div>
-
-                                <div className="form-floating mb-3">
-                                    <input type="text" className="form-control" defaultValue={seekerDetails.firstName}  {...register("firstName")}
-                                           placeholder="David"/>
-                                    <label htmlFor="floatingFirstName">First name</label>
-                                    <p className="error-message">{errors.firstName?.message}</p>
-                                </div>
-
-                                <div className="form-floating mb-3">
-                                    <input type="text" className="form-control" defaultValue={seekerDetails.lastName} {...register("lastName")}
-                                           placeholder="David"/>
-                                    <label htmlFor="floatingFirstName">Last name</label>
-                                    <p className="error-message">{errors.lastName?.message}</p>
-                                </div>
-
-
-                                <div className="form-floating mb-3">
-                                    <input type="text" className="form-control" defaultValue={seekerDetails.phoneNumber}  {...register("phoneNumber")}
-                                           placeholder="David"/>
-                                    <label htmlFor="floatingFirstName">Phone number</label>
-                                    <p className="error-message">{errors.phoneNumber?.message}</p>
-                                </div>
-
-
-                            </div>
-                        </div>
-
-                        <div className="d-flex justify-content-end">
-                            <button className="blue-submit-button" type="submit"> Save changes</button>
-                        </div>
-
-                    </form>
-                </div>
-            </>
-        }
-
-
-    </div>)
-}
Index: bvista-frontend/src/views/profiles/RecruiterEditProfile.js
===================================================================
--- jobvista-frontend/src/views/profiles/RecruiterEditProfile.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,251 +1,0 @@
-import {useDispatch, useSelector} from "react-redux";
-import React, {useEffect, useState} from "react";
-import {RecruiterActions} from "../../redux/actions/recruiterActions";
-import * as yup from "yup";
-import {useForm} from "react-hook-form";
-import {yupResolver} from "@hookform/resolvers/yup";
-
-// Toast notification
-import 'react-toastify/dist/ReactToastify.css';
-import { toast, ToastContainer } from 'react-toastify';
-import {notifyLogoChange, notifyProfileEdit} from "../../utils/toastUtils";
-export const RecruiterEditProfile = () => {
-
-    const dispatch = useDispatch();
-    const auth = useSelector(state => (state.auth.currentUser))
-
-    const [recruiterDetails, setRecruiterDetails] = useState(null);
-
-    let logosState = useSelector(state => state.images.logos)
-    const [logoDispatched, setLogoDispatched] = useState(false)
-    const [logoFile, setLogoFile] = useState(null);
-    const [logoPreview, setLogoPreview] = useState(null);
-    const [logoView, setLogoView] = useState(null);
-
-
-    useEffect(() => {
-        if (auth) {
-            dispatch(RecruiterActions.fetchRecruiterEditDetailsById(auth.id, (success, response) => {
-                if (success) {
-                    setRecruiterDetails(response.data)
-                }
-            }))
-        }
-    }, [auth]);
-
-    useEffect(() => {
-        if (auth.id) {
-            if (!logoDispatched && !logosState[auth.id]) {
-                dispatch(RecruiterActions.downloadLogo(auth.id, (success, response) => {
-                    if (success) {
-                        setLogoView(response)
-                        setLogoDispatched(true)
-                    }
-                }))
-                console.log("LOGO GET")
-            } else {
-                setLogoView(logosState[auth.id])
-                console.log("LOGO STATE")
-            }
-        }
-
-    }, [auth])
-
-    const schema = yup.object().shape({
-        email: yup.string().required("Please enter your email"),
-        companyName: yup.string().required("Please enter your company name"),
-        companyDescription: yup.string(),
-        contactEmail: yup.string().required("Please enter your contact email"),
-        contactPhoneNumber: yup.string().required("Please enter your contact phone number"),
-        receptionist: yup.string(),
-    })
-
-    const {register, handleSubmit, control, formState: {errors}} = useForm({
-        resolver: yupResolver(schema),
-    });
-
-
-    const editRecruiterDetails = async (values) => {
-        try {
-            dispatch(RecruiterActions.editRecruiterDetailsById(
-                {
-                    email: values.email,
-                    companyName: values.companyName,
-                    companyDescription: values.companyDescription,
-                    contactEmail: values.contactEmail,
-                    contactPhoneNumber: values.contactPhoneNumber,
-                    receptionist: values.receptionist,
-
-                }, auth.id, (success, response) => {
-                    if (success) {
-                        console.log("Recruiter details edited")
-                        notifyProfileEdit()
-                        //window.location.reload();
-                    }
-                }
-            ))
-        } catch (err) {
-            console.error(err)
-        }
-    }
-
-    const handleButtonClick = () => {
-        document.getElementById('logo-upload-input').click();
-    };
-    const handleLogoChange = (event) => {
-        const file = event.target.files[0];
-        if (file && (file.type === 'image/png' || file.type === 'image/jpeg')) {
-            setLogoFile(file);
-            setLogoPreview(URL.createObjectURL(file));
-        }
-        event.target.value = null;
-    };
-
-    const handleLogoUpload = async () => {
-        try {
-            const formData = new FormData();
-            formData.append("recruiterId", auth.id);
-            formData.append("logoFile", logoFile);
-
-            dispatch(RecruiterActions.submitLogo(formData, (success, response) => {
-                if (success) {
-                    //console.log("Logo uploaded successfully")
-                    notifyLogoChange()
-                    setLogoPreview(null)
-                    setLogoView(URL.createObjectURL(logoFile))
-                }
-            }))
-
-        } catch (error) {
-            console.error(error)
-        }
-    }
-
-    const handleCancelUpload = () => {
-        setLogoFile(null)
-        setLogoPreview(null)
-        console.log(logoPreview)
-    }
-
-    return (<div className="my-workspace">
-            {logoPreview && (
-                <div className="confirmation-bar">
-                    <div className="confirmation-bar-buttons">
-                        <button className="cancel-changes" onClick={handleCancelUpload}>Cancel</button>
-                        <button className="save-changes" onClick={handleLogoUpload}>Save changes</button>
-
-                    </div>
-                </div>
-            )}
-
-            <div className="custom-container no-additional-margin">
-                <div className="photo-box">
-                    <div>
-                        <img
-                            src="/images/default-company-banner.jpg"
-                            className="company-banner"
-                            alt="Company Banner"
-                        />
-                        {logoPreview ? <>
-                            <img
-                                src={logoPreview}
-                                className="company-logo"
-                                alt=""
-                                width={200} height={200}
-                            />
-                        </> : <>
-                            <img
-                                // loading gif
-                                src={logoView}
-                                className="company-logo"
-                                alt=""
-                                width={200} height={200}
-                            />
-                        </>}
-                    </div>
-
-                    <div className="info-tab">
-                        <h3>{recruiterDetails && recruiterDetails.companyName}</h3>
-                    </div>
-
-                    <div className="edit-buttons">
-                        <input
-                            type="file"
-                            id="logo-upload-input"
-                            accept="image/png, image/jpeg"
-                            onChange={handleLogoChange}
-                            style={{display: 'none'}}
-                        />
-                        <button onClick={handleButtonClick}>
-                            <i className="fa-solid fa-camera"></i> Change logo
-                        </button>
-                        <button><i className="fa-solid fa-panorama"></i> Change cover photo</button>
-                    </div>
-
-                </div>
-
-
-                {/*<i className="fa-solid fa-circle-exclamation">*/}
-                {recruiterDetails && (
-                    <div className="floating-wrap">
-                        <h5>Company details</h5>
-                        <form onSubmit={handleSubmit(editRecruiterDetails)}>
-                            <div className="row">
-                                <div className="col-md-6">
-                                    <div className="form-floating mb-3">
-                                        <input type="text" className="form-control" defaultValue={recruiterDetails.email} {...register("email")}
-                                               placeholder="David"/>
-                                        <label htmlFor="floatingFirstName">Email address</label>
-                                        <p className="error-message">{errors.email?.message}</p>
-                                    </div>
-
-                                    <div className="form-floating mb-3">
-                                        <input type="text" className="form-control" defaultValue={recruiterDetails.contactEmail} {...register("contactEmail")}
-                                               placeholder="David"/>
-                                        <label htmlFor="floatingFirstName">Contact email address</label>
-                                        <p className="error-message">{errors.contactEmail?.message}</p>
-                                    </div>
-
-
-                                    <div className="form-floating mb-3">
-                                        <input type="text" className="form-control" defaultValue={recruiterDetails.contactPhoneNumber} {...register("contactPhoneNumber")}
-                                               placeholder="David"/>
-                                        <label htmlFor="floatingFirstName">Contact phone number</label>
-                                        <p className="error-message">{errors.contactPhoneNumber?.message}</p>
-                                    </div>
-
-                                    <div className="form-floating mb-3">
-                                        <input type="text" className="form-control" defaultValue={recruiterDetails.receptionist} {...register("receptionist")}
-                                               placeholder="David"/>
-                                        <label htmlFor="floatingFirstName">Receptionist</label>
-                                        <p className="error-message">{errors.receptionist?.message}</p>
-                                    </div>
-                                </div>
-                                <div className="col-md-6">
-                                    <div className="form-floating mb-3">
-                                        <input type="text" className="form-control" defaultValue={recruiterDetails.companyName} {...register("companyName")}
-                                               placeholder="David"/>
-                                        <label htmlFor="floatingCompanyName">Company name</label>
-                                        <p className="error-message">{errors.companyName?.message}</p>
-                                    </div>
-
-                                    <div className="form-floating mb-3">
-                                <textarea placeholder="Company description" defaultValue={recruiterDetails.companyDescription} className="form-control custom-text-area"
-                                          name="" id="" cols="30" rows="9" {...register("companyDescription")}></textarea>
-                                        <label htmlFor="floatingCompanyName">Company description</label>
-                                    </div>
-
-                                </div>
-                            </div>
-                            <div className="d-flex justify-content-end">
-                                <button className="blue-submit-button" type="submit">Save changes</button>
-                            </div>
-                        </form>
-                    </div>
-                )}
-                {/*<div className="line-separator"></div>*/}
-            </div>
-        </div>
-
-    )
-}
Index: bvista-frontend/src/views/profiles/RecruiterProfile.js
===================================================================
--- jobvista-frontend/src/views/profiles/RecruiterProfile.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,193 +1,0 @@
-import "../job_advertisements/JobAdvertisements.css"
-import {useDispatch, useSelector} from "react-redux";
-import {useEffect, useState} from "react";
-import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions";
-import {formatRelativeTime, sortElementsBy} from "../../utils/utils";
-import {Link} from "react-router-dom";
-import JobType from "../../enumerations/JobType";
-import {RecruiterActions} from "../../redux/actions/recruiterActions";
-
-import {useParams} from "react-router";
-
-
-export const RecruiterProfile = () => {
-
-    const dispatch = useDispatch();
-    const {id} = useParams();
-    const auth = useSelector(state => (state.auth.currentUser))
-
-    const [jobAdvertisementsByRecruiter, setJobAdvertisementsByRecruiter] = useState([]);
-    const [recruiterDetails, setRecruiterDetails] = useState(null);
-
-    let logosState = useSelector(state => state.images.logos)
-    const [logoDispatched, setLogoDispatched] = useState(false)
-    const [logoView, setLogoView] = useState(null);
-
-    const [activeJobListingsCount, setActiveJobListingsCount] = useState(0);
-
-
-    useEffect(() => {
-
-        JobAdvertisementActions.fetchRecruiterDetailsById(id, (success, response) => {
-            if (success) {
-                setRecruiterDetails(response.data)
-            }
-        })
-
-    }, []);
-
-    useEffect(() => {
-        if (id) {
-            if (!logoDispatched && !logosState[id]) {
-                dispatch(RecruiterActions.downloadLogo(id, (success, response) => {
-                    if (success) {
-                        setLogoView(response)
-                        setLogoDispatched(true)
-                    }
-                }))
-            } else {
-                setLogoView(logosState[id])
-            }
-        }
-
-    }, [auth])
-
-    useEffect(() => {
-
-        dispatch(JobAdvertisementActions.fetchJobAdvertisementsByRecruiterProfile(id, (success, response) => {
-            if (success && response.data.length > 0) {
-                setJobAdvertisementsByRecruiter(sortElementsBy(response.data, "postedOn"))
-                setActiveJobListingsCount(countActiveJobListings(response.data));
-            }
-        }))
-    }, [])
-
-
-    function countActiveJobListings(jobAds) {
-        if (jobAds.length > 0) {
-            const activeJobListings = jobAds.filter(job => job.active)
-            return activeJobListings.length;
-        }
-        return 0;
-    }
-
-
-    return (<div className="my-workspace">
-            <div className="custom-container no-additional-margin">
-                <div className="photo-box">
-                    <div>
-                        <img
-                            src="/images/default-company-banner.jpg"
-                            className="company-banner"
-                            alt="Company Banner"
-                        />
-                        <img
-                            // loading gif
-                            src={logoView}
-                            className="company-logo"
-                            alt=""
-                            width={200} height={200}
-                        />
-
-                    </div>
-
-                    <div className="info-tab">
-                        <h3>{recruiterDetails && recruiterDetails.companyName}</h3>
-                        <p>Active job listings: <span>{activeJobListingsCount}</span></p>
-                    </div>
-                </div>
-
-                {recruiterDetails &&
-                    <>
-                        <div className="details-wrap-profile">
-                            <h4>About the company</h4>
-                            <p>{recruiterDetails.companyDescription ?
-                                recruiterDetails.companyDescription : "There is no info about this company yet."
-                            }</p>
-                            <p>
-                                <span> <i
-                                    className="fa-solid fa-envelope"></i> {recruiterDetails.contactEmail}</span> • <span>
-                                <i className="fa-solid fa-phone"></i> {recruiterDetails.contactPhoneNumber}</span>
-                                {recruiterDetails.receptionist && <span> • <i
-                                    className="fa-solid fa-user"></i> {recruiterDetails.receptionist}</span>}
-                            </p>
-                        </div>
-                    </>
-                }
-
-                {/*<div className="line-separator"></div>*/}
-
-                {/*<div className="head-dashboard-box">*/}
-                {/*    <div className="row">*/}
-                {/*        <div className="col-md-12 filter-container">*/}
-                {/*            <div className="search-container">*/}
-                {/*                <i className="fa-solid fa-magnifying-glass search-icon"></i>*/}
-                {/*                <input*/}
-                {/*                    className="search-input"*/}
-                {/*                    type="text"*/}
-                {/*                    placeholder="Search job advertisement by title..."*/}
-                {/*                    value={searchTerm}*/}
-                {/*                    onChange={event => setSearchTerm(event.target.value)}*/}
-                {/*                />*/}
-                {/*            </div>*/}
-                {/*            <div className="sort-section item">*/}
-                {/*                <Select*/}
-                {/*                    defaultValue={{value: "all", label: "All industries"}}*/}
-                {/*                    value={selectedIndustry.value}*/}
-                {/*                    onChange={option => setSelectedIndustry(option.value)}*/}
-                {/*                    options={industryOptionsFilter}*/}
-                {/*                    className="sort-range sort"*/}
-                {/*                />*/}
-                {/*            </div>*/}
-                {/*            <div className="sort-section item">*/}
-                {/*                <Select*/}
-                {/*                    defaultValue={{value: "newest", label: "Date (Newest First)"}}*/}
-                {/*                    value={selectedSortOrder.value}*/}
-                {/*                    onChange={option => setSelectedSortOrder(option.value)}*/}
-                {/*                    options={sortOptions}*/}
-                {/*                    className="sort-range sort"*/}
-                {/*                />*/}
-                {/*            </div>*/}
-                {/*            <button onClick={filterJobAdvertisements} className="btn-open-modal">Find jobs</button>*/}
-                {/*        </div>*/}
-                {/*    </div>*/}
-                {/*</div>*/}
-                <div className="row row-cols-1 row-cols-md-4 g-4">
-
-                    {jobAdvertisementsByRecruiter && jobAdvertisementsByRecruiter.map((jobAd, index) => (
-                        <div key={index} className="col">
-                            <div className="custom-card hub-card">
-                                <div className="card-head">
-                                    <span className="hourly-salary"><b>${jobAd.startingSalary}/hr</b></span>
-                                    <span
-                                        className="job-type"> {jobAd.jobType === JobType.JOB ? "Job" : "Internship"}</span>
-                                    {!jobAd.active && <span className="expired">Expired</span>}
-                                </div>
-                                <div className="card-body">
-                                    <h5 className="card-title">{jobAd.title}</h5>
-                                    <span>{jobAd.industry} • <span style={{
-                                        color: "black", fontWeight: "bold"
-                                    }}>{formatRelativeTime(jobAd.postedOn)}</span></span>
-                                    <div className="card-info">
-                                        <span><i className="fa-solid fa-building"
-                                                 style={{color: "#000000"}}></i> Company: <span style={{
-                                            color: "black", fontWeight: "bold"
-                                        }}>{jobAd.recruiterName}</span></span> <br/>
-                                    </div>
-
-                                </div>
-                                <div className="card-foot">
-                                    <Link to={`/job-advertisements/${jobAd.id}`} className="card-button">Read
-                                        more</Link>
-                                </div>
-                            </div>
-                        </div>))}
-
-                </div>
-
-
-            </div>
-        </div>
-
-    )
-}
Index: bvista-frontend/src/views/selectOptions.js
===================================================================
--- jobvista-frontend/src/views/selectOptions.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,64 +1,0 @@
-export const industryOptions = [
-    { value: "Information Technology", label: "Information Technology" },
-    { value: "Finance", label: "Finance" },
-    { value: "Healthcare", label: "Healthcare" },
-    { value: "Education", label: "Education" },
-    { value: "Engineering", label: "Engineering" },
-    { value: "Retail", label: "Retail" },
-    { value: "Hospitality", label: "Hospitality" },
-    { value: "Manufacturing", label: "Manufacturing" },
-    { value: "Construction", label: "Construction" },
-    { value: "Marketing", label: "Marketing" },
-    { value: "Media", label: "Media" },
-    { value: "Telecommunications", label: "Telecommunications" },
-    { value: "Transportation", label: "Transportation" },
-    { value: "Government", label: "Government" },
-    { value: "Consulting", label: "Consulting" }
-];
-
-export const industryOptionsFilter = [
-    { value: "all", label: "All industries" },
-    { value: "Information Technology", label: "Information Technology" },
-    { value: "Finance", label: "Finance" },
-    { value: "Healthcare", label: "Healthcare" },
-    { value: "Education", label: "Education" },
-    { value: "Engineering", label: "Engineering" },
-    { value: "Retail", label: "Retail" },
-    { value: "Hospitality", label: "Hospitality" },
-    { value: "Manufacturing", label: "Manufacturing" },
-    { value: "Construction", label: "Construction" },
-    { value: "Marketing", label: "Marketing" },
-    { value: "Media", label: "Media" },
-    { value: "Telecommunications", label: "Telecommunications" },
-    { value: "Transportation", label: "Transportation" },
-    { value: "Government", label: "Government" },
-    { value: "Consulting", label: "Consulting" }
-];
-
-export const jobTypeOptions = [
-    {value: "JOB", label: "Job"},
-    {value: "INTERNSHIP", label: "Internship"},
-]
-
-export const employmentStatusOptions = [
-    {value: "FULL_TIME", label: "Full time"},
-    {value: "PART_TIME", label: "Part time"}
-]
-
-export const dataRangeOptions = [
-    {value: "all", label: "Lifetime"},
-    {value: "7days", label: "Last 7 days"},
-    {value: "30days", label: "Last 30 days"},
-    {value: "90days", label: "Last 90 days"},
-    {value: "12months", label: "Last 12 months"},
-    {value: "today", label: "Today"},
-    {value: "thisMonth", label: "This month"},
-    {value: "12months", label: "This year"},
-]
-
-export const sortOptions = [
-    { value: "date_newest", label: "Date (Newest First)" },
-    { value: "date_oldest", label: "Date (Oldest First)" },
-    { value: "salary_highest", label: "Salary (High to Low)" },
-    { value: "salary_lowest", label: "Salary (Low to High)" },
-]
Index: bvista-frontend/src/views/shared_css/Modal.css
===================================================================
--- jobvista-frontend/src/views/shared_css/Modal.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,208 +1,0 @@
-
-.modal-wrap {
-    display: inline;
-}
-
-.btn-close-modal {
-    position: absolute;
-    top: 15px;
-    right: 15px;
-    padding: 5px 7px;
-    cursor: pointer;
-}
-
-.react-responsive-modal-modal {
-    background: #f1f1f1;
-    border-radius: 10px;
-    min-width: 1000px !important;
-    max-width: 1000px !important;
-    height: auto;
-    padding: 0 !important;
-    overflow-y: hidden;
-}
-
-.react-responsive-modal-closeButton {
-   display: none !important;
-}
-
-.react-responsive-modal-modal .head-modal {
-    border-top-left-radius: 10px;
-    border-top-right-radius: 10px;
-    background-color: rgba(1,38,90,0.9);
-    /*background-color: white;*/
-    background-size: cover;
-    padding: 14px 48px;
-    /*color: #3A3B3C;*/
-    color: white;
-    border-bottom: 1px solid #E5E4E7;
-    display: flex;
-    justify-content: left;
-}
-
-.react-responsive-modal-modal .head-modal h3 {
-    text-transform: uppercase;
-    font-weight: bold;
-    display: inline;
-    margin: 0;
-}
-
-
-.react-responsive-modal-modal .modal-content {
-    /*line-height: 1.4;*/
-    padding: 30px 48px;
-    /*height: 100%;*/
-    border: 0;
-}
-
-.react-responsive-modal-modal .modal-content form .modal-buttons{
-    display: flex;
-    justify-content: end;
-    gap: 10px;
-    margin-right: 10px;
-}
-
-
-.react-responsive-modal-modal .modal-content form .label {
-    display: block;
-    margin-bottom: 10px;
-    font-weight: 500;
-}
-
-.react-responsive-modal-modal .modal-content form input {
-    display: block;
-    padding: 5px 10px;
-    width: 100%;
-    border-radius: 3px;
-    border: 1px solid lightgrey;
-}
-
-.react-responsive-modal-modal .modal-content form textarea {
-    width: 100%;
-    resize: none;
-    border-radius: 3px;
-    border: 1px solid lightgrey;
-    padding: 5px 10px;
-}
-
-.description-textarea {
-    height: 285px;
-}
-
-.application-textarea {
-    height: 100px;
-    /*margin-bottom: 20px;*/
-}
-
-.resume-link {
-    display: block;
-    padding: 5px 10px;
-    width: 100%;
-    border-radius: 3px;
-    border: 1px solid lightgrey;
-}
-.custom {
-    margin-top: 10px;
-}
-
-input:focus, textarea:focus {
-    outline-color: cornflowerblue;
-}
-
-.modal-buttons button, .modal-buttons div  {
-    position: relative;
-    padding: 5px 20px;
-    border-radius: 5px;
-    border: none;
-    color: white;
-    /*text-transform: uppercase;*/
-    font-weight: 500;
-    margin-top: 15px;
-    cursor: pointer
-}
-
-.modal-buttons .submit-btn {
-    background: #06367a;
-    transition: background-color 0.3s ease, color 0.3s ease;
-}
-
-.modal-buttons .submit-btn:hover {
-    background-color: #2e579b;
-}
-
-.modal-buttons .cancel-btn {
-    color: #858B96;
-    background-color: #F0F0F0;
-    transition: background-color 0.3s ease, color 0.3s ease;
-}
-.modal-buttons .cancel-btn:hover {
-    background-color: #e0e0e0;
-    color: #555;
-}
-
-.category-option {
-    display: flex;
-    align-items: center;
-    gap: 10px;
-}
-
-/* DELETE MODAL */
-
-.modal-delete-buttons {
-    display: flex;
-    justify-content: flex-end;
-    gap: 10px;
-    margin-top: 25px;
-}
-
-.modal-delete-content {
-    padding: 20px 25px;
-}
-
-.modal-delete-content-inside {
-    display: flex;
-    align-items: center;
-}
-
-.modal-delete-text {
-    padding-left: 35px;
-
-}
-
-.modal-delete-text p {
-    margin: 0;
-}
-
-
-.modal-delete-buttons .cancel-btn, .modal-delete-buttons .delete-btn {
-    display: inline;
-    border: none;
-    padding: 5px 25px 5px 25px;
-    border-radius: 7px;
-}
-
-.modal-delete-buttons .delete-btn {
-    background-color: red;
-    color: white;
-}
-
-.x-icon {
-    transform: scale(3.3) !important;
-    color: #D93936 !important;
-    padding: 0 15px !important;
-    /*margin-top: 20px !important;*/
-}
-
-.ql-snow .ql-picker.ql-font {
-    display: none;
-}
-.ql-toolbar.ql-snow .ql-picker-options {
-    background-color: white;
-}
-.ql-snow .ql-tooltip {
-    transform: translateX(100px) !important;
-}
-
-
-
-
-
Index: bvista-frontend/src/views/shared_css/Random.css
===================================================================
--- jobvista-frontend/src/views/shared_css/Random.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,65 +1,0 @@
-.blue-submit-button {
-    font-size: 1rem;
-    padding: 5px 17px;
-    border-radius: 8px;
-    background-color: #06367a;
-    border: none;
-    color: white;
-    font-weight: 500;
-    transition: background-color 0.3s ease;
-}
-
-.blue-submit-button:hover {
-    background-color: #2e579b;
-}
-
-/*FILTER CONTAINER*/
-
-.filter-container {
-    height: 10%;
-    width: 100%;
-    background-color: #fff;
-    border-radius: 12px;
-    padding: 15px 20px;
-    margin-bottom: 20px;
-    margin-top: 30px;
-    height: auto;
-}
-
-.filter-container .filter-box {
-    display: inline-flex;
-    justify-content: center;
-    gap: 10px;
-}
-
-
-.filter-container .search-container {
-    position: relative;
-    /*float: left;*/
-    display: inline-block;
-}
-.filter-container .search-container .search-input {
-    width: 400px;
-    display: inline;
-    padding: 5px 30px;
-    border-radius: 10px;
-    border: 1px solid lightgrey;
-    /*margin-right: 15px;*/
-}
-
-.filter-container .search-container .search-input:focus {
-    outline-color: #2684ff;
-}
-
-.filter-container .search-container i {
-    left: 10px;
-    position: absolute;
-    top: 10px;
-}
-
-.filter-container .item {
-    width: 20%;
-    display: inline-block;
-    /*margin-left: 10px;*/
-    /*float: left !important;*/
-}
Index: bvista-frontend/src/views/static/AboutUs.css
===================================================================
--- jobvista-frontend/src/views/static/AboutUs.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,47 +1,0 @@
-.about-wrap {
-    margin-top: 30px;
-}
-
-.floating-wrap h3 {
-    font-family: Segoe UI;
-    text-align: center;
-}
-.floating-wrap h4 {
-    text-align: center;
-}
-
-.floating-wrap h2 {
-    font-family: Cairo;
-    font-weight: bold;
-}
-.floating-wrap p {
-    font-family: Ubuntu
-}
-.floating-wrap {
-    background-color:white;
-    padding: 15px 20px;
-    border-radius: 15px;
-    margin-bottom: 20px;
-}
-
-.floating-inside-wrap {
-    background-color: rgb(243, 242, 241);
-    padding: 15px 20px;
-    border-radius: 15px;
-    margin: 10px;
-}
-
-.about-us-img {
-    margin-bottom: 20px;
-    border-radius: 15px;
-    width: 100%;
-    padding: 0;
-}
-
-.start-title {
-    font-weight: bold;
-    font-size: 20px;
-    font-family: Segoe UI;
-    text-transform: uppercase;
-
-}
Index: bvista-frontend/src/views/static/AboutUs.js
===================================================================
--- jobvista-frontend/src/views/static/AboutUs.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,92 +1,0 @@
-import "./AboutUs.css"
-export const AboutUs = () => {
-
-    return (
-        <div className="container">
-            <div className="about-wrap">
-                <div className="row">
-                    <div className="col-md-6">
-                        <div className="floating-wrap">
-                            <h4>Your Future, Our Mission</h4>
-                            <p>
-                                At Job Vista, we believe that finding the right job should be simple, efficient, and rewarding. Our mission is to connect talented individuals with their dream careers while helping companies discover the best candidates to join their teams.
-                            </p>
-
-
-                        </div>
-                        <div className="floating-wrap">
-                             <h4>How It Started</h4>
-                            <p>
-                                Founded in 2024, Job Vista was born out of a passion for transforming the job search experience. The idea for Job Vista originated as a university project, where a group of us noticed that the job market was becoming increasingly complex, with both job seekers and employers facing numerous challenges in finding the perfect match. Inspired by the potential to make a real difference, we decided to turn our project into a full-fledged platform. Our goal was to create an app that simplifies this process, making it easier for everyone involved.
-                            </p>
-
-                            <h4>What We Offer</h4>
-
-                            <p><span className="start-title">Job Seekers </span>
-                                can browse through thousands of job opportunities from various industries, all in one place. Enjoy an easy application process where you can apply for jobs with just a few clicks and track your applications seamlessly. Receive personalized job alerts about openings that match your skills and interests. Additionally, access a wealth of career resources, including articles, tips, and tools to help you prepare for interviews, improve your resume, and advance your career.</p>
-                            <p>
-                                <span className="start-title">Recruiters </span>
-                                can post job openings and manage applications with our user-friendly interface, ensuring efficient recruitment. Find the best talent using our advanced search and filtering tools to discover candidates that fit your requirements. Enhance your brand visibility by showcasing your company and attracting top talent with a detailed company profile.
-                            </p>
-
-                            {/*<h4>*/}
-                            {/*    Our Vision*/}
-                            {/*</h4>*/}
-                            {/*<p>*/}
-                            {/*    We envision a world where job seekers and employers can effortlessly connect, leading to fulfilling careers and successful businesses. By leveraging technology and innovation, Job Vista aims to be the go-to platform for job hunting and recruitment.*/}
-                            {/*</p>*/}
-                        </div>
-                    </div>
-                    <div className="col-md-6">
-
-
-                        <div className="row">
-                            <img className="about-us-img" src="/images/about-us.jpg" alt=""/>
-                        </div>
-                        <div className="row">
-                            <div className="floating-wrap">
-                                {/*<h4>*/}
-                                {/*    Join Us*/}
-                                {/*</h4>*/}
-
-                                {/*<p>*/}
-                                {/*    Whether you're looking for your next job opportunity or searching for the perfect candidate, Job Vista is here to support you every step of the way. Join our community today and take the next step towards a brighter future.*/}
-                                {/*</p>*/}
-                                <div className="row">
-                                    <div className="col-md-6">
-                                        <div className="floating-inside-wrap">
-                                            <h2>120</h2>
-                                            <p>Total Recruiters</p>
-                                        </div>
-                                    </div>
-                                    <div className="col-md-6">
-                                        <div className="floating-inside-wrap">
-                                            <h2>2400+</h2>
-                                            <p>Total Job Seekers</p>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div className="row">
-                                    <div className="col-md-6">
-                                        <div className="floating-inside-wrap">
-                                            <h2>240</h2>
-                                            <p>Total Job Listings</p>
-                                        </div>
-                                    </div>
-                                    <div className="col-md-6">
-                                        <div className="floating-inside-wrap">
-                                            <h2>4000+</h2>
-                                            <p>Total Applications</p>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-
-                </div>
-            </div>
-
-        </div>
-    )
-}
Index: bvista-frontend/src/views/static/ErrorPage.js
===================================================================
--- jobvista-frontend/src/views/static/ErrorPage.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,17 +1,0 @@
-import "./NoAccess.css"
-export const ErrorPage = () => {
-    return (
-        <div className="d-flex align-items-center justify-content-center vh-100 landing-page">
-            <div className="text-center">
-                <h1 className="display-1 fw-bold">404</h1>
-                <p className="fs-3"><span className="text-danger">Opps!</span> Page not found.</p>
-                <p className="lead">
-                    The page you’re looking for is not available or doesn’t exist.
-                </p>
-                {/*{user && <Link to="/dashboard" className="go-back-btn">Go back</Link>}*/}
-                {/*{!user && <Link to="/" className="go-back-btn">Go back</Link>}*/}
-
-            </div>
-        </div>
-    )
-}
Index: jobvista-frontend/src/views/static/Header.css
===================================================================
--- jobvista-frontend/src/views/static/Header.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/views/static/Header.css	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -6,5 +6,4 @@
     background-size: contain;
     margin-right: 0;
-
 }
 
@@ -19,14 +18,10 @@
 
 .navbar {
-    width: 100%;
     height: 80px;
-    background-color: #f8f9fa;
-    font-family: Poppins, sans-serif;
-    position: fixed;
-    z-index: 10;
-    box-sizing: border-box;
+    background-color: #535C91;
 }
 
 .navbar .nav-item {
+
     color: rgba(1,38,90,0.9);
     margin-right: 15px;
@@ -35,4 +30,5 @@
     font-size: 20px;
     font-weight: 600;
+    //font-family: 'Ubuntu', sans-serif;
     font-family: Poppins, sans-serif;
 }
@@ -40,4 +36,5 @@
     color: white;
     background-color: rgba(1,38,90,0.9);
+    /*border-bottom: 3px solid rgba(1,38,90,0.9);*/
 }
 .active {
@@ -46,157 +43,29 @@
 }
 
-/*NOVO*/
-
-:root {
-    --gray: #555;
-    --purple: #4e65ff;
-    --green-blue: #92effd;
-    --white: #fff;
-}
-
-.navigation {
-    position: fixed;
-    top: 10px;
-    right: 20px;
-    width: 120px;
-    height: 60px;
-    display: flex;
-    justify-content: space-between;
-    border-radius: 5px;
-    background: var(--white);
-    box-shadow: 0 25px 35px rgba(0, 0, 0, 0.3);
-    /*box-shadow: 0px 0px 18px 4px rgba(0,0,0,0.46);*/
-    overflow: hidden;
-    transition: height 0.5s, width 0.5s;
-    transition-delay: 0s, 0.3s;
-    z-index: 15;
-    /*border: 2px solid var(--gray);*/
-}
-
-.navigation .user-box {
-    position: relative;
-    width: 60px;
-    height: 60px;
-    display: flex;
-    align-items: center;
-    overflow: hidden;
-    transition: 0.3s;
-    transition-delay: 0.3s;
-}
-
-.navigation .user-box .username {
-    font-size: 1.2rem;
-     font-weight: bold;
-    white-space: nowrap;
-    margin: 0;
-    color: black;
-    padding-top: 10px;
+.user {
 
 }
 
-.navigation .user-box .role {
-    color: darkgray;
-    margin-bottom: 10px;
-    font-size: 1rem;
-}
-
-.navigation .user-box .image-box {
-    position: relative;
-    min-width: 60px;
-    height: 60px;
-    background: var(--white);
-    border-radius: 50%;
-    overflow: hidden;
-    border: 10px solid var(--white);
+.auth-box {
+    display: inline-block;
+    margin-right: 35px;
+    margin-left: 5px;
+    //height: 50px;
 
 }
 
-.navigation .user-box .image-box img {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 100%;
-    height: 100%;
-    object-fit: cover;
-    /*border: 1px solid black*/
+.user {
+    color: black;
+    padding-top: 10px;
+    margin-bottom: 0;
+
 }
 
-.navigation .menu-toggle {
-    position: relative;
-    width: 60px;
-    height: 60px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    cursor: pointer;
-}
+.role {
+    color: darkgray;
+    margin-bottom: 10px;
+    font-size: 15px;
 
-.navigation .menu-toggle::before {
-    content: "";
-    position: absolute;
-    width: 32px;
-    height: 2px;
-    background: var(--gray);
-    transform: translateY(-10px);
-    box-shadow: 0 10px var(--gray);
-    transition: 0.5s;
-}
-
-.navigation .menu-toggle::after {
-    content: "";
-    position: absolute;
-    width: 32px;
-    height: 2px;
-    background: var(--gray);
-    transform: translateY(10px);
-    transition: 0.5s;
-}
-
-.menu {
-    position: absolute;
-    width: 100%;
-    /*height: calc(100% - 60px);*/
-    margin-top: 60px;
-    padding: 0;
-    border-top: 1px solid rgba(0, 0, 0, 0.1);
-}
-
-.menu .menu-link {
-    text-decoration: none;
-    color: black;
-    display: flex;
-    align-items: center;
-    gap: 10px;
-    font-size: 1.1rem;
-    padding: 15px 30px;
-}
-.menu .menu-link:hover {
-    background-color: #EEEEEE;
 }
 
 
-.navigation.active .menu-toggle::before {
-    transform: translateY(0px) rotate(45deg);
-    box-shadow: none;
-}
-
-.navigation.active .menu-toggle::after {
-    transform: translateY(0px) rotate(-45deg);
-}
-
-.navigation.active {
-    width: 300px;
-    height: 175px;
-    transition: width 0.3s, height 0.3s;
-    transition-delay: 0s, 0.3s;
-}
-
-.navigation.active .user-box {
-    width: calc(100% - 60px);
-    transition-delay: 0s;
-}
-
-
-
-
-
Index: jobvista-frontend/src/views/static/Header.js
===================================================================
--- jobvista-frontend/src/views/static/Header.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ jobvista-frontend/src/views/static/Header.js	(revision d8b6c91094bd4c748b347d914a3c4c3745d51587)
@@ -1,82 +1,27 @@
 import {Link, NavLink} from "react-router-dom";
 import "./Header.css"
-import {jwtDecode} from "jwt-decode";
 import {useDispatch, useSelector} from 'react-redux';
 import {useEffect, useState} from "react";
 import {AuthActions} from "../../redux/actions/authActions";
 import Roles from "../../enumerations/Roles";
-import {useNavigate} from "react-router";
-import {AUTH_TOKEN} from "../../axios/axiosInstance";
-import {JobSeekerActions} from "../../redux/actions/JobSeekerActions";
-import {RecruiterActions} from "../../redux/actions/recruiterActions";
 
-export const Header = (props) => {
+export const Header = () => {
 
     const auth = useSelector(state => state.auth.currentUser);
     const dispatch = useDispatch();
-    const navigator = useNavigate();
 
-    const [role, setRole] = useState("");
-    const [username, setUsername] = useState("");
-    const [user, setUser] = useState("");
-
-    const [profilePics, setProfilePics] = useState({});
-    let profilePicState = useSelector(state => state.images.profilePictures);
-    const [profilePicDispatched, setProfilePicDispatched] = useState(false);
-
-    const [logos, setLogos] = useState({});
-    let logoState = useSelector(state => state.images.logos);
-    const [logoDispatched, setLogoDispatched] = useState(false);
+    const [role, setRole] = useState(null);
+    const [username, setUsername] = useState(null);
 
     const signOut = () => {
         dispatch(AuthActions.signOut());
         window.location = "/";
-        //navigator("/")
     }
-    const [isActive, setIsActive] = useState(false);
-
-    const toggleMenu = () => {
-        setIsActive(!isActive);
-    };
 
     useEffect(() => {
-        const token = localStorage.getItem(AUTH_TOKEN);
-        if (token != null) {
-            try {
-                const decodedToken = jwtDecode(token);
-                setUser({
-                    name: decodedToken.name,
-                    role: decodedToken.role,
-                    hasAccess: decodedToken.hasAccess,
-                    id: decodedToken.id
-                });
-            } catch (error) {
-                console.error('Failed to decode token', error);
-            }
-        }
-    }, [auth]);
 
-    useEffect(() => {
         if (auth) {
             setRole(auth.role);
             setUsername(auth.name);
-
-            console.log("ROLE: " + auth.role)
-
-            if (auth.role === Roles.JOBSEEKER) {
-                dispatch(JobSeekerActions.downloadProfilePic(auth.id, (success, reponse) => {
-                    if (success) {
-                        setProfilePics(prevState => ({...prevState, [auth.id]: reponse}))
-                        console.log(reponse)
-                    }
-                }))
-            } else if (auth.role === Roles.RECRUITER) {
-                dispatch(RecruiterActions.downloadLogo(auth.id, (success, reponse) => {
-                    if (success) {
-                        setLogos(prevState => ({...prevState, [auth.id]: reponse}))
-                        console.log(reponse)
-                    }
-                }))
-            }
         }
     }, [auth]);
@@ -85,73 +30,43 @@
         <nav className="navbar navbar-expand-lg bg-light">
             <div className="container-fluid">
-                <Link to="/" className="logo"/>
-                <Link to="/" className="brand-name"/>
-                <div className="navbar-collapse">
+                <Link to="/" className="logo navbar-brand" />
+                <Link to="/" className="brand-name navbar-brand" />
+                <div className="collapse navbar-collapse" id="navbarSupportedContent">
                     <ul className="navbar-nav me-auto mb-2 mb-lg-0">
-                        <NavLink to="/" className="nav-item nav-link">Home</NavLink>
-                        {role == Roles.JOBSEEKER &&
+                        <NavLink to="/" className="nav-item nav-link" activeClassName="active">Home</NavLink>
+                        {role==Roles.JOBSEEKER &&
                             <>
-                                <NavLink to="/my-applications" className="nav-item nav-link">My Applications</NavLink>
+                                <NavLink to="/applications" className="nav-item nav-link" activeClassName="active">Applications</NavLink>
+                                <NavLink to="/favoritejobs" className="nav-item nav-link" activeClassName="active">Saved</NavLink>
+                            </>
+
+                        }
+                        {role==Roles.RECRUITER &&
+                            <>
+                                <NavLink to="/jobadvertisements" className="nav-item nav-link" activeClassName="active">Job Advertisements</NavLink>
+                                <NavLink to="/favoritejobs" className="nav-item nav-link" activeClassName="active">Saved</NavLink>
                             </>
                         }
-                        {role == Roles.RECRUITER &&
-                            <>
-                                <NavLink to="/job-management-hub" className="nav-item nav-link">Job Management Hub</NavLink>
-                            </>
-                        }
-                        {role === Roles.ADMIN &&
-                            <>
-                                <NavLink to="/admin-panel" className="nav-item nav-link">Admin Panel</NavLink>
-                            </>
-                        }
-                        <NavLink to="/about" className="nav-item nav-link">About Us</NavLink>
-                        {/*<NavLink to="/contact" className="nav-item nav-link">Support</NavLink>*/}
+                        <NavLink to="/about" className="nav-item nav-link">About</NavLink>
+                        <NavLink to="/contact" className="nav-item nav-link">Contact</NavLink>
                     </ul>
+
+                    {auth ?
+                        <>
+                            <img src="/images/user.png" width="45" height="45"/>
+                            <div className="auth-box">
+                                <p className="user"><b>{username}</b></p>
+                                <p className="role">{role==Roles.RECRUITER ? "Recruiter" : "Job Seeker"}</p>
+                            </div>
+
+
+                            <Link onClick={signOut} className="btn btn-outline-secondary">Log out</Link>
+                        </> :
+                        <>
+                            <Link to="/signin" className="btn btn-outline-secondary">Sign in</Link>
+                        </>
+                    }
+
                 </div>
-                {(auth.role === Roles.RECRUITER || auth.role === Roles.ADMIN || auth.role === Roles.JOBSEEKER) ?
-                    <>
-                        <div className={`navigation ${isActive ? 'active' : ''}`}>
-                            <div className="user-box">
-                                <div className="image-box">
-                                    {user.role === Roles.JOBSEEKER && <img src={profilePicState[auth.id]} /> }
-                                    {user.role === Roles.RECRUITER && <img src={logoState[auth.id]} /> }
-                                    {user.role === Roles.ADMIN && <img src="/images/admin.jpg"/> }
-                                    {/*<img src="https://lh3.googleusercontent.com/a/ACg8ocJOmmRzyRWcuhJj_sCzIoxMeP1M1DOgQ1UeYsFoeJuFB4XgOAnS=s96-c"/>*/}
-                                </div>
-                                <div className="auth-box">
-                                    <p className="username">{user.name}</p>
-                                    {user.role === Roles.RECRUITER && <p className="role">Recruiter</p>}
-                                    {user.role === Roles.JOBSEEKER && <p className="role">Job Seeker</p>}
-                                    {user.role === Roles.ADMIN && <p className="role">Admin</p>}
-                                </div>
-
-                            </div>
-                            <div className="menu-toggle" onClick={toggleMenu}></div>
-                            <ul className="menu">
-                                {user.role == Roles.JOBSEEKER &&
-                                    <>
-                                        <Link to="/job-seeker/edit-profile" onClick={toggleMenu} className="menu-link">
-                                            <i className="fa-solid fa-pen-to-square"></i> Edit profile
-                                        </Link>
-                                    </>
-                                }
-                                {user.role == Roles.RECRUITER &&
-                                    <>
-                                        <Link to="/recruiter/edit-profile" onClick={toggleMenu} className="menu-link">
-                                            <i className="fa-solid fa-pen-to-square"></i> Edit profile
-                                        </Link>
-                                    </>
-                                }
-
-                                <Link onClick={signOut} className="menu-link">
-                                    <i className="fa-solid fa-right-from-bracket"></i> Log out
-                                </Link>
-                            </ul>
-                        </div>
-                    </> :
-                    <>
-                        <Link to="/signin" className="btn auth-secondary-btn">Sign in</Link>
-                    </>
-                }
             </div>
         </nav>
Index: bvista-frontend/src/views/static/Loading.css
===================================================================
--- jobvista-frontend/src/views/static/Loading.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,34 +1,0 @@
-
-.loading-container {
-    display: flex;
-    height: 100vh;
-    justify-content: center;
-    align-items: center;
-    gap: 10px;
-    background-color: #f8f9fa;
-}
-
-.loading-logo {
-    width: 85px;
-    height: 85px;
-    display: inline-block;
-    background: url("../../../public/images/logo.png") no-repeat center center;
-    background-size: contain;
-
-}
-
-.loading-brand-name {
-    width: 275px;
-    height: 175px;
-    display: inline-block;
-    background: url("../../../public/images/brand-name-2.png") no-repeat center center;
-    background-size: contain;
-}
-
-.loading-signature {
-    width: 275px;
-    height: 175px;
-    display: inline-block;
-    background: url("../../../public/images/signature.png") no-repeat center center;
-    background-size: contain;
-}
Index: bvista-frontend/src/views/static/Loading.js
===================================================================
--- jobvista-frontend/src/views/static/Loading.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,12 +1,0 @@
-import "./Loading.css"
-
-export const Loading = () => {
-    return (
-        <div className="loading-container">
-            <div className="loading-logo"></div>
-            <div className="loading-brand-name"></div>
-
-            {/*<div className="loading-signature"></div>*/}
-        </div>
-    )
-}
Index: bvista-frontend/src/views/static/NoAccess.css
===================================================================
--- jobvista-frontend/src/views/static/NoAccess.css	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,38 +1,0 @@
-
-.landing-page {
-    background-color: #031c30;
-    background-image: url("https://www.gstatic.com/mobilesdk/190424_mobilesdk/nav_nachos@2x.png");
-    background-position: bottom 0;
-    background-size: 250vh 170vh;
-    background-repeat: no-repeat;
-    /*background-image: url("/public/wallet-images/proba3.jpg");*/
-    /*background-size: cover;*/
-    /*background-image: url("../../public/logo.png");*/
-    /*background-repeat: no-repeat;*/
-    /*background-position: center;*/
-    /*background-size: 25%;*/
-    width: 100%;
-    height: 100vh;
-    z-index: 9999;
-    position: fixed;
-}
-
-.text-center {
-    color: white;
-    transform: scale(1.5);
-}
-
-.go-back-btn {
-    text-decoration: none;
-    background-color: white;
-    border-radius: 12px;
-    padding: 5px 15px;
-    color: #C41E3A;
-    font-weight: bold;
-    border: none;
-    transition: 0.3s;
-}
-
-.go-back-btn:hover {
-    opacity: 0.6;
-}
Index: bvista-frontend/src/views/static/NoAccess.js
===================================================================
--- jobvista-frontend/src/views/static/NoAccess.js	(revision 4d97b633e131eca76d6c290321725684fc1d5970)
+++ 	(revision )
@@ -1,28 +1,0 @@
-import "./NoAccess.css"
-import {Link, NavLink} from "react-router-dom";
-import {AuthActions} from "../../redux/actions/authActions";
-import {useDispatch} from "react-redux";
-
-
-export const NoAccess = (props) => {
-
-    const dispatch = useDispatch();
-    const signOut = () => {
-        dispatch(AuthActions.signOut());
-        window.location = "/";
-    }
-
-    return (
-        <div className="d-flex align-items-center justify-content-center vh-100 landing-page">
-            <div className="text-center">
-                <p className="fs-3 fw-bold text-uppercase">Thank you for registering!</p>
-                <p className="lead">
-                    Your application has been received and is pending review. We will contact you soon for further authentication. <br/> Please check your email for updates.
-                </p>
-                {props.user && <button onClick={signOut} className="go-back-btn">Log out</button>}
-
-
-            </div>
-        </div>
-    )
-}
