Index: petify-backend/pom.xml
===================================================================
--- petify-backend/pom.xml	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/pom.xml	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -46,8 +46,4 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-webmvc</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-mail</artifactId>
         </dependency>
 
Index: petify-backend/sql/ddl.sql
===================================================================
--- petify-backend/sql/ddl.sql	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/sql/ddl.sql	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -107,7 +107,4 @@
                              city      VARCHAR(80)  NOT NULL,
                              address   VARCHAR(200) NOT NULL,
-                             work_days VARCHAR(120),
-                             start_time TIME,
-                             end_time   TIME,
                              user_id   BIGINT       UNIQUE,
                              application_id BIGINT UNIQUE,
@@ -230,5 +227,4 @@
                               review_id      BIGINT,
                               target_user_id BIGINT NOT NULL,
-                              interaction_type VARCHAR(40) NOT NULL,
 
                               CONSTRAINT user_reviews_PK PRIMARY KEY (review_id),
@@ -238,8 +234,5 @@
                               CONSTRAINT user_reviews_target_FK FOREIGN KEY (target_user_id)
                                   REFERENCES users(user_id)
-                                  ON DELETE RESTRICT,
-                              CONSTRAINT user_reviews_interaction_type_CHK CHECK (
-                                  interaction_type IN ('EVENT', 'PERSONAL_INTERACTION', 'ONLINE', 'PHONE_CALL', 'OTHER')
-                              )
+                                  ON DELETE RESTRICT
 );
 
Index: petify-backend/sql/dml.sql
===================================================================
--- petify-backend/sql/dml.sql	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/sql/dml.sql	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -116,7 +116,7 @@
 VALUES (1, (SELECT clinic_id FROM vet_clinics WHERE name='Happy Paws Clinic'));
 
-INSERT INTO user_reviews (review_id, target_user_id, interaction_type) VALUES
-                                                         (2, (SELECT user_id FROM users WHERE username='client.igor'), 'PERSONAL_INTERACTION'),
-                                                         (3, (SELECT user_id FROM users WHERE username='client.mila'), 'ONLINE');
+INSERT INTO user_reviews (review_id, target_user_id) VALUES
+                                                         (2, (SELECT user_id FROM users WHERE username='client.igor')),
+                                                         (3, (SELECT user_id FROM users WHERE username='client.mila'));
 
 INSERT INTO health_records (animal_id, appointment_id, type, description, date) VALUES
Index: petify-backend/src/main/java/com/petify/petify/api/AdminClinicApplicationsController.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/api/AdminClinicApplicationsController.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/api/AdminClinicApplicationsController.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -1,9 +1,10 @@
 package com.petify.petify.api;
 
+import com.petify.petify.domain.VetClinic;
 import com.petify.petify.domain.VetClinicApplication;
 import com.petify.petify.dto.VetClinicApplicationDTO;
 import com.petify.petify.repo.AdminRepository;
 import com.petify.petify.repo.VetClinicApplicationRepository;
-import com.petify.petify.service.ClinicApprovalService;
+import com.petify.petify.repo.VetClinicRepository;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -19,13 +20,13 @@
 
     private final VetClinicApplicationRepository applicationRepository;
+    private final VetClinicRepository clinicRepository;
     private final AdminRepository adminRepository;
-    private final ClinicApprovalService clinicApprovalService;
 
     public AdminClinicApplicationsController(VetClinicApplicationRepository applicationRepository,
-                                             AdminRepository adminRepository,
-                                             ClinicApprovalService clinicApprovalService) {
+                                             VetClinicRepository clinicRepository,
+                                             AdminRepository adminRepository) {
         this.applicationRepository = applicationRepository;
+        this.clinicRepository = clinicRepository;
         this.adminRepository = adminRepository;
-        this.clinicApprovalService = clinicApprovalService;
     }
 
@@ -55,5 +56,25 @@
                         .body(Map.of("error", "Admin access required"));
             }
-            VetClinicApplication saved = clinicApprovalService.approveApplication(applicationId, adminUserId);
+            VetClinicApplication application = applicationRepository.findById(applicationId)
+                .orElseThrow(() -> new RuntimeException("Application not found"));
+
+            application.setStatus("APPROVED");
+            application.setReviewedAt(LocalDateTime.now());
+            application.setReviewedBy(adminUserId);
+            application.setDenialReason(null);
+            VetClinicApplication saved = applicationRepository.save(application);
+
+            boolean clinicExists = clinicRepository.findAll().stream()
+                .anyMatch(clinic -> applicationId.equals(clinic.getApplicationId()));
+            if (!clinicExists) {
+                VetClinic clinic = new VetClinic();
+                clinic.setApplicationId(application.getApplicationId());
+                clinic.setName(application.getName());
+                clinic.setEmail(application.getEmail());
+                clinic.setPhone(application.getPhone());
+                clinic.setCity(application.getCity());
+                clinic.setAddress(application.getAddress());
+                clinicRepository.save(clinic);
+            }
 
             return ResponseEntity.ok(new VetClinicApplicationDTO(saved));
Index: petify-backend/src/main/java/com/petify/petify/api/AuthController.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/api/AuthController.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/api/AuthController.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -2,6 +2,4 @@
 
 import com.petify.petify.dto.AuthResponse;
-import com.petify.petify.dto.ChangePasswordRequest;
-import com.petify.petify.dto.ForgotPasswordRequest;
 import com.petify.petify.dto.LoginRequest;
 import com.petify.petify.dto.SignUpRequest;
@@ -49,26 +47,4 @@
     }
 
-    @PostMapping("/change-password")
-    public ResponseEntity<?> changePassword(@RequestBody ChangePasswordRequest request) {
-        try {
-            authService.changePassword(request.getUserId(), request.getCurrentPassword(), request.getNewPassword());
-            return ResponseEntity.ok(Map.of("message", "Password changed successfully"));
-        } catch (RuntimeException e) {
-            return ResponseEntity.badRequest()
-                    .body(Map.of("message", e.getMessage()));
-        }
-    }
-
-    @PostMapping("/forgot-password")
-    public ResponseEntity<?> forgotPassword(@RequestBody ForgotPasswordRequest request) {
-        try {
-            authService.sendForgotPasswordEmail(request.getIdentifier());
-            return ResponseEntity.ok(Map.of("message", "If an account matches that username or email, a temporary password has been sent."));
-        } catch (RuntimeException e) {
-            return ResponseEntity.badRequest()
-                    .body(Map.of("message", e.getMessage()));
-        }
-    }
-
 
     @GetMapping("/users")
Index: tify-backend/src/main/java/com/petify/petify/api/ClinicApplicationsController.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/api/ClinicApplicationsController.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,70 +1,0 @@
-package com.petify.petify.api;
-
-import com.petify.petify.domain.VetClinicApplication;
-import com.petify.petify.dto.CreateClinicApplicationRequest;
-import com.petify.petify.dto.VetClinicApplicationDTO;
-import com.petify.petify.repo.VetClinicApplicationRepository;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.time.LocalDateTime;
-import java.util.Map;
-
-@RestController
-@RequestMapping("/api/clinic-applications")
-public class ClinicApplicationsController {
-
-    private final VetClinicApplicationRepository applicationRepository;
-
-    public ClinicApplicationsController(VetClinicApplicationRepository applicationRepository) {
-        this.applicationRepository = applicationRepository;
-    }
-
-    @PostMapping
-    public ResponseEntity<?> submitApplication(@RequestBody CreateClinicApplicationRequest request) {
-        try {
-            validate(request);
-
-            VetClinicApplication application = new VetClinicApplication();
-            application.setName(request.getName().trim());
-            application.setEmail(blankToNull(request.getEmail()));
-            application.setPhone(blankToNull(request.getPhone()));
-            application.setCity(request.getCity().trim());
-            application.setAddress(request.getAddress().trim());
-            application.setSubmittedAt(LocalDateTime.now());
-            application.setStatus("PENDING");
-            application.setReviewedAt(null);
-            application.setReviewedBy(null);
-            application.setDenialReason(null);
-
-            return ResponseEntity.status(HttpStatus.CREATED)
-                .body(new VetClinicApplicationDTO(applicationRepository.save(application)));
-        } catch (RuntimeException e) {
-            return ResponseEntity.badRequest().body(Map.of("error", e.getMessage()));
-        }
-    }
-
-    private void validate(CreateClinicApplicationRequest request) {
-        if (request == null) {
-            throw new RuntimeException("Application details are required");
-        }
-        if (request.getName() == null || request.getName().isBlank()) {
-            throw new RuntimeException("Clinic name is required");
-        }
-        if (request.getCity() == null || request.getCity().isBlank()) {
-            throw new RuntimeException("City is required");
-        }
-        if (request.getAddress() == null || request.getAddress().isBlank()) {
-            throw new RuntimeException("Address is required");
-        }
-        if ((request.getEmail() == null || request.getEmail().isBlank())
-            && (request.getPhone() == null || request.getPhone().isBlank())) {
-            throw new RuntimeException("Email or phone is required");
-        }
-    }
-
-    private String blankToNull(String value) {
-        return value == null || value.isBlank() ? null : value.trim();
-    }
-}
Index: petify-backend/src/main/java/com/petify/petify/api/VetClinicsController.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/api/VetClinicsController.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/api/VetClinicsController.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -2,19 +2,12 @@
 
 import com.petify.petify.domain.VetClinic;
-import com.petify.petify.dto.UpdateClinicScheduleRequest;
 import com.petify.petify.dto.VetClinicDTO;
 import com.petify.petify.repo.VetClinicRepository;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.time.LocalTime;
-import java.time.format.DateTimeParseException;
-import java.util.Arrays;
-import java.util.Set;
 import java.util.List;
 import java.util.Map;
@@ -24,8 +17,4 @@
 @RequestMapping("/api/clinics")
 public class VetClinicsController {
-
-    private static final Set<String> ALLOWED_WORK_DAYS = Set.of(
-        "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"
-    );
 
     private final VetClinicRepository vetClinicRepository;
@@ -51,34 +40,4 @@
     }
 
-    @PutMapping("/my/schedule")
-    public ResponseEntity<?> updateMyClinicSchedule(
-        @RequestHeader("X-User-Id") Long userId,
-        @RequestBody UpdateClinicScheduleRequest request) {
-        try {
-            VetClinic clinic = vetClinicRepository.findByUserId(userId)
-                .orElseThrow(() -> new RuntimeException("User is not linked to a clinic"));
-
-            String workDays = normalizeWorkDays(request.getWorkDays());
-            LocalTime startTime = parseTime(request.getStartTime(), "Start time");
-            LocalTime endTime = parseTime(request.getEndTime(), "End time");
-
-            if (!startTime.isBefore(endTime)) {
-                throw new RuntimeException("Start time must be before end time");
-            }
-
-            if (java.time.Duration.between(startTime, endTime).toMinutes() < 30) {
-                throw new RuntimeException("Clinic schedule must contain at least one 30-minute slot");
-            }
-
-            clinic.setWorkDays(workDays);
-            clinic.setStartTime(startTime);
-            clinic.setEndTime(endTime);
-
-            return ResponseEntity.ok(mapToDTO(vetClinicRepository.save(clinic)));
-        } catch (RuntimeException e) {
-            return ResponseEntity.badRequest().body(Map.of("error", e.getMessage()));
-        }
-    }
-
     private VetClinicDTO mapToDTO(VetClinic clinic) {
         return new VetClinicDTO(
@@ -86,46 +45,6 @@
             clinic.getName(),
             clinic.getCity(),
-            clinic.getAddress(),
-            clinic.getWorkDays(),
-            clinic.getStartTime() != null ? clinic.getStartTime().toString() : null,
-            clinic.getEndTime() != null ? clinic.getEndTime().toString() : null
+            clinic.getAddress()
         );
-    }
-
-    private String normalizeWorkDays(String workDays) {
-        if (workDays == null || workDays.isBlank()) {
-            throw new RuntimeException("Choose at least one working day");
-        }
-
-        List<String> normalized = Arrays.stream(workDays.split(","))
-            .map(String::trim)
-            .filter(day -> !day.isBlank())
-            .map(String::toUpperCase)
-            .distinct()
-            .toList();
-
-        if (normalized.isEmpty()) {
-            throw new RuntimeException("Choose at least one working day");
-        }
-
-        for (String day : normalized) {
-            if (!ALLOWED_WORK_DAYS.contains(day)) {
-                throw new RuntimeException("Invalid working day: " + day);
-            }
-        }
-
-        return String.join(",", normalized);
-    }
-
-    private LocalTime parseTime(String value, String label) {
-        if (value == null || value.isBlank()) {
-            throw new RuntimeException(label + " is required");
-        }
-
-        try {
-            return LocalTime.parse(value);
-        } catch (DateTimeParseException e) {
-            throw new RuntimeException(label + " must be in HH:mm format");
-        }
     }
 }
Index: petify-backend/src/main/java/com/petify/petify/config/SecurityConfig.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/config/SecurityConfig.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/config/SecurityConfig.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -96,5 +96,4 @@
                         .requestMatchers(HttpMethod.GET, "/api/clinics").permitAll()
                         .requestMatchers(HttpMethod.GET, "/api/clinics/my").permitAll()
-                        .requestMatchers(HttpMethod.PUT, "/api/clinics/my/schedule").permitAll()
                         .requestMatchers(HttpMethod.GET, "/api/notifications/my").permitAll()
 
@@ -112,5 +111,4 @@
                         .requestMatchers(HttpMethod.GET,"/api/users/admin/listings").permitAll()
                         .requestMatchers(HttpMethod.GET, "/api/admin/clinic-applications").permitAll()
-                        .requestMatchers(HttpMethod.POST, "/api/clinic-applications").permitAll()
                         .requestMatchers(HttpMethod.PATCH, "/api/admin/clinic-applications/*/approve").permitAll()
                         .requestMatchers(HttpMethod.PATCH, "/api/admin/clinic-applications/*/deny").permitAll()
Index: petify-backend/src/main/java/com/petify/petify/domain/UserReview.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/domain/UserReview.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/domain/UserReview.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -19,13 +19,9 @@
     private Long targetUserId;
 
-    @Column(name = "interaction_type", nullable = false, length = 40)
-    private String interactionType;
-
     public UserReview() {}
 
-    public UserReview(Review review, Long targetUserId, String interactionType) {
+    public UserReview(Review review, Long targetUserId) {
         this.review = review;        // DO NOT set reviewId
         this.targetUserId = targetUserId;
-        this.interactionType = interactionType;
     }
 
@@ -55,12 +51,4 @@
         this.targetUserId = targetUserId;
     }
-
-    public String getInteractionType() {
-        return interactionType;
-    }
-
-    public void setInteractionType(String interactionType) {
-        this.interactionType = interactionType;
-    }
 }
 
Index: petify-backend/src/main/java/com/petify/petify/domain/VetClinic.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/domain/VetClinic.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/domain/VetClinic.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -4,6 +4,4 @@
 import lombok.Getter;
 import lombok.Setter;
-
-import java.time.LocalTime;
 
 @Setter
@@ -39,13 +37,4 @@
     private String address;
 
-    @Column(name = "work_days")
-    private String workDays;
-
-    @Column(name = "start_time")
-    private LocalTime startTime;
-
-    @Column(name = "end_time")
-    private LocalTime endTime;
-
     public VetClinic() {}
 
Index: tify-backend/src/main/java/com/petify/petify/dto/ChangePasswordRequest.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/dto/ChangePasswordRequest.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,21 +1,0 @@
-package com.petify.petify.dto;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class ChangePasswordRequest {
-    private Long userId;
-    private String currentPassword;
-    private String newPassword;
-
-    public ChangePasswordRequest() {
-    }
-
-    public ChangePasswordRequest(Long userId, String currentPassword, String newPassword) {
-        this.userId = userId;
-        this.currentPassword = currentPassword;
-        this.newPassword = newPassword;
-    }
-}
Index: tify-backend/src/main/java/com/petify/petify/dto/CreateClinicApplicationRequest.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/dto/CreateClinicApplicationRequest.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,49 +1,0 @@
-package com.petify.petify.dto;
-
-public class CreateClinicApplicationRequest {
-    private String name;
-    private String email;
-    private String phone;
-    private String city;
-    private String address;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    public String getCity() {
-        return city;
-    }
-
-    public void setCity(String city) {
-        this.city = city;
-    }
-
-    public String getAddress() {
-        return address;
-    }
-
-    public void setAddress(String address) {
-        this.address = address;
-    }
-}
Index: petify-backend/src/main/java/com/petify/petify/dto/CreateReviewRequest.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/dto/CreateReviewRequest.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/dto/CreateReviewRequest.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -9,5 +9,4 @@
     private Integer rating;
     private String comment;
-    private String interactionType;
 
     public CreateReviewRequest() {
@@ -19,9 +18,3 @@
     }
 
-    public CreateReviewRequest(Integer rating, String comment, String interactionType) {
-        this.rating = rating;
-        this.comment = comment;
-        this.interactionType = interactionType;
-    }
-
 }
Index: tify-backend/src/main/java/com/petify/petify/dto/ForgotPasswordRequest.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/dto/ForgotPasswordRequest.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package com.petify.petify.dto;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class ForgotPasswordRequest {
-    private String identifier;
-
-    public ForgotPasswordRequest() {
-    }
-
-    public ForgotPasswordRequest(String identifier) {
-        this.identifier = identifier;
-    }
-}
Index: tify-backend/src/main/java/com/petify/petify/dto/UpdateClinicScheduleRequest.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/dto/UpdateClinicScheduleRequest.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package com.petify.petify.dto;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class UpdateClinicScheduleRequest {
-    private String workDays;
-    private String startTime;
-    private String endTime;
-}
Index: petify-backend/src/main/java/com/petify/petify/dto/VetClinicDTO.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/dto/VetClinicDTO.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/dto/VetClinicDTO.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -11,8 +11,4 @@
     private String city;
     private String address;
-    private String workDays;
-    private String startTime;
-    private String endTime;
-    private Boolean scheduleComplete;
 
     public VetClinicDTO() {
@@ -26,23 +22,4 @@
     }
 
-    public VetClinicDTO(
-        Long clinicId,
-        String name,
-        String city,
-        String address,
-        String workDays,
-        String startTime,
-        String endTime
-    ) {
-        this.clinicId = clinicId;
-        this.name = name;
-        this.city = city;
-        this.address = address;
-        this.workDays = workDays;
-        this.startTime = startTime;
-        this.endTime = endTime;
-        this.scheduleComplete = workDays != null && !workDays.isBlank() && startTime != null && endTime != null;
-    }
-
 }
 
Index: petify-backend/src/main/java/com/petify/petify/repo/VetClinicRepository.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/repo/VetClinicRepository.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/repo/VetClinicRepository.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -10,5 +10,4 @@
 public interface VetClinicRepository extends JpaRepository<VetClinic, Long> {
     java.util.List<VetClinic> findAllByOrderByNameAsc();
-    Optional<VetClinic> findByApplicationId(Long applicationId);
     Optional<VetClinic> findByUserId(Long userId);
     boolean existsByUserId(Long userId);
Index: petify-backend/src/main/java/com/petify/petify/service/AppointmentService.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/service/AppointmentService.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/service/AppointmentService.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -31,5 +31,4 @@
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
@@ -39,4 +38,6 @@
 
     private static final Logger logger = LoggerFactory.getLogger(AppointmentService.class);
+    private static final LocalTime CLINIC_DAY_START = LocalTime.of(9, 0);
+    private static final LocalTime CLINIC_DAY_END = LocalTime.of(17, 0);
     private static final int SLOT_MINUTES = 30;
     private static final List<String> NON_BLOCKING_STATUSES = List.of("CANCELLED", "CANCELED", "NO_SHOW");
@@ -83,9 +84,10 @@
         }
 
-        VetClinic clinic = vetClinicRepository.findById(request.getClinicId())
-            .orElseThrow(() -> new RuntimeException("Vet clinic not found"));
+        if (!vetClinicRepository.existsById(request.getClinicId())) {
+            throw new RuntimeException("Vet clinic not found");
+        }
 
         LocalDateTime appointmentTime = LocalDateTime.parse(request.getDateTime());
-        if (!isClinicSlotAvailable(clinic, appointmentTime)) {
+        if (!isClinicSlotAvailable(request.getClinicId(), appointmentTime)) {
             throw new RuntimeException("Selected appointment slot is no longer available");
         }
@@ -208,14 +210,10 @@
         }
 
-        VetClinic clinic = vetClinicRepository.findById(clinicId)
-            .orElseThrow(() -> new RuntimeException("Vet clinic not found"));
-        requireCompleteSchedule(clinic);
-
-        if (!isWorkingDay(clinic, date)) {
-            return List.of();
-        }
-
-        LocalDateTime dayStart = date.atTime(clinic.getStartTime());
-        LocalDateTime dayEnd = date.atTime(clinic.getEndTime());
+        if (!vetClinicRepository.existsById(clinicId)) {
+            throw new RuntimeException("Vet clinic not found");
+        }
+
+        LocalDateTime dayStart = date.atTime(CLINIC_DAY_START);
+        LocalDateTime dayEnd = date.atTime(CLINIC_DAY_END);
         Set<LocalDateTime> bookedSlots = appointmentRepository
             .findByClinicIdAndDateTimeBetweenAndStatusNotInOrderByDateTimeAsc(
@@ -259,14 +257,10 @@
         }
 
-        VetClinic clinic = vetClinicRepository.findById(clinicId)
-            .orElseThrow(() -> new RuntimeException("Vet clinic not found"));
-        requireCompleteSchedule(clinic);
-
-        if (!isWorkingDay(clinic, date)) {
-            return List.of();
-        }
-
-        LocalDateTime dayStart = date.atTime(clinic.getStartTime());
-        LocalDateTime dayEnd = date.atTime(clinic.getEndTime());
+        if (!vetClinicRepository.existsById(clinicId)) {
+            throw new RuntimeException("Vet clinic not found");
+        }
+
+        LocalDateTime dayStart = date.atTime(CLINIC_DAY_START);
+        LocalDateTime dayEnd = date.atTime(CLINIC_DAY_END);
 
         return unavailableSlotRepository
@@ -288,10 +282,11 @@
         }
 
-        VetClinic clinic = vetClinicRepository.findById(clinicId)
-            .orElseThrow(() -> new RuntimeException("Vet clinic not found"));
+        if (!vetClinicRepository.existsById(clinicId)) {
+            throw new RuntimeException("Vet clinic not found");
+        }
 
         LocalDateTime slotTime = LocalDateTime.parse(request.getDateTime());
-        if (!isValidWorkingSlot(clinic, slotTime)) {
-            throw new RuntimeException("Unavailable slot must be a future 30-minute slot inside your clinic working schedule");
+        if (!isValidWorkingSlot(slotTime)) {
+            throw new RuntimeException("Unavailable slot must be a future 30-minute slot between 09:00 and 17:00");
         }
 
@@ -337,49 +332,24 @@
     }
 
-    private boolean isClinicSlotAvailable(VetClinic clinic, LocalDateTime appointmentTime) {
-        if (!isValidWorkingSlot(clinic, appointmentTime)) {
+    private boolean isClinicSlotAvailable(Long clinicId, LocalDateTime appointmentTime) {
+        if (!isValidWorkingSlot(appointmentTime)) {
             return false;
         }
 
         return !appointmentRepository.existsByClinicIdAndDateTimeAndStatusNotIn(
-            clinic.getClinicId(),
+            clinicId,
             appointmentTime,
             NON_BLOCKING_STATUSES
-        ) && !unavailableSlotRepository.existsByClinicIdAndDateTime(clinic.getClinicId(), appointmentTime);
-    }
-
-    private boolean isValidWorkingSlot(VetClinic clinic, LocalDateTime appointmentTime) {
-        requireCompleteSchedule(clinic);
+        ) && !unavailableSlotRepository.existsByClinicIdAndDateTime(clinicId, appointmentTime);
+    }
+
+    private boolean isValidWorkingSlot(LocalDateTime appointmentTime) {
         LocalTime time = appointmentTime.toLocalTime();
-        long minutesFromStart = java.time.Duration.between(clinic.getStartTime(), time).toMinutes();
-
-        return isWorkingDay(clinic, appointmentTime.toLocalDate())
-            && !appointmentTime.isBefore(LocalDateTime.now())
-            && !time.isBefore(clinic.getStartTime())
-            && time.isBefore(clinic.getEndTime())
-            && minutesFromStart >= 0
-            && minutesFromStart % SLOT_MINUTES == 0
+        return !appointmentTime.isBefore(LocalDateTime.now())
+            && !time.isBefore(CLINIC_DAY_START)
+            && time.isBefore(CLINIC_DAY_END)
+            && appointmentTime.getMinute() % SLOT_MINUTES == 0
             && appointmentTime.getSecond() == 0
             && appointmentTime.getNano() == 0;
-    }
-
-    private void requireCompleteSchedule(VetClinic clinic) {
-        if (clinic.getWorkDays() == null || clinic.getWorkDays().isBlank()
-            || clinic.getStartTime() == null
-            || clinic.getEndTime() == null) {
-            throw new RuntimeException("This clinic has not added working days and hours yet");
-        }
-
-        if (!clinic.getStartTime().isBefore(clinic.getEndTime())) {
-            throw new RuntimeException("Clinic working hours are invalid");
-        }
-    }
-
-    private boolean isWorkingDay(VetClinic clinic, LocalDate date) {
-        String day = date.getDayOfWeek().name();
-        return Arrays.stream(clinic.getWorkDays().split(","))
-            .map(String::trim)
-            .map(String::toUpperCase)
-            .anyMatch(day::equals);
     }
 
Index: petify-backend/src/main/java/com/petify/petify/service/AuthService.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/service/AuthService.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/service/AuthService.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -22,5 +22,4 @@
 import org.springframework.transaction.annotation.Transactional;
 
-import java.security.SecureRandom;
 import java.time.LocalDateTime;
 import java.util.List;
@@ -32,6 +31,4 @@
 
     private static final Logger logger = LoggerFactory.getLogger(AuthService.class);
-    private static final String PASSWORD_CHARS = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789!@#$%";
-    private static final SecureRandom SECURE_RANDOM = new SecureRandom();
 
     private final UserRepository userRepository;
@@ -42,11 +39,9 @@
     private final AnalyticsRepository analyticsRepository;
     private final VetClinicRepository vetClinicRepository;
-    private final ClinicCredentialsEmailService credentialsEmailService;
 
     public AuthService(UserRepository userRepository, ClientRepository clientRepository,
                       OwnerRepository ownerRepository, AdminRepository adminRepository,
                       PasswordEncoder passwordEncoder, AnalyticsRepository analyticsRepository,
-                      VetClinicRepository vetClinicRepository,
-                      ClinicCredentialsEmailService credentialsEmailService) {
+                      VetClinicRepository vetClinicRepository) {
         this.userRepository = userRepository;
         this.clientRepository = clientRepository;
@@ -56,5 +51,4 @@
         this.analyticsRepository = analyticsRepository;
         this.vetClinicRepository = vetClinicRepository;
-        this.credentialsEmailService = credentialsEmailService;
     }
 
@@ -183,69 +177,4 @@
             isVerified
         );
-    }
-
-    @Transactional
-    public void changePassword(Long userId, String currentPassword, String newPassword) {
-        if (userId == null) {
-            throw new RuntimeException("User is required");
-        }
-        if (currentPassword == null || currentPassword.isBlank()) {
-            throw new RuntimeException("Current password is required");
-        }
-        if (newPassword == null || newPassword.isBlank()) {
-            throw new RuntimeException("New password is required");
-        }
-        if (newPassword.length() < 8) {
-            throw new RuntimeException("New password must be at least 8 characters long");
-        }
-        if (newPassword.equals(currentPassword)) {
-            throw new RuntimeException("New password must be different from the current password");
-        }
-
-        User user = userRepository.findById(userId)
-            .orElseThrow(() -> new RuntimeException("User not found"));
-
-        boolean passwordMatches = passwordEncoder.matches(currentPassword, user.getPassword());
-        if (!passwordMatches && !currentPassword.equals(user.getPassword())) {
-            throw new RuntimeException("Current password is incorrect");
-        }
-
-        user.setPassword(passwordEncoder.encode(newPassword));
-        userRepository.save(user);
-        logger.info("Password changed successfully for user: {}", user.getUsername());
-    }
-
-    @Transactional
-    public void sendForgotPasswordEmail(String identifier) {
-        if (identifier == null || identifier.isBlank()) {
-            throw new RuntimeException("Username or email is required");
-        }
-
-        Optional<User> user = userRepository.findByUsernameOrEmail(identifier.trim(), identifier.trim());
-        if (user.isEmpty()) {
-            logger.info("Password reset requested for unknown identifier: {}", identifier);
-            return;
-        }
-
-        User foundUser = user.get();
-        String temporaryPassword = generateTemporaryPassword();
-        foundUser.setPassword(passwordEncoder.encode(temporaryPassword));
-        userRepository.save(foundUser);
-
-        credentialsEmailService.sendTemporaryPassword(
-            foundUser.getEmail(),
-            foundUser.getFirstName(),
-            foundUser.getUsername(),
-            temporaryPassword
-        );
-        logger.info("Temporary password sent for user: {}", foundUser.getUsername());
-    }
-
-    private String generateTemporaryPassword() {
-        StringBuilder password = new StringBuilder();
-        for (int i = 0; i < 14; i++) {
-            password.append(PASSWORD_CHARS.charAt(SECURE_RANDOM.nextInt(PASSWORD_CHARS.length())));
-        }
-        return password.toString();
     }
 
Index: tify-backend/src/main/java/com/petify/petify/service/ClinicApprovalService.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/service/ClinicApprovalService.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,126 +1,0 @@
-package com.petify.petify.service;
-
-import com.petify.petify.domain.User;
-import com.petify.petify.domain.VetClinic;
-import com.petify.petify.domain.VetClinicApplication;
-import com.petify.petify.repo.UserRepository;
-import com.petify.petify.repo.VetClinicApplicationRepository;
-import com.petify.petify.repo.VetClinicRepository;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-
-import java.security.SecureRandom;
-import java.time.LocalDateTime;
-import java.util.Locale;
-
-@Service
-public class ClinicApprovalService {
-
-    private static final int MAX_USERNAME_LENGTH = 30;
-    private static final String PASSWORD_CHARS = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789!@#$%";
-    private static final SecureRandom SECURE_RANDOM = new SecureRandom();
-
-    private final VetClinicApplicationRepository applicationRepository;
-    private final VetClinicRepository clinicRepository;
-    private final UserRepository userRepository;
-    private final PasswordEncoder passwordEncoder;
-    private final ClinicCredentialsEmailService credentialsEmailService;
-
-    public ClinicApprovalService(VetClinicApplicationRepository applicationRepository,
-                                 VetClinicRepository clinicRepository,
-                                 UserRepository userRepository,
-                                 PasswordEncoder passwordEncoder,
-                                 ClinicCredentialsEmailService credentialsEmailService) {
-        this.applicationRepository = applicationRepository;
-        this.clinicRepository = clinicRepository;
-        this.userRepository = userRepository;
-        this.passwordEncoder = passwordEncoder;
-        this.credentialsEmailService = credentialsEmailService;
-    }
-
-    @Transactional
-    public VetClinicApplication approveApplication(Long applicationId, Long adminUserId) {
-        VetClinicApplication application = applicationRepository.findById(applicationId)
-            .orElseThrow(() -> new RuntimeException("Application not found"));
-
-        application.setStatus("APPROVED");
-        application.setReviewedAt(LocalDateTime.now());
-        application.setReviewedBy(adminUserId);
-        application.setDenialReason(null);
-        VetClinicApplication savedApplication = applicationRepository.save(application);
-
-        VetClinic clinic = clinicRepository.findByApplicationId(applicationId)
-            .orElseGet(() -> createClinic(application));
-
-        if (clinic.getUserId() == null) {
-            if (!StringUtils.hasText(application.getEmail())) {
-                throw new IllegalArgumentException("Clinic email is required to create and send account credentials");
-            }
-            if (userRepository.findByEmail(application.getEmail()).isPresent()) {
-                throw new IllegalArgumentException("A user with this clinic email already exists");
-            }
-
-            String username = generateUniqueUsername(application.getName());
-            String password = generatePassword();
-            User user = new User(
-                username,
-                application.getEmail(),
-                passwordEncoder.encode(password),
-                truncate(application.getName(), 60),
-                "Clinic"
-            );
-
-            User savedUser = userRepository.save(user);
-            clinic.setUserId(savedUser.getUserId());
-            clinicRepository.save(clinic);
-
-            credentialsEmailService.sendCredentials(application.getEmail(), application.getName(), username, password);
-        }
-
-        return savedApplication;
-    }
-
-    private VetClinic createClinic(VetClinicApplication application) {
-        VetClinic clinic = new VetClinic();
-        clinic.setApplicationId(application.getApplicationId());
-        clinic.setName(application.getName());
-        clinic.setEmail(application.getEmail());
-        clinic.setPhone(application.getPhone());
-        clinic.setCity(application.getCity());
-        clinic.setAddress(application.getAddress());
-        return clinicRepository.save(clinic);
-    }
-
-    private String generateUniqueUsername(String clinicName) {
-        String base = "clinic." + clinicName.toLowerCase(Locale.ROOT).replaceAll("[^a-z0-9]+", "");
-        if (base.equals("clinic.")) {
-            base = "clinic.account";
-        }
-        base = truncate(base, MAX_USERNAME_LENGTH);
-
-        String username = base;
-        int suffix = 2;
-        while (userRepository.findByUsername(username).isPresent()) {
-            String suffixText = String.valueOf(suffix++);
-            username = truncate(base, MAX_USERNAME_LENGTH - suffixText.length()) + suffixText;
-        }
-        return username;
-    }
-
-    private String generatePassword() {
-        StringBuilder password = new StringBuilder();
-        for (int i = 0; i < 14; i++) {
-            password.append(PASSWORD_CHARS.charAt(SECURE_RANDOM.nextInt(PASSWORD_CHARS.length())));
-        }
-        return password.toString();
-    }
-
-    private String truncate(String value, int maxLength) {
-        if (value == null || value.length() <= maxLength) {
-            return value;
-        }
-        return value.substring(0, maxLength);
-    }
-}
Index: tify-backend/src/main/java/com/petify/petify/service/ClinicCredentialsEmailService.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/service/ClinicCredentialsEmailService.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,94 +1,0 @@
-package com.petify.petify.service;
-
-import org.springframework.beans.factory.ObjectProvider;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.mail.SimpleMailMessage;
-import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-
-@Service
-public class ClinicCredentialsEmailService {
-
-    private final ObjectProvider<JavaMailSender> mailSenderProvider;
-    private final String fromAddress;
-    private final String mailPassword;
-
-    public ClinicCredentialsEmailService(ObjectProvider<JavaMailSender> mailSenderProvider,
-                                         @Value("${spring.mail.username:}") String fromAddress,
-                                         @Value("${spring.mail.password:}") String mailPassword) {
-        this.mailSenderProvider = mailSenderProvider;
-        this.fromAddress = fromAddress;
-        this.mailPassword = mailPassword;
-    }
-
-    public void sendCredentials(String recipientEmail, String clinicName, String username, String password) {
-        if (!StringUtils.hasText(recipientEmail)) {
-            throw new IllegalArgumentException("Clinic email is required to send account credentials");
-        }
-
-        JavaMailSender mailSender = getConfiguredMailSender();
-
-        SimpleMailMessage message = new SimpleMailMessage();
-        message.setFrom(fromAddress);
-        message.setTo(recipientEmail);
-        message.setSubject("Your Petify clinic account has been approved");
-        message.setText("""
-                Hello %s,
-
-                Your clinic application has been approved.
-
-                You can now sign in to Petify with these credentials:
-                Username: %s
-                Password: %s
-
-                Please change this password after your first login.
-
-                Petify Team
-                """.formatted(clinicName, username, password));
-
-        mailSender.send(message);
-    }
-
-    public void sendTemporaryPassword(String recipientEmail, String firstName, String username, String temporaryPassword) {
-        if (!StringUtils.hasText(recipientEmail)) {
-            throw new IllegalArgumentException("User email is required to send password reset credentials");
-        }
-
-        JavaMailSender mailSender = getConfiguredMailSender();
-
-        SimpleMailMessage message = new SimpleMailMessage();
-        message.setFrom(fromAddress);
-        message.setTo(recipientEmail);
-        message.setSubject("Your Petify password reset");
-        message.setText("""
-                Hello %s,
-
-                We received a request to reset your Petify password.
-
-                You can sign in with these temporary credentials:
-                Username: %s
-                Temporary password: %s
-
-                After signing in, open your profile's Account tab and choose a new password.
-
-                If you did not request this reset, please change your password right away.
-
-                Petify Team
-                """.formatted(firstName, username, temporaryPassword));
-
-        mailSender.send(message);
-    }
-
-    private JavaMailSender getConfiguredMailSender() {
-        if (!StringUtils.hasText(fromAddress) || !StringUtils.hasText(mailPassword)) {
-            throw new IllegalStateException("Mail username and password are not configured. Set MAIL_USERNAME and MAIL_PASSWORD before sending account emails.");
-        }
-
-        JavaMailSender mailSender = mailSenderProvider.getIfAvailable();
-        if (mailSender == null) {
-            throw new IllegalStateException("Mail sender is not configured. Set spring.mail.* properties before sending account emails.");
-        }
-        return mailSender;
-    }
-}
Index: petify-backend/src/main/java/com/petify/petify/service/ReviewService.java
===================================================================
--- petify-backend/src/main/java/com/petify/petify/service/ReviewService.java	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/java/com/petify/petify/service/ReviewService.java	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -19,5 +19,4 @@
 
 import java.time.LocalDateTime;
-import java.util.Set;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -27,11 +26,4 @@
 
     private static final Logger logger = LoggerFactory.getLogger(ReviewService.class);
-    private static final Set<String> USER_REVIEW_INTERACTION_TYPES = Set.of(
-            "EVENT",
-            "PERSONAL_INTERACTION",
-            "ONLINE",
-            "PHONE_CALL",
-            "OTHER"
-    );
 
     private final ReviewRepository reviewRepository;
@@ -66,6 +58,9 @@
     public ReviewDTO createReview(Long reviewerId, Long targetUserId, CreateReviewRequest request) {
         logger.info("==== START createReview ====");
-        validateReviewRequest(request);
-        String interactionType = normalizeUserReviewInteractionType(request.getInteractionType());
+        // Validate rating
+        if (request.getRating() == null || request.getRating() < 1 || request.getRating() > 5) {
+            logger.error(" VALIDATION FAILED: Invalid rating: {}", request.getRating());
+            throw new RuntimeException("Rating must be between 1 and 5");
+        }
 
 
@@ -123,5 +118,4 @@
 
         userReview.setTargetUserId(targetUserId);
-        userReview.setInteractionType(interactionType);
 
         // Save UserReview to database with flush
@@ -291,17 +285,4 @@
     }
 
-    private String normalizeUserReviewInteractionType(String interactionType) {
-        if (interactionType == null || interactionType.isBlank()) {
-            throw new RuntimeException("Please choose how you interacted with this user");
-        }
-
-        String normalized = interactionType.trim().toUpperCase();
-        if (!USER_REVIEW_INTERACTION_TYPES.contains(normalized)) {
-            throw new RuntimeException("Interaction type must be one of: EVENT, PERSONAL_INTERACTION, ONLINE, PHONE_CALL, OTHER");
-        }
-
-        return normalized;
-    }
-
     private User getReviewer(Long reviewerId) {
         return userRepository.findById(reviewerId)
Index: petify-backend/src/main/resources/application.properties
===================================================================
--- petify-backend/src/main/resources/application.properties	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-backend/src/main/resources/application.properties	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -33,16 +33,6 @@
 spring.flyway.baseline-version=0
 
-# Mail
-spring.mail.host=${MAIL_HOST:smtp.gmail.com}
-spring.mail.port=${MAIL_PORT:587}
-spring.mail.username=${MAIL_USERNAME:}
-spring.mail.password=${MAIL_PASSWORD:}
-spring.mail.properties.mail.smtp.auth=true
-spring.mail.properties.mail.smtp.starttls.enable=true
-spring.mail.properties.mail.smtp.starttls.required=true
-management.health.mail.enabled=false
-
 spring.profiles.active=local
-spring.config.import=optional:file:.env.properties,optional:file:petify-backend/.env.properties
+spring.config.import=optional:file:.env.properties
 
 
Index: tify-backend/src/main/resources/db/migration/V11__Add_user_review_interaction_type.sql
===================================================================
--- petify-backend/src/main/resources/db/migration/V11__Add_user_review_interaction_type.sql	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,17 +1,0 @@
-ALTER TABLE user_reviews
-    ADD COLUMN IF NOT EXISTS interaction_type VARCHAR(40);
-
-UPDATE user_reviews
-SET interaction_type = 'OTHER'
-WHERE interaction_type IS NULL;
-
-ALTER TABLE user_reviews
-    ALTER COLUMN interaction_type SET NOT NULL;
-
-ALTER TABLE user_reviews
-    DROP CONSTRAINT IF EXISTS user_reviews_interaction_type_CHK;
-
-ALTER TABLE user_reviews
-    ADD CONSTRAINT user_reviews_interaction_type_CHK CHECK (
-        interaction_type IN ('EVENT', 'PERSONAL_INTERACTION', 'ONLINE', 'PHONE_CALL', 'OTHER')
-    );
Index: tify-backend/src/main/resources/db/migration/V12__Add_clinic_work_schedule.sql
===================================================================
--- petify-backend/src/main/resources/db/migration/V12__Add_clinic_work_schedule.sql	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,8 +1,0 @@
-ALTER TABLE vet_clinics
-    ADD COLUMN IF NOT EXISTS work_days VARCHAR(120);
-
-ALTER TABLE vet_clinics
-    ADD COLUMN IF NOT EXISTS start_time TIME;
-
-ALTER TABLE vet_clinics
-    ADD COLUMN IF NOT EXISTS end_time TIME;
Index: petify-frontend/src/api/auth.ts
===================================================================
--- petify-frontend/src/api/auth.ts	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/api/auth.ts	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -24,14 +24,4 @@
   }
   message?: string
-}
-
-export interface ChangePasswordRequest {
-  userId: number
-  currentPassword: string
-  newPassword: string
-}
-
-export interface ForgotPasswordRequest {
-  identifier: string
 }
 
@@ -151,11 +141,2 @@
   return { message: data.message || "Registration successful" }
 }
-
-export async function changePassword(payload: ChangePasswordRequest, options?: { signal?: AbortSignal }): Promise<void> {
-  await postJson<{ message?: string }>('/api/auth/change-password', payload, options)
-}
-
-export async function forgotPassword(payload: ForgotPasswordRequest, options?: { signal?: AbortSignal }): Promise<string> {
-  const data = await postJson<{ message?: string }>('/api/auth/forgot-password', payload, options)
-  return data.message || 'If an account matches that username or email, a temporary password has been sent.'
-}
Index: tify-frontend/src/api/clinicApplications.ts
===================================================================
--- petify-frontend/src/api/clinicApplications.ts	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,38 +1,0 @@
-function getBaseUrl(): string {
-  const base = (import.meta.env.VITE_API_BASE_URL as string | undefined) ?? ''
-  return base.replace(/\/$/, '')
-}
-
-function joinUrl(base: string, path: string): string {
-  if (!base) return path
-  return `${base}${path.startsWith('/') ? '' : '/'}${path}`
-}
-
-export type ClinicApplicationRequest = {
-  name: string
-  email: string
-  phone: string
-  city: string
-  address: string
-}
-
-export async function submitClinicApplication(payload: ClinicApplicationRequest): Promise<any> {
-  const url = joinUrl(getBaseUrl(), '/api/clinic-applications')
-  const res = await fetch(url, {
-    method: 'POST',
-    headers: {
-      'Content-Type': 'application/json',
-      Accept: 'application/json',
-    },
-    body: JSON.stringify(payload),
-  })
-
-  const contentType = res.headers.get('content-type') || ''
-  const data = contentType.includes('application/json') ? await res.json() : null
-
-  if (!res.ok) {
-    throw new Error(data?.error || `Failed to submit clinic application (${res.status})`)
-  }
-
-  return data
-}
Index: petify-frontend/src/api/profile.ts
===================================================================
--- petify-frontend/src/api/profile.ts	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/api/profile.ts	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -35,8 +35,4 @@
   city: string
   address: string
-  workDays?: string
-  startTime?: string
-  endTime?: string
-  scheduleComplete?: boolean
 }
 
@@ -468,30 +464,4 @@
 }
 
-export async function updateMyClinicSchedule(
-  userId: number,
-  data: {
-    workDays: string
-    startTime: string
-    endTime: string
-  }
-): Promise<VetClinic> {
-  const url = joinUrl(getBaseUrl(), `/api/clinics/my/schedule`)
-  const response = await fetch(url, {
-    method: 'PUT',
-    headers: {
-      'Content-Type': 'application/json',
-      'X-User-Id': String(userId),
-    },
-    body: JSON.stringify(data),
-  })
-
-  if (!response.ok) {
-    const error = await response.json()
-    throw new Error(error.error || `Failed to update clinic schedule: ${response.statusText}`)
-  }
-
-  return await response.json()
-}
-
 export async function getClinicAvailableSlots(clinicId: number, date: string): Promise<AppointmentSlot[]> {
   const url = joinUrl(getBaseUrl(), `/api/appointments/clinics/${clinicId}/available-slots?date=${encodeURIComponent(date)}`)
Index: petify-frontend/src/api/reviews.ts
===================================================================
--- petify-frontend/src/api/reviews.ts	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/api/reviews.ts	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -20,17 +20,9 @@
 }
 
-export type UserReviewInteractionType =
-  | 'EVENT'
-  | 'PERSONAL_INTERACTION'
-  | 'ONLINE'
-  | 'PHONE_CALL'
-  | 'OTHER'
-
 export async function createReview(
   targetUserId: number,
   userId: number,
   rating: number,
-  comment: string,
-  interactionType: UserReviewInteractionType
+  comment: string
 ): Promise<Review> {
   const url = joinUrl(getBaseUrl(), `/api/reviews/${targetUserId}`)
@@ -44,5 +36,4 @@
       rating,
       comment,
-      interactionType,
     }),
   })
Index: petify-frontend/src/components/TopNav.vue
===================================================================
--- petify-frontend/src/components/TopNav.vue	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/components/TopNav.vue	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -52,7 +52,4 @@
             </template>
             <template v-else>
-              <RouterLink class="btn btn-outline-secondary" to="/clinic-application">
-                Apply as clinic
-              </RouterLink>
               <RouterLink class="btn btn-login" to="/login">
                 Log in
Index: petify-frontend/src/router/index.ts
===================================================================
--- petify-frontend/src/router/index.ts	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/router/index.ts	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -10,5 +10,4 @@
 import AdminListingsView from '@/views/AdminListingsView.vue'
 import ClinicDashboardView from '@/views/ClinicDashboardView.vue'
-import ClinicApplicationView from '@/views/ClinicApplicationView.vue'
 
 const router = createRouter({
@@ -39,9 +38,4 @@
       name: 'clinic-dashboard',
       component: ClinicDashboardView,
-    },
-    {
-      path: '/clinic-application',
-      name: 'clinic-application',
-      component: ClinicApplicationView,
     },
     {
Index: tify-frontend/src/views/ClinicApplicationView.vue
===================================================================
--- petify-frontend/src/views/ClinicApplicationView.vue	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ 	(revision )
@@ -1,352 +1,0 @@
-<template>
-  <main class="application-page">
-    <section class="application-hero">
-      <div class="container hero-inner">
-        <div class="hero-copy">
-          <p class="eyebrow">Petify clinics</p>
-          <h1>Apply as a vet clinic</h1>
-          <p>
-            Send your clinic details to the Petify admins. Once approved, your clinic can manage appointments,
-            availability, cancellations, and client visit outcomes from the clinic dashboard.
-          </p>
-        </div>
-        <div class="review-note">
-          <span class="note-label">Admin review</span>
-          <strong>Applications start as pending</strong>
-          <p>Admins can approve or deny them from the Clinics tab.</p>
-        </div>
-      </div>
-    </section>
-
-    <section class="container application-body">
-      <div class="form-shell">
-        <div class="form-heading">
-          <h2>Clinic information</h2>
-          <p>Use details patients can recognize. Email or phone is required.</p>
-        </div>
-
-        <form class="application-form" @submit.prevent="submit">
-          <div class="form-grid">
-            <div class="form-group wide">
-              <label for="clinicName">Clinic name *</label>
-              <input
-                id="clinicName"
-                v-model.trim="form.name"
-                class="form-control"
-                type="text"
-                placeholder="Happy Paws Clinic"
-                required
-              />
-            </div>
-
-            <div class="form-group">
-              <label for="clinicEmail">Email</label>
-              <input
-                id="clinicEmail"
-                v-model.trim="form.email"
-                class="form-control"
-                type="email"
-                placeholder="clinic@example.com"
-              />
-            </div>
-
-            <div class="form-group">
-              <label for="clinicPhone">Phone</label>
-              <input
-                id="clinicPhone"
-                v-model.trim="form.phone"
-                class="form-control"
-                type="tel"
-                placeholder="+389 70 000 000"
-              />
-            </div>
-
-            <div class="form-group">
-              <label for="clinicCity">City *</label>
-              <input
-                id="clinicCity"
-                v-model.trim="form.city"
-                class="form-control"
-                type="text"
-                placeholder="Skopje"
-                required
-              />
-            </div>
-
-            <div class="form-group">
-              <label for="clinicAddress">Address *</label>
-              <input
-                id="clinicAddress"
-                v-model.trim="form.address"
-                class="form-control"
-                type="text"
-                placeholder="Partizanska 12"
-                required
-              />
-            </div>
-          </div>
-
-          <div v-if="errorMessage" class="alert alert-danger">
-            {{ errorMessage }}
-          </div>
-
-          <div v-if="successMessage" class="alert alert-success">
-            {{ successMessage }}
-          </div>
-
-          <div class="form-actions">
-            <button class="btn btn-primary" type="submit" :disabled="isSubmitting">
-              <span v-if="isSubmitting" class="spinner-border spinner-border-sm me-2"></span>
-              {{ isSubmitting ? 'Submitting...' : 'Submit application' }}
-            </button>
-            <button class="btn btn-outline-secondary" type="button" :disabled="isSubmitting" @click="resetForm">
-              Reset
-            </button>
-          </div>
-        </form>
-      </div>
-    </section>
-  </main>
-</template>
-
-<script setup lang="ts">
-import { ref } from 'vue'
-import { submitClinicApplication } from '../api/clinicApplications'
-
-const emptyForm = {
-  name: '',
-  email: '',
-  phone: '',
-  city: '',
-  address: '',
-}
-
-const form = ref({ ...emptyForm })
-const isSubmitting = ref(false)
-const errorMessage = ref('')
-const successMessage = ref('')
-
-function validateForm(): string {
-  if (!form.value.name.trim()) return 'Clinic name is required'
-  if (!form.value.city.trim()) return 'City is required'
-  if (!form.value.address.trim()) return 'Address is required'
-  if (!form.value.email.trim() && !form.value.phone.trim()) return 'Email or phone is required'
-  return ''
-}
-
-async function submit() {
-  const validationError = validateForm()
-  if (validationError) {
-    errorMessage.value = validationError
-    successMessage.value = ''
-    return
-  }
-
-  try {
-    isSubmitting.value = true
-    errorMessage.value = ''
-    successMessage.value = ''
-    const application = await submitClinicApplication(form.value)
-    successMessage.value = `Application submitted. Your status is ${application.status || 'PENDING'}.`
-    form.value = { ...emptyForm }
-  } catch (error) {
-    errorMessage.value = error instanceof Error ? error.message : 'Failed to submit application'
-  } finally {
-    isSubmitting.value = false
-  }
-}
-
-function resetForm() {
-  form.value = { ...emptyForm }
-  errorMessage.value = ''
-  successMessage.value = ''
-}
-</script>
-
-<style scoped>
-.application-page {
-  min-height: calc(100vh - 72px);
-  background: #f7f5f2;
-  color: #1f2933;
-}
-
-.application-hero {
-  background:
-    linear-gradient(135deg, rgba(31, 41, 51, 0.82), rgba(60, 78, 88, 0.68)),
-    url('https://images.unsplash.com/photo-1628009368231-7bb7cfcb0def?auto=format&fit=crop&w=1800&q=80');
-  background-position: center;
-  background-size: cover;
-  color: #ffffff;
-}
-
-.hero-inner {
-  min-height: 360px;
-  display: grid;
-  grid-template-columns: minmax(0, 1fr) 320px;
-  gap: 32px;
-  align-items: end;
-  padding-top: 72px;
-  padding-bottom: 46px;
-}
-
-.hero-copy {
-  max-width: 720px;
-}
-
-.eyebrow {
-  margin: 0 0 10px;
-  font-size: 0.78rem;
-  font-weight: 800;
-  letter-spacing: 0.08em;
-  text-transform: uppercase;
-  color: #fed7aa;
-}
-
-.hero-copy h1 {
-  margin: 0;
-  font-size: clamp(2.35rem, 5vw, 4.7rem);
-  line-height: 0.95;
-  font-weight: 850;
-}
-
-.hero-copy p {
-  margin: 20px 0 0;
-  max-width: 620px;
-  color: rgba(255, 255, 255, 0.9);
-  font-size: 1.04rem;
-  line-height: 1.65;
-}
-
-.review-note {
-  align-self: end;
-  padding: 18px;
-  border: 1px solid rgba(255, 255, 255, 0.24);
-  background: rgba(255, 255, 255, 0.11);
-  backdrop-filter: blur(12px);
-  border-radius: 8px;
-}
-
-.note-label {
-  display: inline-block;
-  margin-bottom: 10px;
-  color: #fed7aa;
-  font-size: 0.78rem;
-  font-weight: 800;
-  text-transform: uppercase;
-}
-
-.review-note strong {
-  display: block;
-  font-size: 1.05rem;
-}
-
-.review-note p {
-  margin: 8px 0 0;
-  color: rgba(255, 255, 255, 0.82);
-}
-
-.application-body {
-  padding-top: 34px;
-  padding-bottom: 64px;
-}
-
-.form-shell {
-  max-width: 940px;
-  margin: 0 auto;
-  background: #ffffff;
-  border: 1px solid #e5e7eb;
-  border-radius: 8px;
-  box-shadow: 0 18px 40px rgba(31, 41, 51, 0.08);
-  padding: 28px;
-}
-
-.form-heading {
-  display: flex;
-  justify-content: space-between;
-  gap: 24px;
-  border-bottom: 1px solid #edf0f2;
-  padding-bottom: 18px;
-  margin-bottom: 22px;
-}
-
-.form-heading h2 {
-  margin: 0;
-  font-size: 1.45rem;
-  font-weight: 800;
-}
-
-.form-heading p {
-  max-width: 340px;
-  margin: 0;
-  color: #667085;
-}
-
-.form-grid {
-  display: grid;
-  grid-template-columns: repeat(2, minmax(0, 1fr));
-  gap: 18px;
-}
-
-.form-group.wide {
-  grid-column: 1 / -1;
-}
-
-.form-group label {
-  display: block;
-  margin-bottom: 7px;
-  color: #344054;
-  font-weight: 700;
-  font-size: 0.92rem;
-}
-
-.form-control {
-  min-height: 46px;
-  border-radius: 8px;
-}
-
-.alert {
-  margin-top: 18px;
-}
-
-.form-actions {
-  display: flex;
-  gap: 12px;
-  margin-top: 22px;
-}
-
-.btn {
-  border-radius: 8px;
-  font-weight: 700;
-}
-
-.btn-primary {
-  background: #f97316;
-  border-color: #f97316;
-}
-
-.btn-primary:hover {
-  background: #ea580c;
-  border-color: #ea580c;
-}
-
-@media (max-width: 768px) {
-  .hero-inner {
-    grid-template-columns: 1fr;
-    min-height: auto;
-    padding-top: 48px;
-  }
-
-  .review-note {
-    max-width: 420px;
-  }
-
-  .form-heading,
-  .form-actions {
-    flex-direction: column;
-  }
-
-  .form-grid {
-    grid-template-columns: 1fr;
-  }
-}
-</style>
Index: petify-frontend/src/views/ClinicDashboardView.vue
===================================================================
--- petify-frontend/src/views/ClinicDashboardView.vue	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/views/ClinicDashboardView.vue	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -8,5 +8,5 @@
           <p v-if="clinic" class="clinic-subtitle">{{ clinic.name }} - {{ clinic.city }}, {{ clinic.address }}</p>
         </div>
-        <div v-if="canUseSchedule" class="toolbar">
+        <div class="toolbar">
           <button class="btn btn-outline-secondary btn-sm" type="button" @click="goToPreviousDay">
             Previous day
@@ -34,45 +34,4 @@
 
       <template v-else>
-        <section v-if="clinic && !canUseSchedule" class="setup-panel">
-          <div>
-            <p class="eyebrow">Required setup</p>
-            <h2>Add your working schedule</h2>
-            <p class="setup-copy">
-              Users can book appointment slots only after your clinic adds working days and opening hours.
-            </p>
-          </div>
-
-          <form class="schedule-form" @submit.prevent="saveSchedule">
-            <fieldset class="days-fieldset">
-              <legend>Working days</legend>
-              <label v-for="day in workDayOptions" :key="day.value" class="day-check">
-                <input
-                  v-model="scheduleForm.workDays"
-                  type="checkbox"
-                  :value="day.value"
-                />
-                <span>{{ day.label }}</span>
-              </label>
-            </fieldset>
-
-            <div class="time-grid">
-              <div class="form-group">
-                <label class="form-label" for="startTime">Start time</label>
-                <input id="startTime" v-model="scheduleForm.startTime" class="form-control" type="time" required />
-              </div>
-              <div class="form-group">
-                <label class="form-label" for="endTime">End time</label>
-                <input id="endTime" v-model="scheduleForm.endTime" class="form-control" type="time" required />
-              </div>
-            </div>
-
-            <div v-if="scheduleSetupError" class="alert alert-danger">{{ scheduleSetupError }}</div>
-            <button class="btn btn-primary" type="submit" :disabled="isSavingSchedule">
-              {{ isSavingSchedule ? 'Saving...' : 'Save schedule' }}
-            </button>
-          </form>
-        </section>
-
-        <template v-else>
         <div class="summary-strip">
           <div class="summary-item">
@@ -100,7 +59,4 @@
 
             <div class="slot-grid">
-              <div v-if="daySlots.length === 0" class="panel-empty full-width">
-                This is not a working day for your clinic.
-              </div>
               <div
                 v-for="slot in daySlots"
@@ -175,5 +131,4 @@
           </aside>
         </div>
-        </template>
       </template>
     </section>
@@ -192,5 +147,4 @@
   getMyNotifications,
   markMyClinicAppointmentNoShow,
-  updateMyClinicSchedule,
   type AppNotification,
   type AppointmentSlot,
@@ -220,9 +174,7 @@
 const notifications = ref<AppNotification[]>([])
 const isLoading = ref(false)
-const isSavingSchedule = ref(false)
 const updatingAppointmentId = ref<number | null>(null)
 const accessError = ref('')
 const scheduleError = ref('')
-const scheduleSetupError = ref('')
 const notificationsError = ref('')
 const NON_BLOCKING_STATUSES = new Set(['CANCELLED', 'CANCELED', 'NO_SHOW'])
@@ -230,19 +182,4 @@
 
 const canUseDashboard = computed(() => auth.isAuthenticated && auth.user?.userType === 'CLINIC')
-const canUseSchedule = computed(() => Boolean(clinic.value?.scheduleComplete))
-const scheduleForm = ref({
-  workDays: [] as string[],
-  startTime: '09:00',
-  endTime: '17:00',
-})
-const workDayOptions = [
-  { value: 'MONDAY', label: 'Mon' },
-  { value: 'TUESDAY', label: 'Tue' },
-  { value: 'WEDNESDAY', label: 'Wed' },
-  { value: 'THURSDAY', label: 'Thu' },
-  { value: 'FRIDAY', label: 'Fri' },
-  { value: 'SATURDAY', label: 'Sat' },
-  { value: 'SUNDAY', label: 'Sun' },
-]
 
 const appointmentsByDateTime = computed(() => {
@@ -268,7 +205,8 @@
   const now = new Date()
 
-  for (const time of getClinicTimesForDate(selectedDate.value)) {
-      const dateTime = `${selectedDate.value}T${time}`
-      const label = time
+  for (let hour = 9; hour < 17; hour += 1) {
+    for (const minute of [0, 30]) {
+      const dateTime = `${selectedDate.value}T${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`
+      const label = `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`
       const key = normalizeDateTime(dateTime)
       const appointment = appointmentsByDateTime.value.get(key)
@@ -314,4 +252,5 @@
         })
       }
+    }
   }
 
@@ -335,6 +274,7 @@
   const slots: AppointmentSlot[] = []
 
-  for (const time of getClinicTimesForDate(date)) {
-      const dateTime = `${date}T${time}`
+  for (let hour = 9; hour < 17; hour += 1) {
+    for (const minute of [0, 30]) {
+      const dateTime = `${date}T${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`
       const key = normalizeDateTime(dateTime)
       if (new Date(dateTime).getTime() < now.getTime()) continue
@@ -342,6 +282,7 @@
       slots.push({
         dateTime,
-        label: time,
+        label: `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`,
       })
+    }
   }
 
@@ -350,5 +291,5 @@
 
 async function loadSchedule() {
-  if (!auth.user?.userId || !canUseDashboard.value || !canUseSchedule.value || !selectedDate.value) return
+  if (!auth.user?.userId || !canUseDashboard.value || !selectedDate.value) return
 
   const requestId = ++latestScheduleRequest
@@ -378,38 +319,4 @@
 }
 
-async function saveSchedule() {
-  if (!auth.user?.userId) return
-  if (scheduleForm.value.workDays.length === 0) {
-    scheduleSetupError.value = 'Choose at least one working day'
-    return
-  }
-
-  if (!scheduleForm.value.startTime || !scheduleForm.value.endTime) {
-    scheduleSetupError.value = 'Start and end time are required'
-    return
-  }
-
-  if (scheduleForm.value.startTime >= scheduleForm.value.endTime) {
-    scheduleSetupError.value = 'Start time must be before end time'
-    return
-  }
-
-  try {
-    isSavingSchedule.value = true
-    scheduleSetupError.value = ''
-    clinic.value = await updateMyClinicSchedule(auth.user.userId, {
-      workDays: scheduleForm.value.workDays.join(','),
-      startTime: scheduleForm.value.startTime,
-      endTime: scheduleForm.value.endTime,
-    })
-    hydrateScheduleForm()
-    await loadSchedule()
-  } catch (error) {
-    scheduleSetupError.value = error instanceof Error ? error.message : 'Failed to save clinic schedule'
-  } finally {
-    isSavingSchedule.value = false
-  }
-}
-
 async function loadNotifications() {
   if (!auth.user?.userId || !canUseDashboard.value) return
@@ -510,45 +417,4 @@
 }
 
-function hydrateScheduleForm() {
-  scheduleForm.value = {
-    workDays: clinic.value?.workDays ? clinic.value.workDays.split(',').map((day) => day.trim()).filter(Boolean) : [],
-    startTime: clinic.value?.startTime?.slice(0, 5) || '09:00',
-    endTime: clinic.value?.endTime?.slice(0, 5) || '17:00',
-  }
-}
-
-function getClinicTimesForDate(date: string): string[] {
-  if (!clinic.value?.workDays || !clinic.value.startTime || !clinic.value.endTime) return []
-  if (!isClinicWorkingDay(date)) return []
-
-  const times: string[] = []
-  const start = timeToMinutes(clinic.value.startTime)
-  const end = timeToMinutes(clinic.value.endTime)
-
-  for (let minutes = start; minutes < end; minutes += 30) {
-    times.push(minutesToTime(minutes))
-  }
-
-  return times
-}
-
-function isClinicWorkingDay(date: string): boolean {
-  const day = new Date(`${date}T00:00:00`).toLocaleDateString('en-US', { weekday: 'long' }).toUpperCase()
-  return clinic.value?.workDays?.split(',').map((item) => item.trim().toUpperCase()).includes(day) ?? false
-}
-
-function timeToMinutes(time: string): number {
-  const parts = time.slice(0, 5).split(':').map(Number)
-  const hours = parts[0] ?? 0
-  const minutes = parts[1] ?? 0
-  return hours * 60 + minutes
-}
-
-function minutesToTime(total: number): string {
-  const hours = Math.floor(total / 60)
-  const minutes = total % 60
-  return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`
-}
-
 function formatDateTime(value: string): string {
   return new Date(value).toLocaleString('en-US', {
@@ -573,5 +439,4 @@
   try {
     clinic.value = await getMyClinic(auth.user.userId)
-    hydrateScheduleForm()
     accessError.value = ''
   } catch (error) {
@@ -580,9 +445,5 @@
   }
 
-  if (canUseSchedule.value) {
-    await Promise.all([loadSchedule(), loadNotifications()])
-  } else {
-    await loadNotifications()
-  }
+  await Promise.all([loadSchedule(), loadNotifications()])
 })
 
@@ -649,6 +510,5 @@
 .summary-strip,
 .schedule-section,
-.appointments-panel,
-.setup-panel {
+.appointments-panel {
   background: white;
   border: 1px solid #e2e8f0;
@@ -669,75 +529,4 @@
   color: #718096;
   margin: 0;
-}
-
-.setup-panel {
-  display: grid;
-  gap: 24px;
-  padding: 28px;
-}
-
-.setup-panel h2 {
-  color: #1a202c;
-  font-size: 1.45rem;
-  margin: 0 0 8px;
-}
-
-.setup-copy {
-  color: #718096;
-  margin: 0;
-}
-
-.schedule-form {
-  display: grid;
-  gap: 20px;
-  max-width: 720px;
-}
-
-.days-fieldset {
-  border: 0;
-  display: flex;
-  flex-wrap: wrap;
-  gap: 10px;
-  margin: 0;
-  padding: 0;
-}
-
-.days-fieldset legend {
-  color: #2d3748;
-  font-weight: 700;
-  margin-bottom: 8px;
-  width: 100%;
-}
-
-.day-check {
-  align-items: center;
-  border: 1px solid #cbd5e0;
-  border-radius: 8px;
-  cursor: pointer;
-  display: inline-flex;
-  gap: 8px;
-  padding: 9px 12px;
-}
-
-.day-check:has(input:checked) {
-  background: #fff7ed;
-  border-color: #f97316;
-  color: #9a3412;
-}
-
-.time-grid {
-  display: grid;
-  grid-template-columns: repeat(2, minmax(0, 180px));
-  gap: 16px;
-}
-
-.form-group {
-  display: grid;
-  gap: 8px;
-}
-
-.form-label {
-  color: #2d3748;
-  font-weight: 700;
 }
 
@@ -834,8 +623,4 @@
   grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
   gap: 12px;
-}
-
-.full-width {
-  grid-column: 1 / -1;
 }
 
Index: petify-frontend/src/views/LoginView.vue
===================================================================
--- petify-frontend/src/views/LoginView.vue	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/views/LoginView.vue	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -29,7 +29,4 @@
         <div v-if="error" class="alert alert-danger auth-alert" role="alert">
           <strong class="me-1">Oops.</strong>{{ error }}
-        </div>
-        <div v-if="forgotSuccess" class="alert alert-success auth-alert" role="alert">
-          {{ forgotSuccess }}
         </div>
 
@@ -116,8 +113,8 @@
           <!-- Remember me -->
           <div class="d-flex justify-content-between align-items-center mt-2 mb-3">
-            <span></span>
-            <button class="link-button small accent" type="button" @click="toggleForgotPassword">
-              Forgot password?
-            </button>
+
+
+            <!-- enable later if you implement route -->
+            <!-- <RouterLink class="link small accent" to="/forgot">Forgot password?</RouterLink> -->
           </div>
 
@@ -126,33 +123,4 @@
             <span v-if="loading" class="spinner-border spinner-border-sm me-2" aria-hidden="true"></span>
             {{ loading ? 'Logging in…' : 'Log in' }}
-          </button>
-        </form>
-
-        <form v-if="showForgotPassword" class="forgot-panel mt-4" @submit.prevent="submitForgotPassword">
-          <label class="form-label" for="forgot-identifier">Username or email</label>
-          <div class="input-group auth-input">
-            <span class="input-group-text">
-              <svg width="18" height="18" viewBox="0 0 24 24" fill="none">
-                <path
-                  d="M4 6.5A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5v11a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 4 17.5v-11Zm2.5-.5a.5.5 0 0 0-.5.5v.8l6 3.7 6-3.7v-.8a.5.5 0 0 0-.5-.5h-11Zm11.5 3.6-5.5 3.4a1 1 0 0 1-1 0L6 9.6v7.9a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5V9.6Z"
-                  fill="currentColor"
-                  opacity=".85"
-                />
-              </svg>
-            </span>
-            <input
-              id="forgot-identifier"
-              v-model.trim="forgotIdentifier"
-              class="form-control"
-              type="text"
-              autocomplete="username"
-              required
-              placeholder="username or email"
-            />
-          </div>
-          <div v-if="forgotError" class="text-danger small mt-2">{{ forgotError }}</div>
-          <button class="btn btn-outline-primary w-100 mt-3" type="submit" :disabled="forgotLoading">
-            <span v-if="forgotLoading" class="spinner-border spinner-border-sm me-2" aria-hidden="true"></span>
-            {{ forgotLoading ? 'Sending...' : 'Send temporary password' }}
           </button>
         </form>
@@ -176,5 +144,4 @@
 import { useRoute, useRouter } from 'vue-router'
 import { useAuthStore } from '../stores/auth'
-import { forgotPassword } from '../api/auth'
 
 const auth = useAuthStore()
@@ -186,9 +153,4 @@
 const loading = ref(false)
 const error = ref<string | null>(null)
-const forgotLoading = ref(false)
-const forgotError = ref<string | null>(null)
-const forgotSuccess = ref<string | null>(null)
-const showForgotPassword = ref(false)
-const forgotIdentifier = ref('')
 
 const showPassword = ref(false)
@@ -197,13 +159,4 @@
 function togglePassword() {
   showPassword.value = !showPassword.value
-}
-
-function toggleForgotPassword() {
-  showForgotPassword.value = !showForgotPassword.value
-  forgotError.value = null
-  forgotSuccess.value = null
-  if (showForgotPassword.value && !forgotIdentifier.value) {
-    forgotIdentifier.value = username.value
-  }
 }
 
@@ -222,18 +175,4 @@
   } finally {
     loading.value = false
-  }
-}
-
-async function submitForgotPassword() {
-  forgotError.value = null
-  forgotSuccess.value = null
-  forgotLoading.value = true
-  try {
-    forgotSuccess.value = await forgotPassword({ identifier: forgotIdentifier.value })
-    showForgotPassword.value = false
-  } catch (e) {
-    forgotError.value = e instanceof Error ? e.message : String(e)
-  } finally {
-    forgotLoading.value = false
   }
 }
@@ -337,9 +276,4 @@
 }
 
-.forgot-panel {
-  border-top: 1px solid rgba(31, 41, 55, 0.1);
-  padding-top: 1rem;
-}
-
 /* Input styling */
 .auth-input .input-group-text {
@@ -437,20 +371,4 @@
 }
 
-.link-button {
-  border: 0;
-  background: transparent;
-  padding: 0;
-  text-decoration: none;
-}
-
-.link-button.accent {
-  color: #ff7a18;
-  font-weight: 600;
-}
-
-.link-button.accent:hover {
-  color: #e76610;
-}
-
 /* Respect reduced motion */
 @media (prefers-reduced-motion: reduce) {
Index: petify-frontend/src/views/OwnerProfileView.vue
===================================================================
--- petify-frontend/src/views/OwnerProfileView.vue	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/views/OwnerProfileView.vue	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -208,23 +208,4 @@
 
                   <div class="form-group">
-                    <label class="form-label" for="interactionType">How did you interact?</label>
-                    <select
-                      id="interactionType"
-                      v-model="newReview.interactionType"
-                      class="form-control"
-                      required
-                    >
-                      <option value="" disabled>Select an option</option>
-                      <option
-                        v-for="option in interactionTypeOptions"
-                        :key="option.value"
-                        :value="option.value"
-                      >
-                        {{ option.label }}
-                      </option>
-                    </select>
-                  </div>
-
-                  <div class="form-group">
                     <label class="form-label" for="comment">Comment</label>
                     <textarea
@@ -245,5 +226,5 @@
                       type="submit"
                       class="btn btn-primary"
-                      :disabled="isSubmittingReview || newReview.rating === 0 || !newReview.interactionType"
+                      :disabled="isSubmittingReview || newReview.rating === 0"
                     >
                       <span v-if="isSubmittingReview">Submitting...</span>
@@ -306,10 +287,5 @@
 import { useRoute, RouterLink } from 'vue-router'
 import { getUserProfile, getUserListings, getUserPets, loadUserVerificationStatus } from '../api/profile'
-import {
-  createReview,
-  getReviewsByOwner,
-  deleteReview as deleteReviewAPI,
-  type UserReviewInteractionType,
-} from '../api/reviews'
+import { createReview, getReviewsByOwner, deleteReview as deleteReviewAPI } from '../api/reviews'
 import { useAuthStore } from '../stores/auth'
 
@@ -329,20 +305,7 @@
 const isSubmittingReview = ref(false)
 const reviewError = ref<string | null>(null)
-const interactionTypeOptions: Array<{ value: UserReviewInteractionType; label: string }> = [
-  { value: 'EVENT', label: 'Met at an event' },
-  { value: 'PERSONAL_INTERACTION', label: 'Personal interaction' },
-  { value: 'ONLINE', label: 'Online interaction' },
-  { value: 'PHONE_CALL', label: 'Phone call' },
-  { value: 'OTHER', label: 'Other' },
-]
-
-const newReview = ref<{
-  rating: number
-  comment: string
-  interactionType: UserReviewInteractionType | ''
-}>({
+const newReview = ref({
   rating: 0,
   comment: '',
-  interactionType: '',
 })
 
@@ -482,9 +445,4 @@
   }
 
-  if (!newReview.value.interactionType) {
-    reviewError.value = 'Please choose how you interacted with this user'
-    return
-  }
-
   isSubmittingReview.value = true
   reviewError.value = null
@@ -495,6 +453,5 @@
       auth.user.userId,
       newReview.value.rating,
-      newReview.value.comment,
-      newReview.value.interactionType
+      newReview.value.comment
     )
 
@@ -502,5 +459,4 @@
     newReview.value.rating = 0
     newReview.value.comment = ''
-    newReview.value.interactionType = ''
     await loadReviews()
   } catch (err) {
Index: petify-frontend/src/views/ProfileView.vue
===================================================================
--- petify-frontend/src/views/ProfileView.vue	(revision f6ed6e478015d417b9610fe651dfccdc3e22dc89)
+++ petify-frontend/src/views/ProfileView.vue	(revision 92e7c7aeb21d4b882e2f8107b1676468ceb14aa7)
@@ -94,72 +94,5 @@
               </button>
             </li>
-            <li class="nav-item" role="presentation">
-              <button
-                class="nav-link"
-                :class="{ active: activeTab === 'account' }"
-                @click="activeTab = 'account'"
-                type="button"
-                role="tab"
-              >
-                <i class="bi bi-shield-lock-fill"></i> Account
-              </button>
-            </li>
           </ul>
-
-          <!-- Account Tab -->
-          <div v-if="activeTab === 'account'" class="tab-content-section">
-            <h2 class="section-title">Account</h2>
-            <form class="password-form" @submit.prevent="submitPasswordChange">
-              <div v-if="passwordSuccess" class="alert alert-success" role="alert">
-                {{ passwordSuccess }}
-              </div>
-              <div v-if="passwordError" class="alert alert-danger" role="alert">
-                {{ passwordError }}
-              </div>
-
-              <div class="mb-3">
-                <label class="form-label" for="current-password">Current password</label>
-                <input
-                  id="current-password"
-                  v-model="passwordForm.currentPassword"
-                  class="form-control"
-                  type="password"
-                  autocomplete="current-password"
-                  required
-                />
-              </div>
-
-              <div class="mb-3">
-                <label class="form-label" for="new-password">New password</label>
-                <input
-                  id="new-password"
-                  v-model="passwordForm.newPassword"
-                  class="form-control"
-                  type="password"
-                  autocomplete="new-password"
-                  minlength="8"
-                  required
-                />
-              </div>
-
-              <div class="mb-4">
-                <label class="form-label" for="confirm-new-password">Confirm new password</label>
-                <input
-                  id="confirm-new-password"
-                  v-model="passwordForm.confirmPassword"
-                  class="form-control"
-                  type="password"
-                  autocomplete="new-password"
-                  minlength="8"
-                  required
-                />
-              </div>
-
-              <button class="btn btn-primary" type="submit" :disabled="isPasswordSubmitting">
-                <span v-if="isPasswordSubmitting" class="spinner-border spinner-border-sm me-2" aria-hidden="true"></span>
-                {{ isPasswordSubmitting ? 'Changing...' : 'Change password' }}
-              </button>
-            </form>
-          </div>
 
           <!-- Listings Tab -->
@@ -813,10 +746,9 @@
   type Review,
 } from '../api/reviews'
-import { changePassword } from '../api/auth'
 
 const router = useRouter()
 const auth = useAuthStore()
 
-const activeTab = ref<'listings' | 'pets' | 'create-listing' | 'favorites' | 'appointments' | 'account'>('listings')
+const activeTab = ref<'listings' | 'pets' | 'create-listing' | 'favorites' | 'appointments'>('listings')
 const listings = ref<any[]>([])
 const pets = ref<any[]>([])
@@ -850,13 +782,4 @@
 const petPhotoFile = ref<File | null>(null)
 const petPhotoPreview = ref('')
-const isPasswordSubmitting = ref(false)
-const passwordError = ref('')
-const passwordSuccess = ref('')
-
-const passwordForm = ref({
-  currentPassword: '',
-  newPassword: '',
-  confirmPassword: '',
-})
 
 const newListing = ref({
@@ -936,41 +859,4 @@
   // Fall back to petNameMap (from pets list)
   return petNameMap.value[animalId] || 'Unknown Pet'
-}
-
-async function submitPasswordChange() {
-  passwordError.value = ''
-  passwordSuccess.value = ''
-
-  if (!auth.user?.userId) {
-    passwordError.value = 'You need to be logged in to change your password.'
-    return
-  }
-  if (passwordForm.value.newPassword.length < 8) {
-    passwordError.value = 'New password must be at least 8 characters long.'
-    return
-  }
-  if (passwordForm.value.newPassword !== passwordForm.value.confirmPassword) {
-    passwordError.value = 'New passwords do not match.'
-    return
-  }
-
-  isPasswordSubmitting.value = true
-  try {
-    await changePassword({
-      userId: auth.user.userId,
-      currentPassword: passwordForm.value.currentPassword,
-      newPassword: passwordForm.value.newPassword,
-    })
-    passwordForm.value = {
-      currentPassword: '',
-      newPassword: '',
-      confirmPassword: '',
-    }
-    passwordSuccess.value = 'Password changed successfully.'
-  } catch (error: any) {
-    passwordError.value = error?.message || 'Failed to change password.'
-  } finally {
-    isPasswordSubmitting.value = false
-  }
 }
 
@@ -1784,8 +1670,4 @@
 }
 
-.password-form {
-  max-width: 520px;
-}
-
 @keyframes fadeIn {
   from {
