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 30410232f6ea567140685045a41d48ba09f46eb6)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/bootstrap/DataHolder.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -100,4 +100,5 @@
                     null,
                     null,
+                    "LogoURL" + i,
                     localPhotos,
                     "MenuPhotoPath" + i,
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 30410232f6ea567140685045a41d48ba09f46eb6)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -45,5 +45,4 @@
     private String menuPhoto;
 
-
     private String menuLink;
 
@@ -59,5 +58,5 @@
     private String logoUrl;
 
-    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) {
+    public Local(String name, String description, String address, String workingHours, List<Service> availableServices, Map<Long, Integer> ratings, List<Event> events, String logoUrl, List<String> localPhotos, String menuPhoto, String menuLink, Contact contact, List<Reservation> reservations, List<LocalWorker> workers) {
         this.name = name;
         this.description = description;
@@ -67,4 +66,5 @@
         this.ratings = ratings;
         this.events = events;
+        this.logoUrl = logoUrl;
         this.localPhotos = localPhotos;
         this.menuPhoto = menuPhoto;
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/MenuDeletionException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/MenuDeletionException.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/MenuDeletionException.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class MenuDeletionException extends RuntimeException {
+    public MenuDeletionException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoDeletionException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoDeletionException.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoDeletionException.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class PhotoDeletionException extends RuntimeException {
+    public PhotoDeletionException(String message, Throwable cause) {
+        super(message,cause);
+    }
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java	(revision 30410232f6ea567140685045a41d48ba09f46eb6)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -43,10 +43,39 @@
             Files.createDirectories(localFolder);
             String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename();
-            Path target = localFolder.resolve(fileName);
+            Path target = localFolder.resolve("photos").resolve(fileName);
+            Files.createDirectories(target.getParent());
             Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING);
-            return "/uploads/locals/" + localId + "/" + fileName;
+            return "/uploads/locals/" + localId + "/photos/" + fileName;
         } catch (IOException e) {
             throw new RuntimeException("Failed to save local photo", e);
         }
     }
+
+    @Override
+    public void deletePhotoFile(String filePath) {
+        try {
+            String relativePath = filePath.replaceFirst("/uploads/?", "");
+            Path fullPath = rootUploadsDir.resolve(relativePath);
+
+            Files.deleteIfExists(fullPath);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to delete file: " + filePath, e);
+        }
+    }
+
+    @Override
+    public String saveLocalMenuPhoto(Long localId, MultipartFile file) {
+        try {
+            Path localFolder = localsDir.resolve(String.valueOf(localId));
+            Files.createDirectories(localFolder);
+
+            String menuFileName = "menu_" + UUID.randomUUID() + "_" + file.getOriginalFilename();
+            Path target = localFolder.resolve(menuFileName);
+
+            Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING);
+            return "/uploads/locals/" + localId + "/" + menuFileName;
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to save local menu photo", e);
+        }
+    }
 }
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 30410232f6ea567140685045a41d48ba09f46eb6)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -3,7 +3,5 @@
 import mk.ukim.finki.it.reservengo.model.domain.Local;
 import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
-import mk.ukim.finki.it.reservengo.model.exceptions.LocalIdNotFoundException;
-import mk.ukim.finki.it.reservengo.model.exceptions.LogoDeletionException;
-import mk.ukim.finki.it.reservengo.model.exceptions.UserEmailAlreadyExistsException;
+import mk.ukim.finki.it.reservengo.model.exceptions.*;
 import mk.ukim.finki.it.reservengo.repository.LocalManagerRepository;
 import mk.ukim.finki.it.reservengo.repository.LocalRepository;
@@ -37,9 +35,11 @@
 
     @Override
-    public void uploadLogo(Long localId, MultipartFile logoFile) {
+    public void uploadLocalLogo(Long localId, MultipartFile logoFile) {
         Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
 
-        String logoPath = fileStorageService.saveLogoFile(logoFile);
-        local.setLogoUrl(logoPath);
+        if (!logoFile.isEmpty()) {
+            String logoPath = fileStorageService.saveLogoFile(logoFile);
+            local.setLogoUrl(logoPath);
+        }
 
         localRepository.save(local);
@@ -60,5 +60,5 @@
 
         if (logoUrl != null && !logoUrl.isEmpty()) {
-            Path filePath = Paths.get("uploads").resolve(Paths.get(logoUrl).getFileName().toString());
+            Path filePath = Paths.get("uploads").resolve("logos").resolve(Paths.get(logoUrl).getFileName().toString());
 
             try {
@@ -73,5 +73,5 @@
 
     @Override
-    public void uploadPhotos(Long localId, List<MultipartFile> photos) {
+    public void uploadLocalPhotos(Long localId, List<MultipartFile> photos) {
         Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
 
@@ -91,3 +91,57 @@
         localRepository.save(local);
     }
+
+    @Override
+    public void deleteLocalPhotos(Long localId, List<String> photoPaths) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+
+        List<String> uploadedPhotos = local.getLocalPhotos();
+
+        if (uploadedPhotos == null) {
+            uploadedPhotos = new ArrayList<>();
+        }
+
+        for (String photoPath : photoPaths) {
+            if (uploadedPhotos.contains(photoPath)) {
+                try {
+                    fileStorageService.deletePhotoFile(photoPath);
+                    uploadedPhotos.remove(photoPath);
+                } catch (RuntimeException e) {
+                    throw new PhotoDeletionException("Failed to delete photo: " + photoPath, e);
+                }
+            }
+        }
+
+        local.setLocalPhotos(uploadedPhotos);
+        localRepository.save(local);
+    }
+
+    @Override
+    public void uploadLocalMenu(Long localId, MultipartFile localMenuFile) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+
+        if (!localMenuFile.isEmpty()) {
+            String menuPath = fileStorageService.saveLocalMenuPhoto(localId, localMenuFile);
+            local.setMenuPhoto(menuPath);
+        }
+
+        localRepository.save(local);
+    }
+
+    @Override
+    public void deleteLocalMenuPhoto(Long localId) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+
+        String menuPhotoPath = local.getMenuPhoto();
+
+        if (menuPhotoPath != null && !menuPhotoPath.isEmpty()) {
+            try {
+                fileStorageService.deletePhotoFile(menuPhotoPath);
+            } catch (RuntimeException e) {
+                throw new MenuDeletionException("Failed to delete menu photo: " + menuPhotoPath, e);
+            }
+            local.setMenuPhoto(null);
+            localRepository.save(local);
+        }
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java	(revision 30410232f6ea567140685045a41d48ba09f46eb6)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -5,4 +5,10 @@
 public interface FileStorageService {
     String saveLogoFile(MultipartFile file);
+
     String saveLocalPhoto(Long localId, MultipartFile file);
+
+    void deletePhotoFile(String filePath);
+
+    String saveLocalMenuPhoto(Long localId, MultipartFile file);
+
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java	(revision 30410232f6ea567140685045a41d48ba09f46eb6)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -7,5 +7,5 @@
 
 public interface LocalManagerService {
-    void uploadLogo(Long localId, MultipartFile logoFile);
+    void uploadLocalLogo(Long localId, MultipartFile logoFile);
 
     void save(LocalManager localManager);
@@ -13,4 +13,12 @@
     void deleteLocalLogo(Long localId);
 
-    void uploadPhotos(Long localId, List<MultipartFile> photos);
+    void uploadLocalPhotos(Long localId, List<MultipartFile> photos);
+
+    void deleteLocalPhotos(Long localId, List<String> photoPaths);
+
+    void uploadLocalMenu(Long localId, MultipartFile localMenuFile);
+
+    void deleteLocalMenuPhoto(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 30410232f6ea567140685045a41d48ba09f46eb6)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -71,4 +71,14 @@
         return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
     }
+
+    @ExceptionHandler(PhotoDeletionException.class)
+    public ResponseEntity<String> handlePhotoDeletion(PhotoDeletionException ex) {
+        return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
+    }
+
+    @ExceptionHandler(MenuDeletionException.class)
+    public ResponseEntity<String> handleMenuDeletion(MenuDeletionException ex) {
+        return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
+    }
 }
 
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java	(revision 30410232f6ea567140685045a41d48ba09f46eb6)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java	(revision 9e81ff7c4a32d5612ac467caad92d123005bbd7f)
@@ -21,5 +21,5 @@
     public ResponseEntity<?> uploadLogo(@PathVariable Long localId,
                                         @RequestParam("logo") MultipartFile logoFile) {
-        localManagerService.uploadLogo(localId, logoFile);
+        localManagerService.uploadLocalLogo(localId, logoFile);
         return ResponseEntity.ok().build();
     }
@@ -31,10 +31,29 @@
     }
 
+    @PostMapping("/{localId}/upload-menu")
+    public ResponseEntity<?> uploadMenu(@PathVariable Long localId,
+                                        @RequestParam("menu") MultipartFile menuFile) {
+        localManagerService.uploadLocalMenu(localId,menuFile);
+        return ResponseEntity.ok().build();
+    }
+
+    @DeleteMapping("/{localId}/delete-menu")
+    public ResponseEntity<?> deleteMenu(@PathVariable Long localId) {
+        localManagerService.deleteLocalMenuPhoto(localId);
+        return ResponseEntity.ok().build();
+    }
+
     @PostMapping("/{localId}/upload-photos")
     public ResponseEntity<?> uploadPhotos(@PathVariable Long localId,
                                           @RequestParam("photos") List<MultipartFile> photos) {
-        localManagerService.uploadPhotos(localId, photos);
+        localManagerService.uploadLocalPhotos(localId, photos);
         return ResponseEntity.ok().build();
     }
 
+    @DeleteMapping("/{localId}/delete-photos")
+    public ResponseEntity<?> deletePhotos(@PathVariable Long localId,
+                                          @RequestParam("photos") List<String> photoPaths) {
+        localManagerService.deleteLocalPhotos(localId, photoPaths);
+        return ResponseEntity.ok().build();
+    }
 }
