diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/CandidacyController.java b/src/main/java/com/example/gestionstagesbackend/controllers/CandidacyController.java
index 6861e1ddf847495a6b3737954aded7eedb4cafb2..2ae6084ab0bd0dba6cff3f7c728dea64c9437f0c 100644
--- a/src/main/java/com/example/gestionstagesbackend/controllers/CandidacyController.java
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/CandidacyController.java
@@ -1,9 +1,14 @@
 package com.example.gestionstagesbackend.controllers;
 
-
-
 import com.example.gestionstagesbackend.model.Candidacy;
+import com.example.gestionstagesbackend.model.Student;
+import com.example.gestionstagesbackend.model.Stage;
+import com.example.gestionstagesbackend.model.UnivSupervisor;
 import com.example.gestionstagesbackend.services.CandidacyService;
+import com.example.gestionstagesbackend.services.StudentService;
+import com.example.gestionstagesbackend.services.StageService;
+import com.example.gestionstagesbackend.services.UnivSupervisorService;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -11,30 +16,68 @@ import java.util.Optional;
 
 @RestController
 @RequestMapping("/api/candidacies")
+@CrossOrigin(origins = "*")
 public class CandidacyController {
     private final CandidacyService candidacyService;
+    private final StudentService studentService;
+    private final StageService stageService;
+    private final UnivSupervisorService univSupervisorService;
 
-    public CandidacyController(CandidacyService candidacyService) {
+    public CandidacyController(CandidacyService candidacyService, StudentService studentService,
+                               StageService stageService, UnivSupervisorService univSupervisorService) {
         this.candidacyService = candidacyService;
+        this.studentService = studentService;
+        this.stageService = stageService;
+        this.univSupervisorService = univSupervisorService;
     }
 
-    @GetMapping
-    public List<Candidacy> getAllCandidacies() {
-        return candidacyService.getAllCandidacies();
-    }
+    @PostMapping
+    public ResponseEntity<?> createCandidacy(@RequestBody Candidacy candidacy) {
+        if (candidacy.getStudent() == null || candidacy.getStudent().getId() == null) {
+            return ResponseEntity.badRequest().body("Student ID is required");
+        }
+        if (candidacy.getStage() == null || candidacy.getStage().getId() == null) {
+            return ResponseEntity.badRequest().body("Stage ID is required");
+        }
+        if (candidacy.getUnivSupervisor() != null && candidacy.getUnivSupervisor().getId() == null) {
+            return ResponseEntity.badRequest().body("UnivSupervisor ID is invalid");
+        }
 
-    @GetMapping("/{id}")
-    public Optional<Candidacy> getCandidacyById(@PathVariable Long id) {
-        return candidacyService.getCandidacyById(id);
+        Optional<Student> student = studentService.getStudentById(candidacy.getStudent().getId());
+        Optional<Stage> stage = stageService.getStageById(candidacy.getStage().getId());
+        Optional<UnivSupervisor> univSupervisor = Optional.empty();
+
+        if (candidacy.getUnivSupervisor() != null) {
+            univSupervisor = univSupervisorService.getUnivSupervisorById(candidacy.getUnivSupervisor().getId());
+            if (univSupervisor.isEmpty()) {
+                return ResponseEntity.badRequest().body("UnivSupervisor not found");
+            }
+        }
+
+        if (student.isEmpty()) {
+            return ResponseEntity.badRequest().body("Student not found");
+        }
+        if (stage.isEmpty()) {
+            return ResponseEntity.badRequest().body("Stage not found");
+        }
+
+        candidacy.setStudent(student.get());
+        candidacy.setStage(stage.get());
+        univSupervisor.ifPresent(candidacy::setUnivSupervisor);
+
+        Candidacy savedCandidacy = candidacyService.saveCandidacy(candidacy);
+        return ResponseEntity.ok(savedCandidacy);
     }
 
-    @PostMapping
-    public Candidacy saveCandidacy(@RequestBody Candidacy candidacy) {
-        return candidacyService.saveCandidacy(candidacy);
+    @GetMapping
+    public ResponseEntity<List<Candidacy>> getAllCandidacies() {
+        return ResponseEntity.ok(candidacyService.getAllCandidacies());
     }
 
-    @DeleteMapping("/{id}")
-    public void deleteCandidacy(@PathVariable Long id) {
-        candidacyService.deleteCandidacy(id);
+    @GetMapping("/{id}")
+    public ResponseEntity<Candidacy> getCandidacyById(@PathVariable Long id) {
+        return candidacyService.getCandidacyById(id)
+                .map(ResponseEntity::ok)
+                .orElse(ResponseEntity.notFound().build());
     }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/EnterpriseController.java b/src/main/java/com/example/gestionstagesbackend/controllers/EnterpriseController.java
index aa09befcfdc5a8e1d32c667b71617078ccaf9fc8..2f789a69d83ef1402032aab0a079cd3555780201 100644
--- a/src/main/java/com/example/gestionstagesbackend/controllers/EnterpriseController.java
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/EnterpriseController.java
@@ -1,40 +1,40 @@
 package com.example.gestionstagesbackend.controllers;
 
 
-
 import com.example.gestionstagesbackend.model.Enterprise;
 import com.example.gestionstagesbackend.services.EnterpriseService;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
-import java.util.Optional;
 
 @RestController
 @RequestMapping("/api/enterprises")
+@CrossOrigin(origins = "*") // Allow requests from all origins (for testing)
 public class EnterpriseController {
+
     private final EnterpriseService enterpriseService;
 
     public EnterpriseController(EnterpriseService enterpriseService) {
         this.enterpriseService = enterpriseService;
     }
 
-    @GetMapping
-    public List<Enterprise> getAllEnterprises() {
-        return enterpriseService.getAllEnterprises();
+    @PostMapping
+    public ResponseEntity<Enterprise> createEnterprise(@RequestBody Enterprise enterprise) {
+        Enterprise savedEnterprise = enterpriseService.saveEnterprise(enterprise);
+        return ResponseEntity.ok(savedEnterprise);
     }
 
-    @GetMapping("/{id}")
-    public Optional<Enterprise> getEnterpriseById(@PathVariable Long id) {
-        return enterpriseService.getEnterpriseById(id);
+    @GetMapping
+    public ResponseEntity<List<Enterprise>> getAllEnterprises() {
+        return ResponseEntity.ok(enterpriseService.getAllEnterprises());
     }
 
-    @PostMapping
-    public Enterprise saveEnterprise(@RequestBody Enterprise enterprise) {
-        return enterpriseService.saveEnterprise(enterprise);
+    @GetMapping("/{id}")
+    public ResponseEntity<Enterprise> getEnterpriseById(@PathVariable Long id) {
+        return enterpriseService.getEnterpriseById(id)
+                .map(ResponseEntity::ok)
+                .orElse(ResponseEntity.notFound().build());
     }
 
-    @DeleteMapping("/{id}")
-    public void deleteEnterprise(@PathVariable Long id) {
-        enterpriseService.deleteEnterprise(id);
-    }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/StageController.java b/src/main/java/com/example/gestionstagesbackend/controllers/StageController.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b783883763693495fdb05c20da4020a64b02d5f
--- /dev/null
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/StageController.java
@@ -0,0 +1,70 @@
+package com.example.gestionstagesbackend.controllers;
+
+import com.example.gestionstagesbackend.model.Stage;
+import com.example.gestionstagesbackend.model.Enterprise;
+import com.example.gestionstagesbackend.services.StageService;
+import com.example.gestionstagesbackend.services.EnterpriseService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/api/stages")
+@CrossOrigin(origins = "*")
+public class StageController {
+    private final StageService stageService;
+    private final EnterpriseService enterpriseService;
+
+    public StageController(StageService stageService, EnterpriseService enterpriseService) {
+        this.stageService = stageService;
+        this.enterpriseService = enterpriseService;
+    }
+
+    @PostMapping
+    public ResponseEntity<?> createStage(@RequestBody Stage stage) {
+        if (stage.getEnterprise() == null || stage.getEnterprise().getId() == null) {
+            return ResponseEntity.badRequest().body("Enterprise ID is required");
+        }
+
+        Optional<Enterprise> enterprise = enterpriseService.getEnterpriseById(stage.getEnterprise().getId());
+
+        if (enterprise.isEmpty()) {
+            return ResponseEntity.badRequest().body("Enterprise not found");
+        }
+
+        stage.setEnterprise(enterprise.get());
+        Stage savedStage = stageService.saveStage(stage);
+        return ResponseEntity.ok(savedStage);
+    }
+
+    @GetMapping
+    public ResponseEntity<List<Stage>> getAllStages() {
+        return ResponseEntity.ok(stageService.getAllStages());
+    }
+    @PutMapping("/{id}")
+    public ResponseEntity<?> updateStage(@PathVariable Long id, @RequestBody Stage updatedStage) {
+        Optional<Stage> optionalStage = stageService.getStageById(id);
+
+        if (optionalStage.isPresent()) {
+            Stage existingStage = optionalStage.get();
+            existingStage.setName(updatedStage.getName());
+            existingStage.setDescription(updatedStage.getDescription());
+
+            if (updatedStage.getEnterprise() != null && updatedStage.getEnterprise().getId() != null) {
+                Optional<Enterprise> enterprise = enterpriseService.getEnterpriseById(updatedStage.getEnterprise().getId());
+                if (enterprise.isEmpty()) {
+                    return ResponseEntity.badRequest().body("Enterprise not found");
+                }
+                existingStage.setEnterprise(enterprise.get());
+            }
+
+            Stage savedStage = stageService.saveStage(existingStage);
+            return ResponseEntity.ok(savedStage);
+        } else {
+            return ResponseEntity.notFound().build();
+        }
+    }
+
+}
diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/StudentController.java b/src/main/java/com/example/gestionstagesbackend/controllers/StudentController.java
index af799250469988b6da3c48361efef5f8f1196398..5e34a73754082926d6ae24d2a87a2c0dea00709b 100644
--- a/src/main/java/com/example/gestionstagesbackend/controllers/StudentController.java
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/StudentController.java
@@ -1,7 +1,10 @@
 package com.example.gestionstagesbackend.controllers;
 
+import com.example.gestionstagesbackend.model.Candidacy;
 import com.example.gestionstagesbackend.model.Student;
+import com.example.gestionstagesbackend.services.CandidacyService;
 import com.example.gestionstagesbackend.services.StudentService;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -9,36 +12,38 @@ import java.util.Optional;
 
 @RestController
 @RequestMapping("/api/students")
+@CrossOrigin(origins = "*")
 public class StudentController {
-
     private final StudentService studentService;
+    private final CandidacyService candidacyService;
 
-    public StudentController(StudentService studentService) {
+    public StudentController(StudentService studentService, CandidacyService candidacyService) {
         this.studentService = studentService;
+        this.candidacyService = candidacyService;
     }
 
-    @GetMapping
-    public List<Student> getAllStudents() {
-        return studentService.getAllStudents();
-    }
-
-    @GetMapping("/{id}")
-    public Optional<Student> getStudentById(@PathVariable Long id) {
-        return studentService.getStudentById(id);
+    @PostMapping
+    public ResponseEntity<Student> createStudent(@RequestBody Student student) {
+        Student savedStudent = studentService.saveStudent(student);
+        return ResponseEntity.ok(savedStudent);
     }
 
-    @PostMapping
-    public Student saveStudent(@RequestBody Student student) {
-        return studentService.saveStudent(student);
+    @GetMapping
+    public ResponseEntity<List<Student>> getAllStudents() {
+        return ResponseEntity.ok(studentService.getAllStudents());
     }
 
-    @PutMapping("/{id}")
-    public Student updateStudent(@PathVariable Long id, @RequestBody Student studentDetails) {
-        return studentService.updateStudent(id, studentDetails);
+    @GetMapping("/{id}")
+    public ResponseEntity<Student> getStudentById(@PathVariable Long id) {
+        return studentService.getStudentById(id)
+                .map(ResponseEntity::ok)
+                .orElse(ResponseEntity.notFound().build());
     }
 
-    @DeleteMapping("/{id}")
-    public void deleteStudent(@PathVariable Long id) {
-        studentService.deleteStudent(id);
+    // endpoint pour recherche de candidacy par student
+    @GetMapping("/{id}/candidacies")
+    public ResponseEntity<List<Candidacy>> getStudentCandidacies(@PathVariable Long id) {
+        List<Candidacy> candidacies = candidacyService.getCandidaciesByStudentId(id);
+        return ResponseEntity.ok(candidacies);
     }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/controllers/UnivSupervisorController.java b/src/main/java/com/example/gestionstagesbackend/controllers/UnivSupervisorController.java
new file mode 100644
index 0000000000000000000000000000000000000000..51f19a62bc4e0da2623fea5d13b23e9711cba612
--- /dev/null
+++ b/src/main/java/com/example/gestionstagesbackend/controllers/UnivSupervisorController.java
@@ -0,0 +1,38 @@
+package com.example.gestionstagesbackend.controllers;
+
+import com.example.gestionstagesbackend.model.UnivSupervisor;
+import com.example.gestionstagesbackend.services.UnivSupervisorService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/api/univsupervisors")
+@CrossOrigin(origins = "*")
+public class UnivSupervisorController {
+    private final UnivSupervisorService univSupervisorService;
+
+    public UnivSupervisorController(UnivSupervisorService univSupervisorService) {
+        this.univSupervisorService = univSupervisorService;
+    }
+
+    @PostMapping
+    public ResponseEntity<UnivSupervisor> createUnivSupervisor(@RequestBody UnivSupervisor univSupervisor) {
+        UnivSupervisor savedUnivSupervisor = univSupervisorService.saveUnivSupervisor(univSupervisor);
+        return ResponseEntity.ok(savedUnivSupervisor);
+    }
+
+    @GetMapping
+    public ResponseEntity<List<UnivSupervisor>> getAllUnivSupervisors() {
+        return ResponseEntity.ok(univSupervisorService.getAllUnivSupervisors());
+    }
+
+    @GetMapping("/{id}")
+    public ResponseEntity<UnivSupervisor> getUnivSupervisorById(@PathVariable Long id) {
+        return univSupervisorService.getUnivSupervisorById(id)
+                .map(ResponseEntity::ok)
+                .orElse(ResponseEntity.notFound().build());
+    }
+}
diff --git a/src/main/java/com/example/gestionstagesbackend/model/Candidacy.java b/src/main/java/com/example/gestionstagesbackend/model/Candidacy.java
index ea5f3787b6750745621b9b925f585900947134fa..5304e92e7ab3475ae9151fddbadf45fe0f095cb1 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/Candidacy.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/Candidacy.java
@@ -1,8 +1,6 @@
 package com.example.gestionstagesbackend.model;
 
-
-import com.example.gestionstagesbackend.enums.AcceptedCandidacyStateKind;
-import com.example.gestionstagesbackend.enums.CandidacyRequestState;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import jakarta.persistence.*;
 
 @Entity
@@ -10,35 +8,28 @@ public class Candidacy {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
-    private String name;
-
-    @Enumerated(EnumType.STRING)
-    private CandidacyRequestState requestState;
-
-    @Enumerated(EnumType.STRING)
-    private AcceptedCandidacyStateKind acceptedCandidacyState;
-
-    @ManyToOne
-    private UnivSupervisor univSupervisor;
 
     @ManyToOne
+    @JoinColumn(name = "student_id")
+    @JsonIgnoreProperties({"candidacies"}) // Prevents infinite recursion when serializing
     private Student student;
 
     @ManyToOne
+    @JoinColumn(name = "stage_id")
+    @JsonIgnoreProperties({"candidacies"})
     private Stage stage;
 
-    public Candidacy(Long id, String name, CandidacyRequestState requestState, AcceptedCandidacyStateKind acceptedCandidacyState, UnivSupervisor univSupervisor, Student student, Stage stage) {
-        this.id = id;
-        this.name = name;
-        this.requestState = requestState;
-        this.acceptedCandidacyState = acceptedCandidacyState;
-        this.univSupervisor = univSupervisor;
-        this.student = student;
-        this.stage = stage;
-    }
+    @ManyToOne
+    @JoinColumn(name = "univ_supervisor_id")
+    @JsonIgnoreProperties({"supervisedStages"})
+    private UnivSupervisor univSupervisor;
 
-    public Candidacy() {
+    public Candidacy() {}
 
+    public Candidacy(Student student, Stage stage, UnivSupervisor univSupervisor) {
+        this.student = student;
+        this.stage = stage;
+        this.univSupervisor = univSupervisor;
     }
 
     public Long getId() {
@@ -49,38 +40,6 @@ public class Candidacy {
         this.id = id;
     }
 
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public CandidacyRequestState getRequestState() {
-        return requestState;
-    }
-
-    public void setRequestState(CandidacyRequestState requestState) {
-        this.requestState = requestState;
-    }
-
-    public AcceptedCandidacyStateKind getAcceptedCandidacyState() {
-        return acceptedCandidacyState;
-    }
-
-    public void setAcceptedCandidacyState(AcceptedCandidacyStateKind acceptedCandidacyState) {
-        this.acceptedCandidacyState = acceptedCandidacyState;
-    }
-
-    public UnivSupervisor getUnivSupervisor() {
-        return univSupervisor;
-    }
-
-    public void setUnivSupervisor(UnivSupervisor univSupervisor) {
-        this.univSupervisor = univSupervisor;
-    }
-
     public Student getStudent() {
         return student;
     }
@@ -96,4 +55,12 @@ public class Candidacy {
     public void setStage(Stage stage) {
         this.stage = stage;
     }
+
+    public UnivSupervisor getUnivSupervisor() {
+        return univSupervisor;
+    }
+
+    public void setUnivSupervisor(UnivSupervisor univSupervisor) {
+        this.univSupervisor = univSupervisor;
+    }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/model/Enterprise.java b/src/main/java/com/example/gestionstagesbackend/model/Enterprise.java
index 7aeb3f5716a9ecc694f212b3a6d295793e029918..a6bc14382388e874dd333e5205c46fae8e16edfb 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/Enterprise.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/Enterprise.java
@@ -3,25 +3,50 @@ package com.example.gestionstagesbackend.model;
 import jakarta.persistence.*;
 
 
-import java.util.Set;
+
+import java.util.List;
 
 @Entity
+@Table(name = "enterprise")
 public class Enterprise {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
+
     private String name;
     private String address;
 
     @OneToMany(mappedBy = "enterprise", cascade = CascadeType.ALL)
-    private Set<Stage> stages;
-
-    public Long getId() { return id; }
-    public void setId(Long id) { this.id = id; }
-    public String getName() { return name; }
-    public void setName(String name) { this.name = name; }
-    public String getAddress() { return address; }
-    public void setAddress(String address) { this.address = address; }
-    public Set<Stage> getStages() { return stages; }
-    public void setStages(Set<Stage> stages) { this.stages = stages; }
-}
\ No newline at end of file
+    private List<Stage> stages;
+
+    public Enterprise() {}
+
+    public Enterprise(String name, String address) {
+        this.name = name;
+        this.address = address;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+}
diff --git a/src/main/java/com/example/gestionstagesbackend/model/Stage.java b/src/main/java/com/example/gestionstagesbackend/model/Stage.java
index 5155a7d64ec55a480664e81ad21cdf5ebf91ac98..bc2c8b772e92abd8e7a3a7c98b5e82f5d9b539de 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/Stage.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/Stage.java
@@ -1,7 +1,7 @@
 package com.example.gestionstagesbackend.model;
 
-
 import jakarta.persistence.*;
+
 import java.util.List;
 
 @Entity
@@ -13,11 +13,14 @@ public class Stage {
     private String description;
 
     @ManyToOne
+    @JoinColumn(name = "enterprise_id", nullable = false)
     private Enterprise enterprise;
 
     @OneToMany(mappedBy = "stage", cascade = CascadeType.ALL)
     private List<Candidacy> candidacies;
 
+    public Stage() {}
+
     public Stage(Long id, String name, String description, Enterprise enterprise) {
         this.id = id;
         this.name = name;
@@ -25,8 +28,6 @@ public class Stage {
         this.enterprise = enterprise;
     }
 
-    public Stage() {}
-
     public Long getId() {
         return id;
     }
diff --git a/src/main/java/com/example/gestionstagesbackend/model/Student.java b/src/main/java/com/example/gestionstagesbackend/model/Student.java
index 949bb22afa36e15ddcbbbe27ff4658799301750e..3c14cc0ef6cc70e69fe525f9ab07056c55e23424 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/Student.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/Student.java
@@ -1,6 +1,5 @@
 package com.example.gestionstagesbackend.model;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import jakarta.persistence.*;
 import java.util.List;
 
@@ -13,7 +12,6 @@ public class Student {
     private String lastname;
 
     @OneToMany(mappedBy = "student", cascade = CascadeType.ALL)
-    @JsonIgnore // Prevents infinite recursion when returning JSON
     private List<Candidacy> candidacies;
 
     public Student() {}
@@ -24,15 +22,35 @@ public class Student {
         this.lastname = lastname;
     }
 
-    public Long getId() { return id; }
-    public void setId(Long id) { this.id = id; }
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
 
-    public String getFirstname() { return firstname; }
-    public void setFirstname(String firstname) { this.firstname = firstname; }
+    public String getFirstname() {
+        return firstname;
+    }
 
-    public String getLastname() { return lastname; }
-    public void setLastname(String lastname) { this.lastname = lastname; }
+    public void setFirstname(String firstname) {
+        this.firstname = firstname;
+    }
 
-    public List<Candidacy> getCandidacies() { return candidacies; }
-    public void setCandidacies(List<Candidacy> candidacies) { this.candidacies = candidacies; }
+    public String getLastname() {
+        return lastname;
+    }
+
+    public void setLastname(String lastname) {
+        this.lastname = lastname;
+    }
+
+    public List<Candidacy> getCandidacies() {
+        return candidacies;
+    }
+
+    public void setCandidacies(List<Candidacy> candidacies) {
+        this.candidacies = candidacies;
+    }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/model/UnivSupervisor.java b/src/main/java/com/example/gestionstagesbackend/model/UnivSupervisor.java
index 1a9c4c286f323dc903ef45611dc119e16fc22be9..d5d6417fbf2f21686eb1697721bf3dc0a8a97d6a 100644
--- a/src/main/java/com/example/gestionstagesbackend/model/UnivSupervisor.java
+++ b/src/main/java/com/example/gestionstagesbackend/model/UnivSupervisor.java
@@ -1,6 +1,5 @@
 package com.example.gestionstagesbackend.model;
 
-
 import jakarta.persistence.*;
 import java.util.List;
 
@@ -9,21 +8,16 @@ public class UnivSupervisor {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
-    private String firstname;
-    private String lastname;
+    private String name;
 
     @OneToMany(mappedBy = "univSupervisor", cascade = CascadeType.ALL)
-    private List<Candidacy> supervisedStages;
-
-    public UnivSupervisor(Long id, String firstname, String lastname, List<Candidacy> supervisedStages) {
-        this.id = id;
-        this.firstname = firstname;
-        this.lastname = lastname;
-        this.supervisedStages = supervisedStages;
-    }
+    private List<Candidacy> supervisedStages;  // Correct naming
 
-    public UnivSupervisor() {
+    public UnivSupervisor() {}
 
+    public UnivSupervisor(Long id, String name) {
+        this.id = id;
+        this.name = name;
     }
 
     public Long getId() {
@@ -34,20 +28,12 @@ public class UnivSupervisor {
         this.id = id;
     }
 
-    public String getFirstname() {
-        return firstname;
-    }
-
-    public void setFirstname(String firstname) {
-        this.firstname = firstname;
-    }
-
-    public String getLastname() {
-        return lastname;
+    public String getName() {
+        return name;
     }
 
-    public void setLastname(String lastname) {
-        this.lastname = lastname;
+    public void setName(String name) {
+        this.name = name;
     }
 
     public List<Candidacy> getSupervisedStages() {
@@ -57,5 +43,4 @@ public class UnivSupervisor {
     public void setSupervisedStages(List<Candidacy> supervisedStages) {
         this.supervisedStages = supervisedStages;
     }
-    // Constructors, Getters, Setters
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/repositories/CandidacyRepository.java b/src/main/java/com/example/gestionstagesbackend/repositories/CandidacyRepository.java
index 1f4a52ab97c6c4d13c7ea6edf79f278ce33090cc..e6654c1f4c0993f39ed66e1283cb7234f2f7e41b 100644
--- a/src/main/java/com/example/gestionstagesbackend/repositories/CandidacyRepository.java
+++ b/src/main/java/com/example/gestionstagesbackend/repositories/CandidacyRepository.java
@@ -1,8 +1,21 @@
 package com.example.gestionstagesbackend.repositories;
 
-
 import com.example.gestionstagesbackend.model.Candidacy;
+import org.springframework.data.jpa.repository.EntityGraph;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Optional;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 
+@Repository
 public interface CandidacyRepository extends JpaRepository<Candidacy, Long> {
+    @Query("SELECT c FROM Candidacy c JOIN FETCH c.student JOIN FETCH c.stage JOIN FETCH c.univSupervisor WHERE c.id = :id")
+    Optional<Candidacy> findByIdWithRelations(@Param("id") Long id);
+
+    @Query("SELECT c FROM Candidacy c JOIN FETCH c.student JOIN FETCH c.stage JOIN FETCH c.univSupervisor WHERE c.student.id = :studentId")
+    List<Candidacy> findByStudentId(@Param("studentId") Long studentId);
 }
+
diff --git a/src/main/java/com/example/gestionstagesbackend/repositories/StageRepository.java b/src/main/java/com/example/gestionstagesbackend/repositories/StageRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..68d883388339deffcdcdc09c0efd9b617996fd08
--- /dev/null
+++ b/src/main/java/com/example/gestionstagesbackend/repositories/StageRepository.java
@@ -0,0 +1,10 @@
+package com.example.gestionstagesbackend.repositories;
+
+
+import com.example.gestionstagesbackend.model.Stage;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface StageRepository extends JpaRepository<Stage, Long> {
+}
diff --git a/src/main/java/com/example/gestionstagesbackend/services/CandidacyService.java b/src/main/java/com/example/gestionstagesbackend/services/CandidacyService.java
index b28240826ec9f46484efa8c269396f879f800e07..174fd3eab4d0f0fdfa7a3ce947897a1338bda1a0 100644
--- a/src/main/java/com/example/gestionstagesbackend/services/CandidacyService.java
+++ b/src/main/java/com/example/gestionstagesbackend/services/CandidacyService.java
@@ -1,10 +1,9 @@
 package com.example.gestionstagesbackend.services;
 
-
-
 import com.example.gestionstagesbackend.model.Candidacy;
 import com.example.gestionstagesbackend.repositories.CandidacyRepository;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import java.util.List;
 import java.util.Optional;
 
@@ -20,8 +19,9 @@ public class CandidacyService {
         return candidacyRepository.findAll();
     }
 
+    @Transactional(readOnly = true)
     public Optional<Candidacy> getCandidacyById(Long id) {
-        return candidacyRepository.findById(id);
+        return candidacyRepository.findByIdWithRelations(id);
     }
 
     public Candidacy saveCandidacy(Candidacy candidacy) {
@@ -31,4 +31,8 @@ public class CandidacyService {
     public void deleteCandidacy(Long id) {
         candidacyRepository.deleteById(id);
     }
+
+    public List<Candidacy> getCandidaciesByStudentId(Long studentId) {
+        return candidacyRepository.findByStudentId(studentId);
+    }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/services/EnterpriseService.java b/src/main/java/com/example/gestionstagesbackend/services/EnterpriseService.java
index a1313996fd9ad7a625a8dcd8319319a26301e31b..eec1793227de4615df9fdd8ef404de3ccff41360 100644
--- a/src/main/java/com/example/gestionstagesbackend/services/EnterpriseService.java
+++ b/src/main/java/com/example/gestionstagesbackend/services/EnterpriseService.java
@@ -8,27 +8,26 @@ import org.springframework.stereotype.Service;
 import java.util.List;
 import java.util.Optional;
 
+
 @Service
 public class EnterpriseService {
+
     private final EnterpriseRepository enterpriseRepository;
 
     public EnterpriseService(EnterpriseRepository enterpriseRepository) {
         this.enterpriseRepository = enterpriseRepository;
     }
 
-    public List<Enterprise> getAllEnterprises() {
-        return enterpriseRepository.findAll();
+    public Enterprise saveEnterprise(Enterprise enterprise) {
+        return enterpriseRepository.save(enterprise);
     }
 
     public Optional<Enterprise> getEnterpriseById(Long id) {
         return enterpriseRepository.findById(id);
-    }
 
-    public Enterprise saveEnterprise(Enterprise enterprise) {
-        return enterpriseRepository.save(enterprise);
     }
 
-    public void deleteEnterprise(Long id) {
-        enterpriseRepository.deleteById(id);
+    public List<Enterprise> getAllEnterprises() {
+        return enterpriseRepository.findAll();
     }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/services/StageService.java b/src/main/java/com/example/gestionstagesbackend/services/StageService.java
new file mode 100644
index 0000000000000000000000000000000000000000..36d31ff4a821bb5822e9a34d89a12339992efee7
--- /dev/null
+++ b/src/main/java/com/example/gestionstagesbackend/services/StageService.java
@@ -0,0 +1,29 @@
+package com.example.gestionstagesbackend.services;
+
+import com.example.gestionstagesbackend.model.Stage;
+import com.example.gestionstagesbackend.repositories.StageRepository;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class StageService {
+    private final StageRepository stageRepository;
+
+    public StageService(StageRepository stageRepository) {
+        this.stageRepository = stageRepository;
+    }
+
+    public Stage saveStage(Stage stage) {
+        return stageRepository.save(stage);
+    }
+
+    public List<Stage> getAllStages() {
+        return stageRepository.findAll();
+    }
+
+    public Optional<Stage> getStageById(Long id) {
+        return stageRepository.findById(id);
+    }
+}
diff --git a/src/main/java/com/example/gestionstagesbackend/services/StudentService.java b/src/main/java/com/example/gestionstagesbackend/services/StudentService.java
index 8d9c9ca970fc20b12ad633b5db81e0a6868388ea..6c81c6909d27a21ad9e811296b1710e0855065f4 100644
--- a/src/main/java/com/example/gestionstagesbackend/services/StudentService.java
+++ b/src/main/java/com/example/gestionstagesbackend/services/StudentService.java
@@ -9,34 +9,21 @@ import java.util.Optional;
 
 @Service
 public class StudentService {
-
     private final StudentRepository studentRepository;
 
     public StudentService(StudentRepository studentRepository) {
         this.studentRepository = studentRepository;
     }
 
-    public List<Student> getAllStudents() {
-        return studentRepository.findAll();
-    }
-
-    public Optional<Student> getStudentById(Long id) {
-        return studentRepository.findById(id);
-    }
-
     public Student saveStudent(Student student) {
         return studentRepository.save(student);
     }
 
-    public Student updateStudent(Long id, Student studentDetails) {
-        return studentRepository.findById(id).map(student -> {
-            student.setFirstname(studentDetails.getFirstname());
-            student.setLastname(studentDetails.getLastname());
-            return studentRepository.save(student);
-        }).orElseThrow(() -> new RuntimeException("Student not found with id " + id));
+    public List<Student> getAllStudents() {
+        return studentRepository.findAll();
     }
 
-    public void deleteStudent(Long id) {
-        studentRepository.deleteById(id);
+    public Optional<Student> getStudentById(Long id) {
+        return studentRepository.findById(id);
     }
 }
diff --git a/src/main/java/com/example/gestionstagesbackend/services/UnivSupervisorService.java b/src/main/java/com/example/gestionstagesbackend/services/UnivSupervisorService.java
index fa10f8887b68cc5163da614042816953b4164da4..2bd38343a173b9e2df9ade00cae231430e6f2415 100644
--- a/src/main/java/com/example/gestionstagesbackend/services/UnivSupervisorService.java
+++ b/src/main/java/com/example/gestionstagesbackend/services/UnivSupervisorService.java
@@ -1,10 +1,9 @@
 package com.example.gestionstagesbackend.services;
 
-
-
 import com.example.gestionstagesbackend.model.UnivSupervisor;
 import com.example.gestionstagesbackend.repositories.UnivSupervisorRepository;
 import org.springframework.stereotype.Service;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -16,19 +15,19 @@ public class UnivSupervisorService {
         this.univSupervisorRepository = univSupervisorRepository;
     }
 
-    public List<UnivSupervisor> getAllSupervisors() {
+    public List<UnivSupervisor> getAllUnivSupervisors() {
         return univSupervisorRepository.findAll();
     }
 
-    public Optional<UnivSupervisor> getSupervisorById(Long id) {
+    public Optional<UnivSupervisor> getUnivSupervisorById(Long id) {
         return univSupervisorRepository.findById(id);
     }
 
-    public UnivSupervisor saveSupervisor(UnivSupervisor univSupervisor) {
+    public UnivSupervisor saveUnivSupervisor(UnivSupervisor univSupervisor) {
         return univSupervisorRepository.save(univSupervisor);
     }
 
-    public void deleteSupervisor(Long id) {
+    public void deleteUnivSupervisor(Long id) {
         univSupervisorRepository.deleteById(id);
     }
 }