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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/bootstrap/DataHolder.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -100,4 +100,5 @@
                     null,
                     null,
+                    "LogoURL" + i,
                     localPhotos,
                     "MenuPhotoPath" + i,
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/contactDTO/DisplayContactDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/contactDTO/DisplayContactDTO.java	(revision 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/contactDTO/DisplayContactDTO.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -17,3 +17,9 @@
         );
     }
+
+    public Contact toContact() {
+        return new Contact(
+                phone, email, socialLinks
+        );
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/CreateLocalDetailsDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/CreateLocalDetailsDTO.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/CreateLocalDetailsDTO.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -0,0 +1,20 @@
+package mk.ukim.finki.it.reservengo.dto.localDTO;
+
+import mk.ukim.finki.it.reservengo.dto.contactDTO.DisplayContactDTO;
+import mk.ukim.finki.it.reservengo.model.enumerations.Service;
+
+import java.util.List;
+
+public record CreateLocalDetailsDTO(
+        String name,
+        String description,
+        String address,
+        String workingHours,
+        List<Service> services,
+        List<String> localPhotos,
+        String menuPhoto,
+        String menuLink,
+        DisplayContactDTO contact,
+        String logo
+) {
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/DisplayLocalDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/DisplayLocalDTO.java	(revision 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/localDTO/DisplayLocalDTO.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -11,5 +11,6 @@
         String address,
         String workingHours,
-        String logo
+        String logo,
+        Double averageRating
 ) {
     public static DisplayLocalDTO fromLocal(Local local) {
@@ -20,5 +21,6 @@
                 local.getAddress(),
                 local.getWorkingHours(),
-                local.getLogoUrl()
+                local.getLogoUrl(),
+                local.getAverageRating()
         );
     }
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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/Local.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -53,5 +53,4 @@
     private String menuPhoto;
 
-
     private String menuLink;
 
@@ -67,5 +66,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;
@@ -75,4 +74,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 b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/MenuDeletionException.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -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 b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/exceptions/PhotoDeletionException.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -1,23 +1,16 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
+import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDetailsDTO;
 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.LocalManagerIdNotFoundException;
-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;
-import mk.ukim.finki.it.reservengo.repository.LocalRepository;
-import mk.ukim.finki.it.reservengo.service.intf.FileStorageService;
 import mk.ukim.finki.it.reservengo.service.intf.LocalManagerService;
+import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 import mk.ukim.finki.it.reservengo.service.intf.UserService;
 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;
 
@@ -25,24 +18,17 @@
 public class LocalManagerServiceImpl implements LocalManagerService {
 
-    private final LocalRepository localRepository;
+    private final LocalService localService;
     private final LocalManagerRepository localManagerRepository;
-    private final FileStorageService fileStorageService;
     private final UserService userService;
 
-    public LocalManagerServiceImpl(LocalRepository localRepository, LocalManagerRepository localManagerRepository, FileStorageService fileStorageService, UserService userService) {
-        this.localRepository = localRepository;
+    public LocalManagerServiceImpl(LocalService localService, LocalManagerRepository localManagerRepository, UserService userService) {
+        this.localService = localService;
         this.localManagerRepository = localManagerRepository;
-        this.fileStorageService = fileStorageService;
         this.userService = userService;
     }
 
     @Override
-    public void uploadLogo(Long localId, MultipartFile logoFile) {
-        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
-
-        String logoPath = fileStorageService.saveLogoFile(logoFile);
-        local.setLogoUrl(logoPath);
-
-        localRepository.save(local);
+    public void uploadLocalLogo(Long localId, MultipartFile logoFile) {
+        localService.addLogo(localId, logoFile);
     }
 
@@ -57,41 +43,27 @@
     @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);
+        localService.deleteLogo(localId);
     }
 
     @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);
+    public void uploadLocalPhotos(Long localId, List<MultipartFile> photos) {
+        localService.uploadPhotos(localId, photos);
     }
 
     @Override
+    public void deleteLocalPhotos(Long localId, List<String> photoPaths) {
+        localService.deletePhotos(localId, photoPaths);
+    }
+
+    @Override
+    public void uploadLocalMenu(Long localId, MultipartFile localMenuFile) {
+        localService.uploadMenu(localId, localMenuFile);
+    }
+
+    @Override
+    public void deleteLocalMenuPhoto(Long localId) {
+        localService.deleteMenu(localId);
+    }
+
     public List<LocalManager> findAllByLocalId(Long localId) {
         return localManagerRepository.findByLocal_Id(localId);
@@ -117,3 +89,14 @@
         localManagerRepository.save(existingManager);
     }
+
+    @Override
+    public Local findLocalByManagerId(Long id) {
+        LocalManager localManager = localManagerRepository.findById(id).orElseThrow(() -> new LocalManagerIdNotFoundException(id));
+        return localManager.getLocal();
+    }
+
+    @Override
+    public void editLocalInfo(Long localId, CreateLocalDetailsDTO createLocalDetailsDTO) {
+        localService.updateInfoLocal(localId, createLocalDetailsDTO);
+    }
 }
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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalServiceImpl.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -1,10 +1,21 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
+import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDetailsDTO;
 import mk.ukim.finki.it.reservengo.model.domain.Local;
 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.MenuDeletionException;
+import mk.ukim.finki.it.reservengo.model.exceptions.PhotoDeletionException;
 import mk.ukim.finki.it.reservengo.repository.LocalRepository;
+import mk.ukim.finki.it.reservengo.service.intf.FileStorageService;
 import mk.ukim.finki.it.reservengo.service.intf.LocalService;
 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;
 
@@ -13,7 +24,9 @@
 
     private final LocalRepository localRepository;
+    private final FileStorageService fileStorageService;
 
-    public LocalServiceImpl(LocalRepository localRepository) {
+    public LocalServiceImpl(LocalRepository localRepository, FileStorageService fileStorageService) {
         this.localRepository = localRepository;
+        this.fileStorageService = fileStorageService;
     }
 
@@ -39,3 +52,125 @@
         localRepository.delete(local);
     }
+
+    @Override
+    public void addLogo(Long localId, MultipartFile multipartFile) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+
+        if (!multipartFile.isEmpty()) {
+            String logoPath = fileStorageService.saveLogoFile(multipartFile);
+            local.setLogoUrl(logoPath);
+        }
+
+        localRepository.save(local);
+    }
+
+    @Override
+    public void deleteLogo(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("logos").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);
+    }
+
+    @Override
+    public void deletePhotos(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 uploadMenu(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 deleteMenu(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);
+        }
+    }
+
+    @Override
+    public void updateInfoLocal(Long localId, CreateLocalDetailsDTO createLocalDetailsDTO) {
+        Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId));
+
+        local.setName(createLocalDetailsDTO.name());
+        local.setDescription(createLocalDetailsDTO.description());
+        local.setAddress(createLocalDetailsDTO.address());
+        local.setWorkingHours(createLocalDetailsDTO.workingHours());
+        local.setAvailableServices(createLocalDetailsDTO.services());
+        local.setLocalPhotos(createLocalDetailsDTO.localPhotos());
+        local.setMenuPhoto(createLocalDetailsDTO.menuPhoto());
+        local.setMenuLink(createLocalDetailsDTO.menuLink());
+        local.setContact(createLocalDetailsDTO.contact().toContact());
+        local.setLogoUrl(createLocalDetailsDTO.logo());
+
+        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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -1,4 +1,7 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
+import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDetailsDTO;
+import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
+import mk.ukim.finki.it.reservengo.model.domain.Local;
 import mk.ukim.finki.it.reservengo.model.domain.LocalManager;
 import org.springframework.web.multipart.MultipartFile;
@@ -7,5 +10,5 @@
 
 public interface LocalManagerService {
-    void uploadLogo(Long localId, MultipartFile logoFile);
+    void uploadLocalLogo(Long localId, MultipartFile logoFile);
 
     void save(LocalManager localManager);
@@ -13,5 +16,11 @@
     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);
 
     List<LocalManager> findAllByLocalId(Long localId);
@@ -22,3 +31,7 @@
 
     void update(Long id, LocalManager manager);
+
+    Local findLocalByManagerId(Long id);
+
+    void editLocalInfo(Long localId, CreateLocalDetailsDTO createLocalDetailsDTO);
 }
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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalService.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -1,5 +1,7 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
+import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDetailsDTO;
 import mk.ukim.finki.it.reservengo.model.domain.Local;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -13,3 +15,17 @@
 
     void delete(Long id);
+
+    void addLogo(Long localId, MultipartFile multipartFile);
+
+    void deleteLogo(Long localId);
+
+    void uploadPhotos(Long localId, List<MultipartFile> photos);
+
+    void deletePhotos(Long localId, List<String> photoPaths);
+
+    void uploadMenu(Long localId, MultipartFile localMenuFile);
+
+    void deleteMenu(Long localId);
+
+    void updateInfoLocal(Long localId, CreateLocalDetailsDTO createLocalDetailsDTO);
 }
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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -77,4 +77,14 @@
     }
 
+    @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());
+    }
+
     @ExceptionHandler(ManagerAlreadyAssignedException.class)
     public ResponseEntity<String> handleManagerAlreadyAssigned(ManagerAlreadyAssignedException ex) {
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 4d51d9bd92ef959c95940bcfd499357ca9d62513)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java	(revision b64746bfd6dc26786845ed4fb4ac6b08a4976d31)
@@ -1,6 +1,12 @@
 package mk.ukim.finki.it.reservengo.web.controller;
 
+import mk.ukim.finki.it.reservengo.dto.localDTO.CreateLocalDetailsDTO;
+import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDTO;
+import mk.ukim.finki.it.reservengo.dto.localDTO.DisplayLocalDetailsDTO;
+import mk.ukim.finki.it.reservengo.model.domain.User;
 import mk.ukim.finki.it.reservengo.service.intf.LocalManagerService;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -19,21 +25,61 @@
 
     @PostMapping("/{localId}/upload-logo")
-    public ResponseEntity<?> uploadLogo(@PathVariable Long localId,
-                                        @RequestParam("logo") MultipartFile logoFile) {
-        localManagerService.uploadLogo(localId, logoFile);
-        return ResponseEntity.ok().build();
+    public ResponseEntity<Void> uploadLogo(@PathVariable Long localId,
+                                           @RequestParam("logo") MultipartFile logoFile) {
+        localManagerService.uploadLocalLogo(localId, logoFile);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
 
     @DeleteMapping("/{localId}/delete-logo")
-    public ResponseEntity<?> deleteLocalLogo(@PathVariable Long localId) {
+    public ResponseEntity<Void> deleteLocalLogo(@PathVariable Long localId) {
         localManagerService.deleteLocalLogo(localId);
-        return ResponseEntity.ok().build();
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @PostMapping("/{localId}/upload-menu")
+    public ResponseEntity<Void> uploadMenu(@PathVariable Long localId,
+                                           @RequestParam("menu") MultipartFile menuFile) {
+        localManagerService.uploadLocalMenu(localId, menuFile);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping("/{localId}/delete-menu")
+    public ResponseEntity<Void> deleteMenu(@PathVariable Long localId) {
+        localManagerService.deleteLocalMenuPhoto(localId);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
 
     @PostMapping("/{localId}/upload-photos")
-    public ResponseEntity<?> uploadPhotos(@PathVariable Long localId,
-                                          @RequestParam("photos") List<MultipartFile> photos) {
-        localManagerService.uploadPhotos(localId, photos);
-        return ResponseEntity.ok().build();
+    public ResponseEntity<Void> uploadPhotos(@PathVariable Long localId,
+                                             @RequestParam("photos") List<MultipartFile> photos) {
+        localManagerService.uploadLocalPhotos(localId, photos);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @DeleteMapping("/{localId}/delete-photos")
+    public ResponseEntity<Void> deletePhotos(@PathVariable Long localId,
+                                             @RequestParam("photos") List<String> photoPaths) {
+        localManagerService.deleteLocalPhotos(localId, photoPaths);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @GetMapping("/my-local")
+    public ResponseEntity<DisplayLocalDTO> getLocalForManager(@AuthenticationPrincipal User user) {
+        DisplayLocalDTO displayLocalDTO = DisplayLocalDTO.fromLocal(localManagerService.findLocalByManagerId(user.getId()));
+        return new ResponseEntity<>(displayLocalDTO, HttpStatus.OK);
+    }
+
+    @GetMapping("/my-local/edit")
+    public ResponseEntity<DisplayLocalDetailsDTO> getLocalInformation(@AuthenticationPrincipal User user) {
+        DisplayLocalDetailsDTO displayLocalDetailsDTO = DisplayLocalDetailsDTO.from(localManagerService.findLocalByManagerId(user.getId()));
+        return new ResponseEntity<>(displayLocalDetailsDTO, HttpStatus.OK);
+    }
+
+    @PostMapping("/{localId}/edit")
+    public ResponseEntity<Void> editLocalInformation(@PathVariable Long localId,
+                                                     @RequestBody CreateLocalDetailsDTO createLocalDetailsDTO) {
+        localManagerService.editLocalInfo(localId, createLocalDetailsDTO);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+
     }
 }
