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 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/bootstrap/DataHolder.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -114,5 +114,4 @@
                     null,
                     null,
-                    null,
                     LocalType.RESTAURANT
             );
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/customerDTO/RatingDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/customerDTO/RatingDTO.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/customerDTO/RatingDTO.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -0,0 +1,9 @@
+package mk.ukim.finki.it.reservengo.dto.customerDTO;
+
+public record RatingDTO(
+        int rating
+) {
+    public static RatingDTO from(int localRating) {
+        return new RatingDTO(localRating);
+    }
+}
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 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -64,10 +64,7 @@
     private List<Reservation> reservations;
 
-    @OneToMany(mappedBy = "local")
-    private List<LocalWorker> workers;
-
     private String logoUrl;
 
-    public Local(String name, String description, String address, List<WorkingHour> workingHours, List<ProvidedService> availableServices, Map<Long, Integer> ratings, List<Event> events, String logoUrl, List<String> photos, String menuLink, Contact contact, List<Reservation> reservations, List<LocalWorker> workers, LocalType localType) {
+    public Local(String name, String description, String address, List<WorkingHour> workingHours, List<ProvidedService> availableServices, Map<Long, Integer> ratings, List<Event> events, String logoUrl, List<String> photos, String menuLink, Contact contact, List<Reservation> reservations, LocalType localType) {
         this.name = name;
         this.description = description;
@@ -82,5 +79,4 @@
         this.contact = contact;
         this.reservations = reservations;
-        this.workers = workers;
         this.localType = localType;
     }
@@ -102,5 +98,5 @@
 
     public boolean isOpenNow() {
-        if (workingHours == null || workingHours.isEmpty()){
+        if (workingHours == null || workingHours.isEmpty()) {
             return false;
         }
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 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Reservation.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -6,5 +6,4 @@
 import mk.ukim.finki.it.reservengo.model.enumerations.ReservationStatus;
 
-import java.time.LocalDateTime;
 import java.util.Map;
 
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/ProvidedService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/ProvidedService.java	(revision 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/ProvidedService.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -8,4 +8,8 @@
     INDOOR,
     PLAYGROUND,
-    VEGAN_FRIENDLY
+    VEGAN_FRIENDLY,
+    VEGETARIAN_FRIENDLY,
+    GLUTEN_FREE_FRIENDLY,
+    FAMILY_KIDS_FRIENDLY,
+    SMOKING_FRIENDLY
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/ReservationStatus.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/ReservationStatus.java	(revision 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/ReservationStatus.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -5,4 +5,4 @@
     PENDING,
     ACCEPTED,
-    CANCELLED
+    CANCELED
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/RatingNotFoundException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/RatingNotFoundException.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/RatingNotFoundException.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class RatingNotFoundException extends RuntimeException {
+    public RatingNotFoundException(Long customerId, Long localId) {
+        super("No rating found for local with id: " + localId + " from customer with id: " + customerId + ".");
+    }
+}
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 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/CustomerServiceImpl.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
+import mk.ukim.finki.it.reservengo.dto.customerDTO.RatingDTO;
 import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
@@ -101,3 +102,25 @@
         customerRepository.save(customer);
     }
+
+    @Override
+    public void rateLocal(Long customerId, Long localId, RatingDTO ratingDTO) {
+        customerRepository.findById(customerId).orElseThrow(() -> new CustomerIdNotFoundException(customerId));
+        localService.addRating(customerId, localId, ratingDTO.rating());
+    }
+
+    @Override
+    public void removeRating(Long customerId, Long localId) {
+        customerRepository.findById(customerId).orElseThrow(() -> new CustomerIdNotFoundException(customerId));
+        localService.removeRating(customerId, localId);
+    }
+
+    @Override
+    public int findLocalRating(Long customerId, Long localId) {
+        customerRepository.findById(customerId).orElseThrow(() -> new CustomerIdNotFoundException(customerId));
+        Local local = localService.findLocalById(localId);
+        if (!local.getRatings().containsKey(customerId) || local.getRatings().get(customerId) == null) {
+            throw new RatingNotFoundException(customerId, localId);
+        }
+        return local.getRatings().get(customerId);
+    }
 }
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 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -245,4 +245,23 @@
     }
 
+    @Override
+    @Transactional
+    public void addRating(Long customerId, Long localId, int rating) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+        local.getRatings().put(customerId, rating);
+        localRepository.save(local);
+    }
+
+    @Override
+    @Transactional
+    public void removeRating(Long customerId, Long localId) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+        if (!local.getRatings().containsKey(customerId) || local.getRatings().get(customerId) == null) {
+            throw new RatingNotFoundException(customerId, localId);
+        }
+        local.getRatings().remove(customerId);
+        localRepository.save(local);
+    }
+
     private Sort getSort(String sortBy, String direction) {
         Sort.Direction sortDirection = "desc".equalsIgnoreCase(direction) ? Sort.Direction.DESC : Sort.Direction.ASC;
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 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/CustomerService.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
+import mk.ukim.finki.it.reservengo.dto.customerDTO.RatingDTO;
 import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
@@ -23,3 +24,9 @@
 
     void removeFavouriteEvent(Long userId, Long eventId);
+
+    void rateLocal(Long customerId, Long localId, RatingDTO ratingDTO);
+
+    void removeRating(Long customerId, Long localId);
+
+    int findLocalRating(Long customerId, Long localId);
 }
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 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -40,3 +40,7 @@
 
     Event editEvent(Local local, Event event, CreateEventDTO createEventDTO);
+
+    void addRating(Long customerId, Long localId, int rating);
+
+    void removeRating(Long customerId, Long localId);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -144,4 +144,9 @@
         return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
     }
+
+    @ExceptionHandler(RatingNotFoundException.class)
+    public ResponseEntity<String> handleRatingNotFound(RatingNotFoundException ex) {
+        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
+    }
 }
 
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/AuthController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/AuthController.java	(revision 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/AuthController.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -49,5 +49,5 @@
     @GetMapping("/register/invite/check")
     public ResponseEntity<Void> checkInvite() {
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+        return new ResponseEntity<>(HttpStatus.OK);
     }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/CustomerController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/CustomerController.java	(revision 6df993513b3a1035922e8be54718dc8296479f54)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/CustomerController.java	(revision d90601f3d2e204d572e6f170033a5bd483473ee4)
@@ -1,4 +1,5 @@
 package mk.ukim.finki.it.reservengo.web.controller;
 
+import mk.ukim.finki.it.reservengo.dto.customerDTO.RatingDTO;
 import mk.ukim.finki.it.reservengo.dto.eventDTO.DisplayEventDTO;
 import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
@@ -59,3 +60,21 @@
         return new ResponseEntity<>(HttpStatus.OK);
     }
+
+    @PutMapping("/local/{id}/rate")
+    public ResponseEntity<Void> rateLocal(@AuthenticationPrincipal User user, @PathVariable Long id, @RequestBody RatingDTO ratingDTO) {
+        customerService.rateLocal(user.getId(), id, ratingDTO);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @DeleteMapping("/local/{id}/remove-rating")
+    public ResponseEntity<Void> deleteRating(@AuthenticationPrincipal User user, @PathVariable Long id) {
+        customerService.removeRating(user.getId(), id);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+    @GetMapping("local/{id}/rating")
+    public ResponseEntity<RatingDTO> getRatingForLocal(@AuthenticationPrincipal User user, @PathVariable Long id) {
+        RatingDTO ratingDTO = RatingDTO.from(customerService.findLocalRating(user.getId(), id));
+        return new ResponseEntity<>(ratingDTO, HttpStatus.OK);
+    }
 }
