Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java	(revision fa26ba9d04d2288af43126acd43334da65f8fbec)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
@@ -70,4 +70,9 @@
                         .allowedHeaders("*")
                         .allowCredentials(true);
+
+                registry.addMapping("/uploads/**")
+                        .allowedOrigins("http://localhost:5173")
+                        .allowedMethods("*")// maybe should be only GET
+                        .allowedHeaders("*");
             }
         };
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LogoDeletionException.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LogoDeletionException.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/LogoDeletionException.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.it.reservengo.model.exceptions;
+
+public class LogoDeletionException extends RuntimeException {
+    public LogoDeletionException(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 fa26ba9d04d2288af43126acd43334da65f8fbec)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
@@ -15,19 +15,37 @@
 public class FileStorageServiceImpl implements FileStorageService {
 
-    private final Path uploadDirectory = Paths.get("uploads");
+    private final Path rootUploadsDir = Paths.get("uploads");
+    private final Path logosDir = rootUploadsDir.resolve("logos");
+    private final Path localsDir = rootUploadsDir.resolve("locals");
 
     public FileStorageServiceImpl() throws IOException {
-        Files.createDirectories(uploadDirectory);
+        Files.createDirectories(rootUploadsDir);
+        Files.createDirectories(logosDir);
+        Files.createDirectories(localsDir);
     }
 
     @Override
-    public String saveFile(MultipartFile file) {
+    public String saveLogoFile(MultipartFile file) {
         try {
             String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename();
-            Path target = uploadDirectory.resolve(fileName);
+            Path target = logosDir.resolve(fileName);
             Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING);
-            return "/uploads/" + fileName;
+            return "/uploads/logos/" + fileName;
         } catch (IOException e) {
-            throw new RuntimeException("Failed to save file", e);
+            throw new RuntimeException("Failed to save logo", e);
+        }
+    }
+
+    @Override
+    public String saveLocalPhoto(Long localId, MultipartFile file) {
+        try {
+            Path localFolder = localsDir.resolve(String.valueOf(localId));
+            Files.createDirectories(localFolder);
+            String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename();
+            Path target = localFolder.resolve(fileName);
+            Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING);
+            return "/uploads/locals/" + localId + "/" + fileName;
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to save local 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 fa26ba9d04d2288af43126acd43334da65f8fbec)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
@@ -4,4 +4,5 @@
 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.repository.LocalManagerRepository;
@@ -12,4 +13,11 @@
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
 
 @Service
@@ -32,5 +40,5 @@
         Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
 
-        String logoPath = fileStorageService.saveFile(logoFile);
+        String logoPath = fileStorageService.saveLogoFile(logoFile);
         local.setLogoUrl(logoPath);
 
@@ -45,3 +53,41 @@
         localManagerRepository.save(localManager);
     }
+
+    @Override
+    public void deleteLocalLogo(Long localId) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+        String logoUrl = local.getLogoUrl();
+
+        if (logoUrl != null && !logoUrl.isEmpty()) {
+            Path filePath = Paths.get("uploads").resolve(Paths.get(logoUrl).getFileName().toString());
+
+            try {
+                Files.deleteIfExists(filePath);
+            } catch (IOException e) {
+                throw new LogoDeletionException("Failed to delete logo from path: " + filePath, e);
+            }
+        }
+        local.setLogoUrl(null);
+        localRepository.save(local);
+    }
+
+    @Override
+    public void uploadPhotos(Long localId, List<MultipartFile> photos) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+
+        List<String> photoPaths = local.getLocalPhotos();
+
+        if (photoPaths == null) {
+            photoPaths = new ArrayList<>();
+        }
+
+        for (MultipartFile photo : photos) {
+            if (!photo.isEmpty()) {
+                String filePath = fileStorageService.saveLocalPhoto(localId, photo);
+                photoPaths.add(filePath);
+            }
+        }
+        local.setLocalPhotos(photoPaths);
+        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 fa26ba9d04d2288af43126acd43334da65f8fbec)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
@@ -4,4 +4,5 @@
 
 public interface FileStorageService {
-    String saveFile(MultipartFile file);
+    String saveLogoFile(MultipartFile file);
+    String saveLocalPhoto(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 fa26ba9d04d2288af43126acd43334da65f8fbec)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
@@ -4,7 +4,13 @@
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
+
 public interface LocalManagerService {
     void uploadLogo(Long localId, MultipartFile logoFile);
 
     void save(LocalManager localManager);
+
+    void deleteLocalLogo(Long localId);
+
+    void uploadPhotos(Long localId, List<MultipartFile> photos);
 }
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 fa26ba9d04d2288af43126acd43334da65f8fbec)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
@@ -51,4 +51,9 @@
         return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
     }
+
+    @ExceptionHandler(LogoDeletionException.class)
+    public ResponseEntity<String> handleLogoDeletion(LogoDeletionException 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 fa26ba9d04d2288af43126acd43334da65f8fbec)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java	(revision ae61ea400418c1a41221ce608b4e7f4894497875)
@@ -5,4 +5,6 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
 
 @RestController
@@ -22,8 +24,15 @@
         return ResponseEntity.ok().build();
     }
-    //TODO implement delete logo
+
+    @DeleteMapping("/{localId}/delete-logo")
+    public ResponseEntity<?> deleteLocalLogo(@PathVariable Long localId) {
+        localManagerService.deleteLocalLogo(localId);
+        return ResponseEntity.ok().build();
+    }
+
     @PostMapping("/{localId}/upload-photos")
-    //TODO implement this next
-    public ResponseEntity<?> uploadPhotos(@PathVariable Long localId) {
+    public ResponseEntity<?> uploadPhotos(@PathVariable Long localId,
+                                          @RequestParam("photos") List<MultipartFile> photos) {
+        localManagerService.uploadPhotos(localId, photos);
         return ResponseEntity.ok().build();
     }
