Index: ReserveNGo-backend/docker-compose.yml
===================================================================
--- ReserveNGo-backend/docker-compose.yml	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/docker-compose.yml	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -4,5 +4,5 @@
   wp-db:
     image: "postgres"
-    container_name: "wp2024_resAndGo"
+    container_name: "resAndGo"
     environment:
       - POSTGRES_USER=za123
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/bootstrap/DataHolder.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/bootstrap/DataHolder.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/bootstrap/DataHolder.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -2,5 +2,5 @@
 
 import jakarta.annotation.PostConstruct;
-import mk.ukim.finki.it.reservengo.model.*;
+import mk.ukim.finki.it.reservengo.model.domain.*;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 import mk.ukim.finki.it.reservengo.model.enumerations.Service;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -40,5 +40,5 @@
                         .requestMatchers(HttpMethod.OPTIONS,"/**").permitAll()
                         .requestMatchers(
-                                "api/auth/**",
+                                "/api/auth/**",
                                 "/h2/**",
                                 "/favicon.ico",
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/adminDTO/AdminDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/adminDTO/AdminDTO.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/adminDTO/AdminDTO.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,6 @@
+package mk.ukim.finki.it.reservengo.dto.adminDTO;
+
+public record AdminDTO(
+        String name
+) {
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationRequestDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationRequestDTO.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationRequestDTO.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,10 @@
+package mk.ukim.finki.it.reservengo.dto.jwtDTO;
+
+public record JWTAuthenticationRequestDTO(
+        String firstName,
+        String lastName,
+        String email,
+        String password,
+        String phoneNumber
+) {
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTAuthenticationResponseDTO.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,27 @@
+package mk.ukim.finki.it.reservengo.dto.jwtDTO;
+
+import mk.ukim.finki.it.reservengo.model.domain.JWTAuthentication;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+
+public record JWTAuthenticationResponseDTO(
+        Long id,
+        String firstName,
+        String lastName,
+        String email,
+        String phoneNumber,
+        Role role,
+        String token
+) {
+    public static JWTAuthenticationResponseDTO from(JWTAuthentication jwtAuthentication) {
+        return new JWTAuthenticationResponseDTO(
+                jwtAuthentication.getId(),
+                jwtAuthentication.getFirstName(),
+                jwtAuthentication.getLastName(),
+                jwtAuthentication.getEmail(),
+                jwtAuthentication.getPhoneNumber(),
+                jwtAuthentication.getRole(),
+                jwtAuthentication.getToken()
+        );
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTLoginDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTLoginDTO.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/jwtDTO/JWTLoginDTO.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.dto.jwtDTO;
+
+public record JWTLoginDTO(
+        String email,
+        String password
+) {
+}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Admin.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Admin.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,16 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.Entity;
-import lombok.EqualsAndHashCode;
-import mk.ukim.finki.it.reservengo.model.enumerations.Role;
-
-@EqualsAndHashCode(callSuper = true)
-@Entity
-public class Admin extends User {
-    public Admin(String email, String password, Role userRole) {
-        super(null, null, email, password, null, userRole);
-    }
-
-    public Admin() {
-    }
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Contact.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Contact.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,24 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.ElementCollection;
-import jakarta.persistence.Embeddable;
-import jakarta.persistence.MapKeyColumn;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.Map;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Embeddable
-public class Contact {
-    private String phone;
-    private String email;
-    @ElementCollection
-    @MapKeyColumn(name = "soical_app_name")
-    @Column(name = "social_app_link")
-    private Map<String, String> socialLinks;
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Customer.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Customer.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,34 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.*;
-import lombok.EqualsAndHashCode;
-import mk.ukim.finki.it.reservengo.model.enumerations.Role;
-
-import java.util.List;
-
-@EqualsAndHashCode(callSuper = true)
-@Entity
-
-public class Customer extends User {
-    public Customer(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
-        super(firstName, lastName, email, password, phoneNumber, userRole);
-    }
-
-    public Customer() {
-    }
-
-    @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
-    private List<Reservation> reservations;
-
-    @ManyToMany
-    private List<Local> favouriteLocals;
-
-    public List<Reservation> getReservations() {
-        return reservations;
-    }
-
-    public List<Local> getFavouriteLocals() {
-        return favouriteLocals;
-    }
-
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Event.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Event.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,42 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.it.reservengo.model.enumerations.EventStatus;
-
-import java.time.LocalDateTime;
-
-@Data
-@Entity
-@AllArgsConstructor
-@NoArgsConstructor
-public class Event {
-    public Event(String name, String description, LocalDateTime eventStart, LocalDateTime eventEnd, Local local, EventStatus status) {
-        this.name = name;
-        this.description = description;
-        this.eventStart = eventStart;
-        this.eventEnd = eventEnd;
-        this.local = local;
-        this.status = status;
-    }
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    private String name;
-
-    private String description;
-
-    private LocalDateTime eventStart;
-
-    private LocalDateTime eventEnd;
-
-    @ManyToOne
-    private Local local;
-
-    @Enumerated(EnumType.STRING)
-    private EventStatus status;
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/JWTAuthenticationResponse.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/JWTAuthenticationResponse.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,55 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import mk.ukim.finki.it.reservengo.model.enumerations.Role;
-
-
-public class JWTAuthenticationResponse {
-    private Long id;
-    private String firstName;
-    private String lastName;
-    private String email;
-    private String phoneNumber;
-    private Role role;
-    private String token;
-
-    public JWTAuthenticationResponse(Long id, String firstName, String lastName, String email, String phoneNumber, Role role, String token) {
-        this.id = id;
-        this.firstName = firstName;
-        this.lastName = lastName;
-        this.email = email;
-        this.phoneNumber = phoneNumber;
-        this.role = role;
-        this.token = token;
-    }
-
-    public JWTAuthenticationResponse() {
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public String getLastName() {
-        return lastName;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public String getPhoneNumber() {
-        return phoneNumber;
-    }
-
-    public Role getRole() {
-        return role;
-    }
-
-    public String getToken() {
-        return token;
-    }
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Local.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Local.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,142 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.*;
-import mk.ukim.finki.it.reservengo.model.enumerations.Service;
-
-import java.util.List;
-import java.util.Map;
-
-
-@Entity
-@Table(name = "local_")
-public class Local {
-    public Local(String name, String description, String address, String workingHours, List<Service> availableServices, Map<Long, Integer> ratings, List<Event> events, List<String> localPhotos, String menuPhoto, String menuLink, Contact contact, List<Reservation> reservations, List<LocalWorker> workers) {
-        this.name = name;
-        this.description = description;
-        this.address = address;
-        this.workingHours = workingHours;
-        this.availableServices = availableServices;
-        this.ratings = ratings;
-        this.events = events;
-        this.localPhotos = localPhotos;
-        this.menuPhoto = menuPhoto;
-        this.menuLink = menuLink;
-        this.contact = contact;
-        this.reservations = reservations;
-        this.workers = workers;
-    }
-
-    public Local() {
-    }
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    private String name;
-
-    private String description;
-
-    private String address;
-
-    private String workingHours;
-
-    @Enumerated(EnumType.STRING)
-    @ElementCollection
-    private List<Service> availableServices;
-
-    @ElementCollection
-    @MapKeyColumn(name = "customer_id")
-    private Map<Long, Integer> ratings;
-
-    @OneToMany(mappedBy = "local", cascade = CascadeType.ALL)
-    private List<Event> events;
-
-    @ElementCollection
-    private List<String> localPhotos;
-
-    private String menuPhoto;
-
-    private String menuLink;
-
-    @Embedded
-    private Contact contact;
-
-    @OneToMany(mappedBy = "local", cascade = CascadeType.ALL)
-    private List<Reservation> reservations;
-
-    @OneToMany(mappedBy = "local")
-    private List<LocalWorker> workers;
-
-    public Local(String name) {
-        this.name = name;
-    }
-
-    public double calculateLocalAverageRating() {
-        if (ratings == null || ratings.isEmpty()) {
-            return 0.0;
-        }
-        double sum = 0.0;
-        for (Integer rating : ratings.values()) {
-            sum += rating;
-        }
-        return sum / ratings.size();
-    }
-
-
-    public Long getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public String getAddress() {
-        return address;
-    }
-
-    public String getWorkingHours() {
-        return workingHours;
-    }
-
-    public List<Service> getAvailableServices() {
-        return availableServices;
-    }
-
-    public Map<Long, Integer> getRatings() {
-        return ratings;
-    }
-
-    public List<Event> getEvents() {
-        return events;
-    }
-
-    public List<String> getLocalPhotos() {
-        return localPhotos;
-    }
-
-    public String getMenuPhoto() {
-        return menuPhoto;
-    }
-
-    public String getMenuLink() {
-        return menuLink;
-    }
-
-    public Contact getContact() {
-        return contact;
-    }
-
-    public List<Reservation> getReservations() {
-        return reservations;
-    }
-
-    public List<LocalWorker> getWorkers() {
-        return workers;
-    }
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/LocalManager.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/LocalManager.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,16 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.Entity;
-import lombok.EqualsAndHashCode;
-import mk.ukim.finki.it.reservengo.model.enumerations.Role;
-
-@EqualsAndHashCode(callSuper = true)
-@Entity
-public class LocalManager extends LocalWorker {
-    public LocalManager(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
-        super(firstName, lastName, email, password, phoneNumber, userRole);
-    }
-
-    public LocalManager() {
-    }
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/LocalWorker.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/LocalWorker.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,34 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.Entity;
-import jakarta.persistence.EnumType;
-import jakarta.persistence.Enumerated;
-import jakarta.persistence.ManyToOne;
-import lombok.EqualsAndHashCode;
-import mk.ukim.finki.it.reservengo.model.enumerations.Position;
-import mk.ukim.finki.it.reservengo.model.enumerations.Role;
-
-@EqualsAndHashCode(callSuper = true)
-@Entity
-public class LocalWorker extends User {
-    public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
-        super(firstName, lastName, email, password, phoneNumber, userRole);
-    }
-
-    public LocalWorker() {
-    }
-
-    @ManyToOne
-    private Local local;
-
-    @Enumerated(EnumType.STRING)
-    private Position position;
-
-    public Local getLocal() {
-        return local;
-    }
-
-    public Position getPosition() {
-        return position;
-    }
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Reservation.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Reservation.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,48 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.it.reservengo.model.enumerations.ReservationStatus;
-
-import java.time.LocalDateTime;
-import java.util.Map;
-
-@Data
-@Entity
-@AllArgsConstructor
-@NoArgsConstructor
-public class Reservation {
-    public Reservation(Customer customer, Local local, LocalDateTime timeOfRes, Map<Integer, Integer> reservedTables, ReservationStatus status) {
-        this.customer = customer;
-        this.local = local;
-        this.timeOfRes = timeOfRes;
-        this.reservedTables = reservedTables;
-        this.status = status;
-    }
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    @ManyToOne
-    private Customer customer;
-
-    @ManyToOne
-    private Local local;
-
-    private LocalDateTime timeOfRes;
-
-    @ElementCollection
-    @MapKeyColumn(name = "table_id")
-    @Column(name = "num_people")
-    private Map<Integer, Integer> reservedTables;
-
-    @Enumerated(EnumType.STRING)
-    private ReservationStatus status;
-
-    public void setStatus(ReservationStatus status) {
-        this.status = status;
-    }
-}
Index: serveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/User.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/User.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ 	(revision )
@@ -1,104 +1,0 @@
-package mk.ukim.finki.it.reservengo.model;
-
-import jakarta.persistence.*;
-import mk.ukim.finki.it.reservengo.model.enumerations.Role;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import java.util.Collection;
-import java.util.List;
-
-@Entity
-@Inheritance(strategy = InheritanceType.JOINED)
-@Table(name = "app_user")
-public class User implements UserDetails {
-    public User(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
-        this.firstName = firstName;
-        this.lastName = lastName;
-        this.email = email;
-        this.password = password;
-        this.phoneNumber = phoneNumber;
-        this.userRole = userRole;
-    }
-
-    public User() {
-    }
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    private String firstName;
-
-    private String lastName;
-
-    @Column(unique = true)
-    private String email;
-
-    private String password;
-
-    private String phoneNumber;
-
-    @Enumerated(EnumType.STRING)
-    private Role userRole;
-
-    @Override
-    public Collection<? extends GrantedAuthority> getAuthorities() {
-        return List.of(new SimpleGrantedAuthority(userRole.name()));
-    }
-
-    @Override
-    public String getPassword() {
-        return password;
-    }
-
-    @Override
-    public String getUsername() {
-        return email;
-    }
-
-    @Override
-    public boolean isAccountNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isAccountNonLocked() {
-        return true;
-    }
-
-    @Override
-    public boolean isCredentialsNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isEnabled() {
-        return true;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public String getLastName() {
-        return lastName;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public String getPhoneNumber() {
-        return phoneNumber;
-    }
-
-    public Role getUserRole() {
-        return userRole;
-    }
-}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Admin.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Admin.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Admin.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,16 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import jakarta.persistence.Entity;
+import lombok.EqualsAndHashCode;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+@EqualsAndHashCode(callSuper = true)
+@Entity
+public class Admin extends User {
+    public Admin(String email, String password, Role userRole) {
+        super(null, null, email, password, null, userRole);
+    }
+
+    public Admin() {
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Contact.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,53 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Embeddable;
+import jakarta.persistence.MapKeyColumn;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Map;
+
+@Data
+//@AllArgsConstructor
+@NoArgsConstructor
+@Embeddable
+public class Contact {
+    private String phone;
+    private String email;
+    @ElementCollection
+    @MapKeyColumn(name = "soical_app_name")
+    @Column(name = "social_app_link")
+    private Map<String, String> socialLinks;
+
+    public Contact(String phone, String email, Map<String, String> socialLinks) {
+        this.phone = phone;
+        this.email = email;
+        this.socialLinks = socialLinks;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Map<String, String> getSocialLinks() {
+        return socialLinks;
+    }
+
+    public void setSocialLinks(Map<String, String> socialLinks) {
+        this.socialLinks = socialLinks;
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Customer.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,34 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import jakarta.persistence.*;
+import lombok.EqualsAndHashCode;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Entity
+
+public class Customer extends User {
+    public Customer(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
+        super(firstName, lastName, email, password, phoneNumber, userRole);
+    }
+
+    public Customer() {
+    }
+
+    @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
+    private List<Reservation> reservations;
+
+    @ManyToMany
+    private List<Local> favouriteLocals;
+
+    public List<Reservation> getReservations() {
+        return reservations;
+    }
+
+    public List<Local> getFavouriteLocals() {
+        return favouriteLocals;
+    }
+
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Event.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Event.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Event.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,98 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.it.reservengo.model.enumerations.EventStatus;
+
+import java.time.LocalDateTime;
+
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+public class Event {
+    public Event(String name, String description, LocalDateTime eventStart, LocalDateTime eventEnd, Local local, EventStatus status) {
+        this.name = name;
+        this.description = description;
+        this.eventStart = eventStart;
+        this.eventEnd = eventEnd;
+        this.local = local;
+        this.status = status;
+    }
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    private String name;
+
+    private String description;
+
+    private LocalDateTime eventStart;
+
+    private LocalDateTime eventEnd;
+
+    @ManyToOne
+    private Local local;
+
+    @Enumerated(EnumType.STRING)
+    private EventStatus status;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public LocalDateTime getEventStart() {
+        return eventStart;
+    }
+
+    public void setEventStart(LocalDateTime eventStart) {
+        this.eventStart = eventStart;
+    }
+
+    public LocalDateTime getEventEnd() {
+        return eventEnd;
+    }
+
+    public void setEventEnd(LocalDateTime eventEnd) {
+        this.eventEnd = eventEnd;
+    }
+
+    public Local getLocal() {
+        return local;
+    }
+
+    public void setLocal(Local local) {
+        this.local = local;
+    }
+
+    public EventStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(EventStatus status) {
+        this.status = status;
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/JWTAuthentication.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/JWTAuthentication.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/JWTAuthentication.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,55 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+public class JWTAuthentication {
+
+    private Long id;
+    private String firstName;
+    private String lastName;
+    private String email;
+    private String password;
+    private String phoneNumber;
+    private Role role;
+    private String token;
+
+
+    public JWTAuthentication() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public Role getRole() {
+        return role;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,142 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import jakarta.persistence.*;
+import mk.ukim.finki.it.reservengo.model.enumerations.Service;
+
+import java.util.List;
+import java.util.Map;
+
+
+@Entity
+@Table(name = "local_")
+public class Local {
+    public Local(String name, String description, String address, String workingHours, List<Service> availableServices, Map<Long, Integer> ratings, List<Event> events, List<String> localPhotos, String menuPhoto, String menuLink, Contact contact, List<Reservation> reservations, List<LocalWorker> workers) {
+        this.name = name;
+        this.description = description;
+        this.address = address;
+        this.workingHours = workingHours;
+        this.availableServices = availableServices;
+        this.ratings = ratings;
+        this.events = events;
+        this.localPhotos = localPhotos;
+        this.menuPhoto = menuPhoto;
+        this.menuLink = menuLink;
+        this.contact = contact;
+        this.reservations = reservations;
+        this.workers = workers;
+    }
+
+    public Local() {
+    }
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    private String name;
+
+    private String description;
+
+    private String address;
+
+    private String workingHours;
+
+    @Enumerated(EnumType.STRING)
+    @ElementCollection
+    private List<Service> availableServices;
+
+    @ElementCollection
+    @MapKeyColumn(name = "customer_id")
+    private Map<Long, Integer> ratings;
+
+    @OneToMany(mappedBy = "local", cascade = CascadeType.ALL)
+    private List<Event> events;
+
+    @ElementCollection
+    private List<String> localPhotos;
+
+    private String menuPhoto;
+
+    private String menuLink;
+
+    @Embedded
+    private Contact contact;
+
+    @OneToMany(mappedBy = "local", cascade = CascadeType.ALL)
+    private List<Reservation> reservations;
+
+    @OneToMany(mappedBy = "local")
+    private List<LocalWorker> workers;
+
+    public Local(String name) {
+        this.name = name;
+    }
+
+    public double calculateLocalAverageRating() {
+        if (ratings == null || ratings.isEmpty()) {
+            return 0.0;
+        }
+        double sum = 0.0;
+        for (Integer rating : ratings.values()) {
+            sum += rating;
+        }
+        return sum / ratings.size();
+    }
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public String getWorkingHours() {
+        return workingHours;
+    }
+
+    public List<Service> getAvailableServices() {
+        return availableServices;
+    }
+
+    public Map<Long, Integer> getRatings() {
+        return ratings;
+    }
+
+    public List<Event> getEvents() {
+        return events;
+    }
+
+    public List<String> getLocalPhotos() {
+        return localPhotos;
+    }
+
+    public String getMenuPhoto() {
+        return menuPhoto;
+    }
+
+    public String getMenuLink() {
+        return menuLink;
+    }
+
+    public Contact getContact() {
+        return contact;
+    }
+
+    public List<Reservation> getReservations() {
+        return reservations;
+    }
+
+    public List<LocalWorker> getWorkers() {
+        return workers;
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalManager.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalManager.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalManager.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,21 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import jakarta.persistence.Entity;
+import lombok.EqualsAndHashCode;
+import mk.ukim.finki.it.reservengo.model.enumerations.Position;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+@EqualsAndHashCode(callSuper = true)
+@Entity
+public class LocalManager extends LocalWorker {
+    public LocalManager(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
+        super(firstName, lastName, email, password, phoneNumber, userRole);
+    }
+
+    public LocalManager(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole, Position position, Local local) {
+        super(firstName, lastName, email, password, phoneNumber, userRole, position, local);
+    }
+
+    public LocalManager() {
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalWorker.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalWorker.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/LocalWorker.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,40 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.ManyToOne;
+import lombok.EqualsAndHashCode;
+import mk.ukim.finki.it.reservengo.model.enumerations.Position;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+@EqualsAndHashCode(callSuper = true)
+@Entity
+public class LocalWorker extends User {
+    public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
+        super(firstName, lastName, email, password, phoneNumber, userRole);
+    }
+
+    public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole, Position position, Local local) {
+        super(firstName, lastName, email, password, phoneNumber, userRole);
+        this.position = position;
+        this.local = local;
+    }
+
+    public LocalWorker() {
+    }
+
+    @ManyToOne
+    private Local local;
+
+    @Enumerated(EnumType.STRING)
+    private Position position;
+
+    public Local getLocal() {
+        return local;
+    }
+
+    public Position getPosition() {
+        return position;
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,92 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.it.reservengo.model.enumerations.ReservationStatus;
+
+import java.time.LocalDateTime;
+import java.util.Map;
+
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+public class Reservation {
+    public Reservation(Customer customer, Local local, LocalDateTime timeOfRes, Map<Integer, Integer> reservedTables, ReservationStatus status) {
+        this.customer = customer;
+        this.local = local;
+        this.timeOfRes = timeOfRes;
+        this.reservedTables = reservedTables;
+        this.status = status;
+    }
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @ManyToOne
+    private Customer customer;
+
+    @ManyToOne
+    private Local local;
+
+    private LocalDateTime timeOfRes;
+
+    @ElementCollection
+    @MapKeyColumn(name = "table_id")
+    @Column(name = "num_people")
+    private Map<Integer, Integer> reservedTables;
+
+    @Enumerated(EnumType.STRING)
+    private ReservationStatus status;
+
+    public void setStatus(ReservationStatus status) {
+        this.status = status;
+    }
+
+    public ReservationStatus getStatus() {
+        return status;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Customer getCustomer() {
+        return customer;
+    }
+
+    public void setCustomer(Customer customer) {
+        this.customer = customer;
+    }
+
+    public Local getLocal() {
+        return local;
+    }
+
+    public void setLocal(Local local) {
+        this.local = local;
+    }
+
+    public LocalDateTime getTimeOfRes() {
+        return timeOfRes;
+    }
+
+    public void setTimeOfRes(LocalDateTime timeOfRes) {
+        this.timeOfRes = timeOfRes;
+    }
+
+    public Map<Integer, Integer> getReservedTables() {
+        return reservedTables;
+    }
+
+    public void setReservedTables(Map<Integer, Integer> reservedTables) {
+        this.reservedTables = reservedTables;
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -0,0 +1,106 @@
+package mk.ukim.finki.it.reservengo.model.domain;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import jakarta.persistence.*;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import java.util.Collection;
+import java.util.List;
+
+@Entity
+@Inheritance(strategy = InheritanceType.JOINED)
+@Table(name = "app_user")
+public class User implements UserDetails {
+    public User(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) {
+        this.firstName = firstName;
+        this.lastName = lastName;
+        this.email = email;
+        this.password = password;
+        this.phoneNumber = phoneNumber;
+        this.userRole = userRole;
+    }
+
+    public User() {
+    }
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    private String firstName;
+
+    private String lastName;
+
+    @Column(unique = true)
+    private String email;
+
+    @JsonIgnore
+    private String password;
+
+    private String phoneNumber;
+
+    @Enumerated(EnumType.STRING)
+    private Role userRole;
+
+    @Override
+    public Collection<? extends GrantedAuthority> getAuthorities() {
+        return List.of(new SimpleGrantedAuthority(userRole.name()));
+    }
+
+    @Override
+    public String getPassword() {
+        return password;
+    }
+
+    @Override
+    public String getUsername() {
+        return email;
+    }
+
+    @Override
+    public boolean isAccountNonExpired() {
+        return true;
+    }
+
+    @Override
+    public boolean isAccountNonLocked() {
+        return true;
+    }
+
+    @Override
+    public boolean isCredentialsNonExpired() {
+        return true;
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return true;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public Role getUserRole() {
+        return userRole;
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/AdminRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/AdminRepository.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/AdminRepository.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.repository;
 
-import mk.ukim.finki.it.reservengo.model.Admin;
+import mk.ukim.finki.it.reservengo.model.domain.Admin;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/CustomerRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/CustomerRepository.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/CustomerRepository.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.repository;
 
-import mk.ukim.finki.it.reservengo.model.Customer;
+import mk.ukim.finki.it.reservengo.model.domain.Customer;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/EventRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/EventRepository.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/EventRepository.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.repository;
 
-import mk.ukim.finki.it.reservengo.model.Event;
+import mk.ukim.finki.it.reservengo.model.domain.Event;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalManagerRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalManagerRepository.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalManagerRepository.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.repository;
 
-import mk.ukim.finki.it.reservengo.model.LocalManager;
+import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalRepository.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalRepository.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.repository;
 
-import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalWorkerRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalWorkerRepository.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalWorkerRepository.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.repository;
 
-import mk.ukim.finki.it.reservengo.model.LocalWorker;
+import mk.ukim.finki.it.reservengo.model.domain.LocalWorker;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/ReservationRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/ReservationRepository.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/ReservationRepository.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.repository;
 
-import mk.ukim.finki.it.reservengo.model.Reservation;
+import mk.ukim.finki.it.reservengo.model.domain.Reservation;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/UserRepository.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/UserRepository.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/UserRepository.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.repository;
 
-import mk.ukim.finki.it.reservengo.model.User;
+import mk.ukim.finki.it.reservengo.model.domain.User;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AdminServiceImpl.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,6 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
-import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.dto.adminDTO.AdminDTO;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 import mk.ukim.finki.it.reservengo.model.exceptions.LocalNotFoundException;
 import mk.ukim.finki.it.reservengo.repository.LocalRepository;
@@ -17,6 +18,6 @@
 
     @Override
-    public void addLocal(String name) {
-        Local local = new Local(name);
+    public void addLocal(AdminDTO adminDTO) {
+        Local local = new Local(adminDTO.name());
         localRepository.save(local);
     }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,11 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
-import mk.ukim.finki.it.reservengo.model.*;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTAuthenticationRequestDTO;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTAuthenticationResponseDTO;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTLoginDTO;
+import mk.ukim.finki.it.reservengo.model.domain.Customer;
+import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
+import mk.ukim.finki.it.reservengo.model.domain.LocalWorker;
+import mk.ukim.finki.it.reservengo.model.domain.User;
 import mk.ukim.finki.it.reservengo.model.enumerations.Role;
 import mk.ukim.finki.it.reservengo.model.exceptions.EmailNotFoundException;
@@ -36,10 +42,19 @@
 
     @Override
-    public JWTAuthenticationResponse registerCustomer(String firstName, String lastName, String email, String password, String phoneNumber) {
-        Customer customer = new Customer(firstName, lastName, email, passwordEncoder.encode(password), phoneNumber, Role.ROLE_CUSTOMER);
+    public JWTAuthenticationResponseDTO registerCustomer(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
+
+        Customer customer = new Customer(
+                jwtAuthenticationRequestDTO.firstName(),
+                jwtAuthenticationRequestDTO.lastName(),
+                jwtAuthenticationRequestDTO.email(),
+                passwordEncoder.encode(jwtAuthenticationRequestDTO.password()),
+                jwtAuthenticationRequestDTO.phoneNumber(),
+                Role.ROLE_CUSTOMER
+        );
+
         customerRepository.save(customer);
         String jwt = jwtService.generateToken(customer);
 
-        return new JWTAuthenticationResponse(
+        return new JWTAuthenticationResponseDTO(
                 customer.getId(),
                 customer.getFirstName(),
@@ -52,10 +67,17 @@
 
     @Override
-    public JWTAuthenticationResponse registerLocalWorker(String firstName, String lastName, String email, String password, String phoneNumber) {
-        LocalWorker localWorker = new LocalWorker(firstName, lastName, email, passwordEncoder.encode(password), phoneNumber, Role.ROLE_LOCAL_WORKER);
+    public JWTAuthenticationResponseDTO registerLocalWorker(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
+        LocalWorker localWorker = new LocalWorker(
+                jwtAuthenticationRequestDTO.firstName(),
+                jwtAuthenticationRequestDTO.lastName(),
+                jwtAuthenticationRequestDTO.email(),
+                passwordEncoder.encode(jwtAuthenticationRequestDTO.password()),
+                jwtAuthenticationRequestDTO.phoneNumber(),
+                Role.ROLE_LOCAL_WORKER
+        );
         localWorkerRepository.save(localWorker);
         String jwt = jwtService.generateToken(localWorker);
 
-        return new JWTAuthenticationResponse(
+        return new JWTAuthenticationResponseDTO(
                 localWorker.getId(),
                 localWorker.getFirstName(),
@@ -68,10 +90,17 @@
 
     @Override
-    public JWTAuthenticationResponse registerLocalManager(String firstName, String lastName, String email, String password, String phoneNumber) {
-        LocalManager localManager = new LocalManager(firstName, lastName, email, passwordEncoder.encode(password), phoneNumber, Role.ROLE_LOCAL_MANAGER);
+    public JWTAuthenticationResponseDTO registerLocalManager(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
+        LocalManager localManager = new LocalManager(
+                jwtAuthenticationRequestDTO.firstName(),
+                jwtAuthenticationRequestDTO.lastName(),
+                jwtAuthenticationRequestDTO.email(),
+                passwordEncoder.encode(jwtAuthenticationRequestDTO.password()),
+                jwtAuthenticationRequestDTO.phoneNumber(),
+                Role.ROLE_LOCAL_MANAGER
+        );
         localManagerRepository.save(localManager);
         String jwt = jwtService.generateToken(localManager);
 
-        return new JWTAuthenticationResponse(
+        return new JWTAuthenticationResponseDTO(
                 localManager.getId(),
                 localManager.getFirstName(),
@@ -84,10 +113,10 @@
 
     @Override
-    public JWTAuthenticationResponse login(String email, String password) {
-        authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(email, password));
-        User user = userRepository.findByEmail(email).orElseThrow(() -> new EmailNotFoundException(email));
+    public JWTAuthenticationResponseDTO login(JWTLoginDTO jwtLoginDTO) {
+        authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(jwtLoginDTO.email(), jwtLoginDTO.password()));
+        User user = userRepository.findByEmail(jwtLoginDTO.email()).orElseThrow(() -> new EmailNotFoundException(jwtLoginDTO.email()));
         String jwt = jwtService.generateToken(user);
 
-        return new JWTAuthenticationResponse(
+        return new JWTAuthenticationResponseDTO(
                 user.getId(),
                 user.getFirstName(),
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,7 +1,6 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
-import jakarta.transaction.Transactional;
-import mk.ukim.finki.it.reservengo.model.Customer;
-import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.model.domain.Customer;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 import mk.ukim.finki.it.reservengo.model.exceptions.CustomerNotFoundException;
 import mk.ukim.finki.it.reservengo.model.exceptions.LocalNotFoundException;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/JWTServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/JWTServiceImpl.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/JWTServiceImpl.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -6,5 +6,5 @@
 import io.jsonwebtoken.io.Decoders;
 import io.jsonwebtoken.security.Keys;
-import mk.ukim.finki.it.reservengo.model.User;
+import mk.ukim.finki.it.reservengo.model.domain.User;
 import mk.ukim.finki.it.reservengo.service.intf.JWTService;
 import org.springframework.security.core.userdetails.UserDetails;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -6,3 +6,4 @@
 @Service
 public class LocalManagerServiceImpl implements LocalManagerService {
+    //TODO editLocal(admin firstly create(add) LOCAL,uploadPicture(clear method only for changing logo/picture on his local),
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
-import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 import mk.ukim.finki.it.reservengo.model.exceptions.LocalIdNotFoundException;
 import mk.ukim.finki.it.reservengo.repository.LocalRepository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/ReservationServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/ReservationServiceImpl.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/ReservationServiceImpl.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
-import mk.ukim.finki.it.reservengo.model.Reservation;
+import mk.ukim.finki.it.reservengo.model.domain.Reservation;
 import mk.ukim.finki.it.reservengo.model.exceptions.ReservationNotFoundException;
 import mk.ukim.finki.it.reservengo.repository.ReservationRepository;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -6,3 +6,4 @@
 @Service
 public class UserServiceImpl implements UserService {
+
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AdminService.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,6 +1,8 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
+import mk.ukim.finki.it.reservengo.dto.adminDTO.AdminDTO;
+
 public interface AdminService {
-    void addLocal(String name);
+    void addLocal(AdminDTO adminDTO);
 
     void deleteLocal(Long id);
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AuthService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AuthService.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/AuthService.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,14 +1,15 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
-import mk.ukim.finki.it.reservengo.model.JWTAuthenticationResponse;
-import mk.ukim.finki.it.reservengo.model.exceptions.EmailNotFoundException;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTAuthenticationRequestDTO;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTAuthenticationResponseDTO;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTLoginDTO;
 
 public interface AuthService {
-    JWTAuthenticationResponse registerCustomer(String firstName, String lastName, String email, String password, String phoneNumber) throws EmailNotFoundException;
+    JWTAuthenticationResponseDTO registerCustomer(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO);
 
-    JWTAuthenticationResponse registerLocalWorker(String firstName, String lastName, String email, String password, String phoneNumber);
+    JWTAuthenticationResponseDTO registerLocalWorker(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO);
 
-    JWTAuthenticationResponse registerLocalManager(String firstName, String lastName, String email, String password, String phoneNumber);
+    JWTAuthenticationResponseDTO registerLocalManager(JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO);
 
-    JWTAuthenticationResponse login(String email, String password);
+    JWTAuthenticationResponseDTO login(JWTLoginDTO jwtLoginDTO);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/CustomerService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/CustomerService.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/CustomerService.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,6 +1,6 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
-import mk.ukim.finki.it.reservengo.model.Customer;
-import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.model.domain.Customer;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 
 import java.util.List;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/JWTService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/JWTService.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/JWTService.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -2,5 +2,5 @@
 
 import io.jsonwebtoken.Claims;
-import mk.ukim.finki.it.reservengo.model.User;
+import mk.ukim.finki.it.reservengo.model.domain.User;
 import org.springframework.security.core.userdetails.UserDetails;
 
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
-import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 
 import java.util.List;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/ReservationService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/ReservationService.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/ReservationService.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
-import mk.ukim.finki.it.reservengo.model.Reservation;
+import mk.ukim.finki.it.reservengo.model.domain.Reservation;
 
 import java.util.List;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AdminController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AdminController.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AdminController.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.it.reservengo.web;
 
+import mk.ukim.finki.it.reservengo.dto.adminDTO.AdminDTO;
 import mk.ukim.finki.it.reservengo.service.intf.AdminService;
 import org.springframework.http.ResponseEntity;
@@ -18,6 +19,6 @@
 
     @PostMapping("/add")
-    public ResponseEntity<?> addLocal(@RequestParam String name) {
-        adminService.addLocal(name);
+    public ResponseEntity<?> addLocal(@RequestBody AdminDTO adminDTO) {
+        adminService.addLocal(adminDTO);
         return ResponseEntity.ok().build();
     }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AuthController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AuthController.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AuthController.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,7 @@
 package mk.ukim.finki.it.reservengo.web;
 
-import mk.ukim.finki.it.reservengo.model.JWTAuthenticationResponse;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTAuthenticationRequestDTO;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTAuthenticationResponseDTO;
+import mk.ukim.finki.it.reservengo.dto.jwtDTO.JWTLoginDTO;
 import mk.ukim.finki.it.reservengo.service.intf.AuthService;
 import org.springframework.http.HttpStatus;
@@ -18,34 +20,21 @@
 
     @PostMapping(value = "/register/customer", produces = MediaType.APPLICATION_JSON_VALUE)
-    public ResponseEntity<JWTAuthenticationResponse> registerCustomer(@RequestParam String firstName,
-                                                                      @RequestParam String lastName,
-                                                                      @RequestParam String email,
-                                                                      @RequestParam String password,
-                                                                      @RequestParam String phoneNumber) {
-        return new ResponseEntity<>(authenticationService.registerCustomer(firstName, lastName, email, password, phoneNumber), HttpStatus.CREATED);
+    public ResponseEntity<JWTAuthenticationResponseDTO> registerCustomer(@RequestBody JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
+        return new ResponseEntity<>(authenticationService.registerCustomer(jwtAuthenticationRequestDTO), HttpStatus.CREATED);
     }
 
     @PostMapping("/register/local-worker")
-    public ResponseEntity<JWTAuthenticationResponse> registerLocalWorker(@RequestParam String firstName,
-                                                                         @RequestParam String lastName,
-                                                                         @RequestParam String email,
-                                                                         @RequestParam String password,
-                                                                         @RequestParam String phoneNumber) {
-        return new ResponseEntity<>(authenticationService.registerLocalWorker(firstName, lastName, email, password, phoneNumber), HttpStatus.CREATED);
+    public ResponseEntity<JWTAuthenticationResponseDTO> registerLocalWorker(@RequestBody JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
+        return new ResponseEntity<>(authenticationService.registerLocalWorker(jwtAuthenticationRequestDTO), HttpStatus.CREATED);
     }
 
     @PostMapping("/register/local-manager")
-    public ResponseEntity<JWTAuthenticationResponse> registerLocalManager(@RequestParam String firstName,
-                                                                          @RequestParam String lastName,
-                                                                          @RequestParam String email,
-                                                                          @RequestParam String password,
-                                                                          @RequestParam String phoneNumber) {
-        return new ResponseEntity<>(authenticationService.registerLocalManager(firstName, lastName, email, password, phoneNumber), HttpStatus.CREATED);
+    public ResponseEntity<JWTAuthenticationResponseDTO> registerLocalManager(@RequestBody JWTAuthenticationRequestDTO jwtAuthenticationRequestDTO) {
+        return new ResponseEntity<>(authenticationService.registerLocalManager(jwtAuthenticationRequestDTO), HttpStatus.CREATED);
     }
 
     @PostMapping("/login")
-    public ResponseEntity<JWTAuthenticationResponse> login(@RequestParam String email,
-                                                           @RequestParam String password) {
-        return new ResponseEntity<>(authenticationService.login(email, password), HttpStatus.OK);
+    public ResponseEntity<JWTAuthenticationResponseDTO> login(@RequestBody JWTLoginDTO jwtLoginDTO) {
+        return new ResponseEntity<>(authenticationService.login(jwtLoginDTO), HttpStatus.OK);
     }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,8 +1,8 @@
 package mk.ukim.finki.it.reservengo.web;
 
-import mk.ukim.finki.it.reservengo.model.Customer;
-import mk.ukim.finki.it.reservengo.model.Local;
-import mk.ukim.finki.it.reservengo.model.Reservation;
-import mk.ukim.finki.it.reservengo.model.User;
+import mk.ukim.finki.it.reservengo.model.domain.Customer;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
+import mk.ukim.finki.it.reservengo.model.domain.Reservation;
+import mk.ukim.finki.it.reservengo.model.domain.User;
 import mk.ukim.finki.it.reservengo.service.intf.CustomerService;
 import mk.ukim.finki.it.reservengo.service.intf.ReservationService;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalController.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalController.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.web;
 
-import mk.ukim.finki.it.reservengo.model.Local;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 import org.springframework.http.ResponseEntity;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/ReservationController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/ReservationController.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/ReservationController.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,5 +1,5 @@
 package mk.ukim.finki.it.reservengo.web;
 
-import mk.ukim.finki.it.reservengo.model.Reservation;
+import mk.ukim.finki.it.reservengo.model.domain.Reservation;
 import mk.ukim.finki.it.reservengo.model.enumerations.ReservationStatus;
 import mk.ukim.finki.it.reservengo.service.intf.ReservationService;
@@ -8,5 +8,5 @@
 
 @RestController
-@RequestMapping("/api")
+@RequestMapping("/api/reservations")
 public class ReservationController {
     private final ReservationService reservationService;
@@ -18,5 +18,5 @@
     //TODO RE-EVALUATE RESERVATIONS ARCHITECTURE
 
-    @GetMapping("/reservations/{id}")
+    @GetMapping("/{id}")
     public ResponseEntity<?> getReservationInformation(@PathVariable Long id) {
         Reservation reservation = reservationService.getReservationById(id);
@@ -24,5 +24,5 @@
     }
 
-    @PostMapping("/reservations/{id}/status")
+    @PostMapping("/{id}/status")
     public ResponseEntity<?> updateReservationStatus(@PathVariable Long id, @RequestParam ReservationStatus status) {
         Reservation reservation = reservationService.getReservationById(id);
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/UserController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/UserController.java	(revision ac41d70c5bb293177cc03cfec11da1fbd8c91ad8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/UserController.java	(revision e2a84e9f06b051fbbc98d9bda29f0c9ef9c21dc5)
@@ -1,4 +1,14 @@
 package mk.ukim.finki.it.reservengo.web;
 
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/api/user")
 public class UserController {
+    //TODO edit personal info(USER -> customer,localWorker,localManager)
+
+//    @PostMapping("/edit")
+//    public ResponseEntity<?> editPersonalInfo(@RequestBody UserDTO userDTO){
+//    }
 }
