Index: ReserveNGo-backend/pom.xml
===================================================================
--- ReserveNGo-backend/pom.xml	(revision 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/pom.xml	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -47,8 +47,8 @@
         </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.boot</groupId>-->
-<!--            <artifactId>spring-boot-starter-security</artifactId>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
 
         <dependency>
@@ -69,9 +69,9 @@
         </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.security</groupId>-->
-<!--            <artifactId>spring-security-test</artifactId>-->
-<!--            <scope>test</scope>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>org.springframework.security</groupId>
+            <artifactId>spring-security-test</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
Index: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Admin.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,31 @@
 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.Role;
+
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
 public class Admin {
+    public Admin(String username, String password, Role userRole) {
+        this.username = username;
+        this.password = password;
+        this.userRole = userRole;
+    }
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(unique = true)
+    private String username;
+
+    private String password;
+
+    @Enumerated(EnumType.STRING)
+    private Role userRole = Role.ADMIN;
 }
Index: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Contact.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,29 @@
 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
+@NoArgsConstructor
+@Embeddable
 public class Contact {
+    public Contact(String phone, String email, Map<String, String> socialLinks) {
+        this.phone = phone;
+        this.email = email;
+        this.socialLinks = socialLinks;
+    }
+
+    private String phone;
+    private String email;
+    @ElementCollection
+    @MapKeyColumn(name = "soical_app_name")
+    @Column(name = "social_app_link")
+    private Map<String, String> socialLinks;
 }
Index: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Customer.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,30 @@
 package mk.ukim.finki.it.reservengo.model;
 
-public class Customer {
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToMany;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+import java.util.List;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+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);
+    }
+
+    @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
+    private List<Reservation> reservations;
+
+    @OneToMany
+    private List<Local> favouriteLocals;
 }
Index: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Event.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,42 @@
 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: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Local.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,74 @@
 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.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+@Entity
+@AllArgsConstructor
+@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;
 }
Index: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/LocalManager.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,20 @@
 package mk.ukim.finki.it.reservengo.model;
 
-public class LocalManager {
+import jakarta.persistence.Entity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.it.reservengo.model.enumerations.Position;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+public class LocalManager extends LocalWorker{
+    public LocalManager(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole, Local local, Position position) {
+        super(firstName, lastName, email, password, phoneNumber, userRole, local, position);
+    }
 }
Index: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/LocalWorker.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,28 @@
 package mk.ukim.finki.it.reservengo.model;
 
-public class LocalWorker {
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.it.reservengo.model.enumerations.Position;
+import mk.ukim.finki.it.reservengo.model.enumerations.Role;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+public class LocalWorker extends User{
+    public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole, Local local, Position position) {
+        super(firstName, lastName, email, password, phoneNumber, userRole);
+        this.local = local;
+        this.position = position;
+    }
+
+    @ManyToOne
+    private Local local;
+
+    @Enumerated(EnumType.STRING)
+    private Position position;
 }
Index: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Reservation.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,44 @@
 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;
 }
Index: ReserveNGo-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 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/User.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -1,4 +1,42 @@
 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.Role;
+
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+@Inheritance(strategy = InheritanceType.JOINED)
+@Table(name = "app_user")
 public class User {
+    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;
+    }
+
+    @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;
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/Role.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/Role.java	(revision 113c963b837660a45dbacd62f76fecdf3cd3ead8)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/Role.java	(revision ef41e8d820db7ca157a5314b9d5a48e31893b02b)
@@ -3,5 +3,5 @@
 public enum Role {
     ADMIN,
-    USER,
+    CUSTOMER,
     RESTAURANT_MANAGER,
     RESTAURANT_WORKER
