Index: src/main/java/finki/db/tasty_tabs/entity/Assignment.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Assignment.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Assignment.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,41 @@
+package finki.db.tasty_tabs.entity;
+
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * Entity: Assignment
+ * Description: Represents shift assignment for each employee.
+ */
+@Entity
+@Table(name = "assignment")
+@Data
+@NoArgsConstructor
+public class Assignment {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "clock_in_time")
+    private LocalDateTime clockInTime;
+
+    @Column(name = "clock_out_time")
+    private LocalDateTime clockOutTime;
+
+    @ManyToOne
+    @JoinColumn(name = "manager_id", referencedColumnName = "employee_id", nullable = false)
+    private Manager manager;
+
+    @ManyToOne
+    @JoinColumn(name = "employee_id", referencedColumnName = "user_id", nullable = false)
+    private Employee employee;
+
+    @ManyToOne
+    @JoinColumn(name = "shift_id", referencedColumnName = "id", nullable = false)
+    private Shift shift;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/BackStaff.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/BackStaff.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/BackStaff.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,20 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+/**
+ * Entity: BackStaff
+ * Description: A disjoint specialization of the Employee entity for back-office staff members.
+ */
+@Entity
+@Table(name = "back_staff")
+@Data
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "employee_id")
+public class BackStaff extends Employee {
+
+    @ManyToOne
+    @JoinColumn(name = "staff_role_id", referencedColumnName = "id")
+    private StaffRole staffRole;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Category.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Category.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Category.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,31 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: Category
+ * Description: Represents product categories.
+ */
+@Entity
+@Table(name = "category")
+@Data
+@NoArgsConstructor
+public class Category {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "name", nullable = false, unique = true)
+    private String name;
+
+    @Column(name = "is_available")
+    private Boolean isAvailable;
+
+    @OneToMany(mappedBy = "category")
+    private List<Product> products;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Customer.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Customer.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Customer.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,23 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: Customer
+ * Description: Represents customers in the system. Inherits from User.
+ */
+@Entity
+@Table(name = "customer")
+@Data
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "user_id") // Links to the User table
+public class Customer extends User {
+    
+    // Relationship for online orders placed by this customer
+    @OneToMany(mappedBy = "customer")
+    private List<OnlineOrder> onlineOrders;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Employee.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Employee.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Employee.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,29 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: Employee
+ * Description: Represents employees of the system. Inherits from User.
+ */
+@Entity
+@Table(name = "employee")
+@Data
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "user_id") // Links to the User table
+public class Employee extends User {
+
+    @Column(name = "net_salary", nullable = false)
+    private Double netSalary;
+
+    @Column(name = "gross_salary", nullable = false)
+    private Double grossSalary;
+
+    // Relationship for assignments given to this employee
+    @OneToMany(mappedBy = "employee")
+    private List<Assignment> assignments;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/FrontStaff.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/FrontStaff.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/FrontStaff.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,30 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: FrontStaff
+ * Description: A disjoint specialization of the Employee entity for front-facing staff members.
+ */
+@Entity
+@Table(name = "front_staff")
+@Data
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "employee_id")
+public class FrontStaff extends Employee {
+
+    @Column(name = "tip_percent")
+    private Double tipPercent;
+
+    @ManyToOne
+    @JoinColumn(name = "staff_role_id", referencedColumnName = "id")
+    private StaffRole staffRole;
+
+    // Relationship for tab orders handled by this front staff member
+    @OneToMany(mappedBy = "frontStaff")
+    private List<TabOrder> tabOrders;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Inventory.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Inventory.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Inventory.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,30 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+/**
+ * Entity: Inventory
+ * Description: Tracks product quantities and restocking levels.
+ */
+@Entity
+@Table(name = "inventory")
+@Data
+@NoArgsConstructor
+public class Inventory {
+
+    @Id
+    @Column(name = "product_id")
+    private Long productId;
+
+    @OneToOne(fetch = FetchType.LAZY)
+    @MapsId
+    @JoinColumn(name = "product_id")
+    private Product product;
+
+    @Column(name = "quantity", nullable = false)
+    private Integer quantity;
+
+    @Column(name = "restock_level")
+    private Integer restockLevel;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Manager.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Manager.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Manager.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,27 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: Manager
+ * Description: A disjoint specialization of the Employee entity for managers.
+ */
+@Entity
+@Table(name = "manager")
+@Data
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "employee_id")
+public class Manager extends Employee {
+
+    // Relationship for shifts created by this manager
+    @OneToMany(mappedBy = "manager")
+    private List<Shift> createdShifts;
+
+    // Relationship for assignments created by this manager
+    @OneToMany(mappedBy = "manager")
+    private List<Assignment> createdAssignments;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/OnlineOrder.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/OnlineOrder.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/OnlineOrder.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,23 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+/**
+ * Entity: OnlineOrder
+ * Description: Represents orders made online by customers.
+ */
+@Entity
+@Table(name = "online_order")
+@Data
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "order_id")
+public class OnlineOrder extends Order {
+
+    @ManyToOne
+    @JoinColumn(name = "customer_id", referencedColumnName = "user_id", nullable = false)
+    private Customer customer;
+
+    @Column(name = "delivery_address", nullable = false)
+    private String deliveryAddress;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Order.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Order.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Order.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,36 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * Entity: Order
+ * Description: Represents a customer's order in the system.
+ */
+@Entity
+@Table(name = "orders") // "order" is a reserved keyword
+@Data
+@NoArgsConstructor
+@Inheritance(strategy = InheritanceType.JOINED)
+public class Order {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "timestamp", nullable = false)
+    private LocalDateTime timestamp;
+
+    @Column(name = "status")
+    private String status;
+
+    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
+    private List<OrderItem> orderItems;
+
+    @OneToOne(mappedBy = "order", cascade = CascadeType.ALL)
+    private Payment payment;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/OrderItem.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/OrderItem.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/OrderItem.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,42 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * Entity: OrderItem
+ * Description: Represents items in a customer's order.
+ */
+@Entity
+@Table(name = "order_item")
+@Data
+@NoArgsConstructor
+public class OrderItem {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "quantity", nullable = false)
+    private Integer quantity;
+
+    @Column(name = "price", nullable = false)
+    private Double price;
+
+    @Column(name = "is_processed")
+    private Boolean isProcessed;
+
+    @Column(name = "timestamp", nullable = false)
+    private LocalDateTime timestamp;
+
+    @ManyToOne
+    @JoinColumn(name = "product_id", referencedColumnName = "id", nullable = false)
+    private Product product;
+
+    @ManyToOne
+    @JoinColumn(name = "order_id", referencedColumnName = "id", nullable = false)
+    private Order order;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Payment.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Payment.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Payment.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,38 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * Entity: Payment
+ * Description: Represents payments for orders.
+ */
+@Entity
+@Table(name = "payment")
+@Data
+@NoArgsConstructor
+public class Payment {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "tip_amount")
+    private Double tipAmount;
+
+    @Column(name = "timestamp", nullable = false)
+    private LocalDateTime timestamp;
+
+    @Column(name = "payment_type", nullable = false)
+    private String paymentType;
+
+    @Column(name = "amount", nullable = false)
+    private Double amount;
+
+    @OneToOne
+    @JoinColumn(name = "order_id", referencedColumnName = "id", nullable = false, unique = true)
+    private Order order;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Product.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Product.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Product.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,47 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: Product
+ * Description: Represents items that can be purchased in the system.
+ */
+@Entity
+@Table(name = "product")
+@Data
+@NoArgsConstructor
+public class Product {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "name", nullable = false)
+    private String name;
+
+    @Column(name = "price", nullable = false)
+    private Double price;
+
+    @Column(name = "tax_class")
+    private String taxClass;
+
+    @Column(name = "description", length = 1024)
+    private String description;
+
+    @ManyToOne
+    @JoinColumn(name = "category_id", referencedColumnName = "id", nullable = false)
+    private Category category;
+
+    @Column(name = "manage_inventory")
+    private Boolean manageInventory;
+
+    @OneToOne(mappedBy = "product", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    private Inventory inventory;
+
+    @OneToMany(mappedBy = "product")
+    private List<OrderItem> orderItems;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/Reservation.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Reservation.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Reservation.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,38 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * Entity: Reservation
+ * Description: Represents reservations made by users.
+ */
+@Entity
+@Table(name = "reservation")
+@Data
+@NoArgsConstructor
+public class Reservation {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "stay_length")
+    private Integer stayLength;
+
+    @Column(name = "datetime", nullable = false)
+    private LocalDateTime datetime;
+
+    @Column(name = "creation_timestamp", nullable = false)
+    private LocalDateTime creationTimestamp;
+
+    @Column(name = "number_of_people", nullable = false)
+    private Integer numberOfPeople;
+
+    @ManyToOne
+    @JoinColumn(name = "user_id", referencedColumnName = "id", nullable = false)
+    private User user;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/RestaurantTable.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/RestaurantTable.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/RestaurantTable.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,28 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: Table
+ * Description: Represents dining tables in the system.
+ */
+@Entity
+@Table(name = "table_details") // "table" is a reserved keyword
+@Data
+@NoArgsConstructor
+public class RestaurantTable {
+
+    @Id
+    @Column(name = "table_number")
+    private Integer tableNumber;
+
+    @Column(name = "seat_capacity", nullable = false)
+    private Integer seatCapacity;
+
+    @OneToMany(mappedBy = "table")
+    private List<TabOrder> tabOrders;
+}
+
Index: src/main/java/finki/db/tasty_tabs/entity/Shift.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/Shift.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/Shift.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,39 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * Entity: Shift
+ * Description: Represents a work shift in the system.
+ */
+@Entity
+@Table(name = "shift")
+@Data
+@NoArgsConstructor
+public class Shift {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "date", nullable = false)
+    private LocalDateTime date;
+
+    @Column(name = "start_time", nullable = false)
+    private LocalDateTime start;
+
+    @Column(name = "end_time", nullable = false)
+    private LocalDateTime end;
+
+    @ManyToOne
+    @JoinColumn(name = "manager_id", referencedColumnName = "employee_id", nullable = false)
+    private Manager manager;
+
+    @OneToMany(mappedBy = "shift")
+    private List<Assignment> assignments;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/StaffRole.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/StaffRole.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/StaffRole.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,31 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: StaffRole
+ * Description: Defines roles for staff members.
+ */
+@Entity
+@Table(name = "staff_role")
+@Data
+@NoArgsConstructor
+public class StaffRole {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "name", nullable = false, unique = true)
+    private String name;
+
+    @OneToMany(mappedBy = "staffRole")
+    private List<FrontStaff> frontStaffs;
+
+    @OneToMany(mappedBy = "staffRole")
+    private List<BackStaff> backStaffs;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/TabOrder.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/TabOrder.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/TabOrder.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,24 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+/**
+ * Entity: TabOrder
+ * Description: Represents orders made at a specific table.
+ */
+@Entity
+@Table(name = "tab_order")
+@Data
+@NoArgsConstructor
+@PrimaryKeyJoinColumn(name = "order_id")
+public class TabOrder extends Order {
+
+    @ManyToOne
+    @JoinColumn(name = "table_number", referencedColumnName = "table_number", nullable = false)
+    private RestaurantTable restaurantTable;
+
+    @ManyToOne
+    @JoinColumn(name = "frontstaff_id", referencedColumnName = "employee_id", nullable = false)
+    private FrontStaff frontStaff;
+}
Index: src/main/java/finki/db/tasty_tabs/entity/User.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/entity/User.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/entity/User.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,42 @@
+package finki.db.tasty_tabs.entity;
+import jakarta.persistence.*;
+import jakarta.persistence.Table;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Entity: User
+ * Description: Contains main information about all users in the system.
+ */
+@Entity
+@Table(name = "users") // "user" is often a reserved keyword in SQL
+@Data
+@NoArgsConstructor
+@Inheritance(strategy = InheritanceType.JOINED) // Strategy to allow for Employee/Customer subtypes
+public class User {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "email", nullable = false, unique = true)
+    private String email;
+
+    @Column(name = "street")
+    private String street;
+
+    @Column(name = "city")
+    private String city;
+
+    @Column(name = "phone_number")
+    private String phoneNumber;
+
+    @Column(name = "password", nullable = false)
+    private String password;
+
+    // Relationship for Reservations made by a user (if they are a customer)
+    @OneToMany(mappedBy = "user")
+    private List<Reservation> reservations;
+}
Index: src/main/java/finki/db/tasty_tabs/repository/AssignmentRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/AssignmentRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/AssignmentRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,10 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.Assignment;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.Optional;
+
+public interface AssignmentRepository extends JpaRepository<Assignment, Long> {
+    Optional<Assignment> findByEmployeeIdAndShiftId(Long employeeId, Long shiftId);
+}
Index: src/main/java/finki/db/tasty_tabs/repository/CustomerRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/CustomerRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/CustomerRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.Customer;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface CustomerRepository extends JpaRepository<Customer, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/EmployeeRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/EmployeeRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/EmployeeRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.Employee;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface EmployeeRepository extends JpaRepository<Employee, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/FrontStaffRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/FrontStaffRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/FrontStaffRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.FrontStaff;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface FrontStaffRepository extends JpaRepository<FrontStaff, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/ManagerRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/ManagerRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/ManagerRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.Manager;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface ManagerRepository extends JpaRepository<Manager, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/OnlineOrderRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/OnlineOrderRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/OnlineOrderRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.OnlineOrder;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface OnlineOrderRepository extends JpaRepository<OnlineOrder, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/OrderItemRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/OrderItemRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/OrderItemRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.OrderItem;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface OrderItemRepository extends JpaRepository<OrderItem, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/OrderRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/OrderRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/OrderRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.Order;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface OrderRepository extends JpaRepository<Order, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/ProductRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/ProductRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/ProductRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.Product;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface ProductRepository extends JpaRepository<Product, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/ReservationRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/ReservationRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/ReservationRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.Reservation;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface ReservationRepository extends JpaRepository<Reservation, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/ShiftRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/ShiftRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/ShiftRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.Shift;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface ShiftRepository extends JpaRepository<Shift, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/TabOrderRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/TabOrderRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/TabOrderRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.TabOrder;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface TabOrderRepository extends JpaRepository<TabOrder, Long> {}
Index: src/main/java/finki/db/tasty_tabs/repository/TableRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/TableRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/TableRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import jakarta.persistence.Table;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface TableRepository extends JpaRepository<Table, Integer> {}
Index: src/main/java/finki/db/tasty_tabs/repository/UserRepository.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/repository/UserRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/repository/UserRepository.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.repository;
+
+import finki.db.tasty_tabs.entity.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserRepository extends JpaRepository<User, Long> {}
Index: src/main/java/finki/db/tasty_tabs/service/OrderService.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/OrderService.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/service/OrderService.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,16 @@
+package finki.db.tasty_tabs.service;
+
+import finki.db.tasty_tabs.entity.OnlineOrder;
+import finki.db.tasty_tabs.entity.OrderItem;
+import finki.db.tasty_tabs.entity.TabOrder;
+import finki.db.tasty_tabs.web.dto.CreateOnlineOrderRequest;
+import finki.db.tasty_tabs.web.dto.CreateTabOrderRequest;
+import finki.db.tasty_tabs.web.dto.OrderItemRequest;
+import finki.db.tasty_tabs.web.dto.TransferTabRequest;
+
+public interface OrderService {
+    TabOrder createTabOrder(CreateTabOrderRequest request);
+    OnlineOrder createOnlineOrder(CreateOnlineOrderRequest request);
+    OrderItem addItemToOrder(Long orderId, OrderItemRequest itemRequest);
+    TabOrder transferTab(Long orderId, TransferTabRequest request);
+}
Index: src/main/java/finki/db/tasty_tabs/service/ProductService.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/ProductService.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/service/ProductService.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,13 @@
+package finki.db.tasty_tabs.service;
+
+import finki.db.tasty_tabs.entity.Category;
+import finki.db.tasty_tabs.entity.Product;
+
+import java.util.List;
+
+public interface ProductService {
+    Product createProduct(Product product);
+    List<Product> getAllProducts();
+    Category createCategory(Category category);
+    List<Category> getAllCategories();
+}
Index: src/main/java/finki/db/tasty_tabs/service/ReservationService.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/ReservationService.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/service/ReservationService.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,8 @@
+package finki.db.tasty_tabs.service;
+
+import finki.db.tasty_tabs.web.dto.CreateReservationRequest;
+import finki.db.tasty_tabs.web.dto.ReservationDto;
+
+public interface ReservationService {
+    ReservationDto makeReservation(CreateReservationRequest request);
+}
Index: src/main/java/finki/db/tasty_tabs/service/ShiftService.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/ShiftService.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/service/ShiftService.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,11 @@
+package finki.db.tasty_tabs.service;
+
+import finki.db.tasty_tabs.web.dto.AssignmentDto;
+import finki.db.tasty_tabs.web.dto.ClockInRequest;
+import finki.db.tasty_tabs.web.dto.CreateShiftRequest;
+import finki.db.tasty_tabs.web.dto.ShiftDto;
+
+public interface ShiftService {
+    AssignmentDto clockIn(ClockInRequest clockInRequest);
+    ShiftDto createAndAssignShift(CreateShiftRequest request);
+}
Index: src/main/java/finki/db/tasty_tabs/service/impl/ShiftServiceImpl.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/service/impl/ShiftServiceImpl.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/service/impl/ShiftServiceImpl.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,92 @@
+package finki.db.tasty_tabs.service.impl;
+
+import finki.db.tasty_tabs.entity.Assignment;
+import finki.db.tasty_tabs.entity.Employee;
+import finki.db.tasty_tabs.entity.Manager;
+import finki.db.tasty_tabs.entity.Shift;
+import finki.db.tasty_tabs.repository.AssignmentRepository;
+import finki.db.tasty_tabs.repository.EmployeeRepository;
+import finki.db.tasty_tabs.repository.ManagerRepository;
+import finki.db.tasty_tabs.repository.ShiftRepository;
+import finki.db.tasty_tabs.service.ShiftService;
+import finki.db.tasty_tabs.web.dto.AssignmentDto;
+import finki.db.tasty_tabs.web.dto.ClockInRequest;
+import finki.db.tasty_tabs.web.dto.CreateShiftRequest;
+import finki.db.tasty_tabs.web.dto.ShiftDto;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import jakarta.persistence.EntityNotFoundException;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+
+@Service
+@Transactional
+class ShiftServiceImpl implements ShiftService {
+
+    private final ShiftRepository shiftRepository;
+    private final AssignmentRepository assignmentRepository;
+    private final ManagerRepository managerRepository;
+    private final EmployeeRepository employeeRepository;
+
+    public ShiftServiceImpl(ShiftRepository shiftRepository, AssignmentRepository assignmentRepository, ManagerRepository managerRepository, EmployeeRepository employeeRepository) {
+        this.shiftRepository = shiftRepository;
+        this.assignmentRepository = assignmentRepository;
+        this.managerRepository = managerRepository;
+        this.employeeRepository = employeeRepository;
+    }
+
+    @Override
+    public AssignmentDto clockIn(ClockInRequest clockInRequest) {
+        Assignment assignment = assignmentRepository.findByEmployeeIdAndShiftId(clockInRequest.getEmployeeId(), clockInRequest.getShiftId())
+                .orElseThrow(() -> new EntityNotFoundException("Assignment not found for employee " + clockInRequest.getEmployeeId() + " and shift " + clockInRequest.getShiftId()));
+
+        if (assignment.getClockInTime() != null) {
+            throw new IllegalStateException("Employee has already clocked in for this shift.");
+        }
+
+        assignment.setClockInTime(LocalDateTime.now());
+        Assignment savedAssignment = assignmentRepository.save(assignment);
+        
+        // Manual mapping to DTO
+        AssignmentDto dto = new AssignmentDto();
+        dto.setId(savedAssignment.getId());
+        dto.setClockInTime(savedAssignment.getClockInTime());
+        dto.setClockOutTime(savedAssignment.getClockOutTime());
+        dto.setManagerId(savedAssignment.getManager().getId());
+        dto.setEmployeeId(savedAssignment.getEmployee().getId());
+        dto.setShiftId(savedAssignment.getShift().getId());
+        return dto;
+    }
+
+    @Override
+    public ShiftDto createAndAssignShift(CreateShiftRequest request) {
+        Manager manager = managerRepository.findById(request.getShift().getManagerId())
+                .orElseThrow(() -> new EntityNotFoundException("Manager not found with id: " + request.getShift().getManagerId()));
+
+        Shift shift = new Shift();
+        shift.setManager(manager);
+        shift.setDate(request.getShift().getDate());
+        shift.setStart(request.getShift().getStart());
+        shift.setEnd(request.getShift().getEnd());
+        Shift savedShift = shiftRepository.save(shift);
+
+        for (Long employeeId : request.getEmployeeIds()) {
+            Employee employee = employeeRepository.findById(employeeId)
+                    .orElseThrow(() -> new EntityNotFoundException("Employee not found with id: " + employeeId));
+            Assignment assignment = new Assignment();
+            assignment.setShift(savedShift);
+            assignment.setEmployee(employee);
+            assignment.setManager(manager);
+            assignmentRepository.save(assignment);
+        }
+        
+        ShiftDto dto = new ShiftDto();
+        dto.setId(savedShift.getId());
+        dto.setDate(savedShift.getDate());
+        dto.setStart(savedShift.getStart());
+        dto.setEnd(savedShift.getEnd());
+        dto.setManagerId(savedShift.getManager().getId());
+        return dto;
+    }
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/AssignmentDto.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/AssignmentDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/AssignmentDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,15 @@
+package finki.db.tasty_tabs.web.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class AssignmentDto {
+    private Long id;
+    private LocalDateTime clockInTime;
+    private LocalDateTime clockOutTime;
+    private Long managerId;
+    private Long employeeId;
+    private Long shiftId;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/ClockInRequest.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/ClockInRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/ClockInRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,11 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Data
+public class ClockInRequest {
+    private Long employeeId;
+    private Long shiftId;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/CreateOnlineOrderRequest.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/CreateOnlineOrderRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/CreateOnlineOrderRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,12 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+
+
+@Data
+public class CreateOnlineOrderRequest {
+    private Long customerId;
+    private String deliveryAddress;
+    private List<OrderItemRequest> items;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/CreateReservationRequest.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/CreateReservationRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/CreateReservationRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,11 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+public class CreateReservationRequest {
+    private Long customerId;
+    private Integer stayLength;
+    private LocalDateTime datetime;
+    private Integer numberOfPeople;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/CreateShiftRequest.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/CreateShiftRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/CreateShiftRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,9 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+public class CreateShiftRequest {
+    private ShiftDto shift;
+    private List<Long> employeeIds;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/CreateTabOrderRequest.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/CreateTabOrderRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/CreateTabOrderRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,10 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+public class CreateTabOrderRequest {
+    private Integer tableNumber;
+    private Long frontStaffId;
+    private List<OrderItemRequest> items;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/EmployeeDto.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/EmployeeDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/EmployeeDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,9 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+class EmployeeDto extends UserDto {
+    private Double netSalary;
+    private Double grossSalary;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/FrontStaffDto.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/FrontStaffDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/FrontStaffDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,9 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+class FrontStaffDto extends EmployeeDto {
+    private Double tipPercent;
+    private String staffRoleName;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/ManagerDto.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/ManagerDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/ManagerDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,6 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+class ManagerDto extends EmployeeDto {}
Index: src/main/java/finki/db/tasty_tabs/web/dto/OrderItemRequest.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/OrderItemRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/OrderItemRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,9 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+public class OrderItemRequest {
+    private Long productId;
+    private int quantity;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/ReservationDto.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/ReservationDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/ReservationDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,13 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+public class ReservationDto {
+    private Long id;
+    private Integer stayLength;
+    private LocalDateTime datetime;
+    private LocalDateTime creationTimestamp;
+    private Integer numberOfPeople;
+    private Long userId;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/ShiftDto.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/ShiftDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/ShiftDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,12 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+public class ShiftDto {
+    private Long id;
+    private LocalDateTime date;
+    private LocalDateTime start;
+    private LocalDateTime end;
+    private Long managerId;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/TransferTabRequest.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/TransferTabRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/TransferTabRequest.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,8 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+public class TransferTabRequest {
+    private Long newFrontStaffId;
+}
Index: src/main/java/finki/db/tasty_tabs/web/dto/UserDto.java
===================================================================
--- src/main/java/finki/db/tasty_tabs/web/dto/UserDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
+++ src/main/java/finki/db/tasty_tabs/web/dto/UserDto.java	(revision babd55bbf633e6824bc0286b40ba40e623afaa3a)
@@ -0,0 +1,12 @@
+package finki.db.tasty_tabs.web.dto;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+class UserDto {
+    private Long id;
+    private String email;
+    private String street;
+    private String city;
+    private String phoneNumber;
+}
