Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/userDTO/UserDTO.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/userDTO/UserDTO.java	(revision ef1c66e9855bdafd750667cc95415576a3af972e)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/dto/userDTO/UserDTO.java	(revision ef1c66e9855bdafd750667cc95415576a3af972e)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.it.reservengo.dto.userDTO;
+
+
+public record UserDTO(
+        String firstName,
+        String lastName,
+        String email,
+        String password,
+        String phoneNumber
+) {
+}
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision 1624c61b3bcb9cdb0a87a6724888678e54a8749e)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/domain/User.java	(revision ef1c66e9855bdafd750667cc95415576a3af972e)
@@ -104,3 +104,31 @@
         return userRole;
     }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
+
+    public void setUserRole(Role userRole) {
+        this.userRole = userRole;
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java	(revision 1624c61b3bcb9cdb0a87a6724888678e54a8749e)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/UserServiceImpl.java	(revision ef1c66e9855bdafd750667cc95415576a3af972e)
@@ -1,5 +1,10 @@
 package mk.ukim.finki.it.reservengo.service.impl;
 
+import mk.ukim.finki.it.reservengo.dto.userDTO.UserDTO;
+import mk.ukim.finki.it.reservengo.model.domain.User;
+import mk.ukim.finki.it.reservengo.model.exceptions.CustomerNotFoundException;
+import mk.ukim.finki.it.reservengo.repository.UserRepository;
 import mk.ukim.finki.it.reservengo.service.intf.UserService;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
 
@@ -7,3 +12,40 @@
 public class UserServiceImpl implements UserService {
 
+    private final UserRepository userRepository;
+    private final PasswordEncoder passwordEncoder;
+
+    public UserServiceImpl(UserRepository userRepository, PasswordEncoder passwordEncoder) {
+        this.userRepository = userRepository;
+        this.passwordEncoder = passwordEncoder;
+    }
+
+    @Override
+    public User findUser(Long userId) {
+        return userRepository.findById(userId).orElseThrow(() -> new CustomerNotFoundException(userId));
+    }
+
+    @Override
+    public User editUserInfo(Long userId, UserDTO userDTO) {
+        User user = findUser(userId);
+        updateUserFromDto(user, userDTO);
+        return userRepository.save(user);
+    }
+
+    private void updateUserFromDto(User user, UserDTO userDTO) {
+        if (userDTO.firstName() != null) {
+            user.setFirstName(userDTO.firstName());
+        }
+        if (userDTO.lastName() != null) {
+            user.setLastName(userDTO.lastName());
+        }
+        if (userDTO.email() != null) {
+            user.setEmail(userDTO.email());
+        }
+        if (userDTO.password() != null && !userDTO.password().isEmpty()) {
+            user.setPassword(passwordEncoder.encode(userDTO.password()));
+        }
+        if (userDTO.phoneNumber() != null) {
+            user.setPhoneNumber(userDTO.phoneNumber());
+        }
+    }
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java	(revision 1624c61b3bcb9cdb0a87a6724888678e54a8749e)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/UserService.java	(revision ef1c66e9855bdafd750667cc95415576a3af972e)
@@ -1,4 +1,10 @@
 package mk.ukim.finki.it.reservengo.service.intf;
 
+import mk.ukim.finki.it.reservengo.dto.userDTO.UserDTO;
+import mk.ukim.finki.it.reservengo.model.domain.User;
+
 public interface UserService {
+    User findUser(Long userId);
+
+    User editUserInfo(Long userId, UserDTO userDTO);
 }
Index: ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/UserController.java
===================================================================
--- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/UserController.java	(revision 1624c61b3bcb9cdb0a87a6724888678e54a8749e)
+++ ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/UserController.java	(revision ef1c66e9855bdafd750667cc95415576a3af972e)
@@ -1,14 +1,24 @@
 package mk.ukim.finki.it.reservengo.web;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import mk.ukim.finki.it.reservengo.dto.userDTO.UserDTO;
+import mk.ukim.finki.it.reservengo.model.domain.User;
+import mk.ukim.finki.it.reservengo.service.intf.UserService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/api/user")
 public class UserController {
-    //TODO edit personal info(USER -> customer,localWorker,localManager)
 
-//    @PostMapping("/edit")
-//    public ResponseEntity<?> editPersonalInfo(@RequestBody UserDTO userDTO){
-//    }
+    private final UserService userService;
+
+    public UserController(UserService userService) {
+        this.userService = userService;
+    }
+
+    @PutMapping("/{userId}/edit-info")
+    public ResponseEntity<?> editPersonalInfo(@PathVariable Long userId, @RequestBody UserDTO userDTO) {
+        User user = userService.editUserInfo(userId, userDTO);
+        return ResponseEntity.ok(user);
+    }
 }
