diff --git a/back-skeleton/.mvn/wrapper/maven-wrapper.jar b/back-skeleton/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index cb28b0e37c7d206feb564310fdeec0927af4123a..0000000000000000000000000000000000000000
Binary files a/back-skeleton/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/back-skeleton/.mvn/wrapper/maven-wrapper.properties b/back-skeleton/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100644
index 2e76e189d2c795e3959d558905c2f111f053d7d2..0000000000000000000000000000000000000000
--- a/back-skeleton/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.4/apache-maven-3.9.4-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java
index f2f8aab8bbdbe4cb3fc66a2e61fc225785ad0cd6..64d86d75209f7514c80a5f4cd59ea3022e5cae9a 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java
@@ -13,7 +13,7 @@ public class StudentMapper {
                 .birthdate(dto.getBirthdate())
                 .courses(dto.getCourses())
                 .major(dto.getMajor())
-                .image(dto.getImage().isEmpty() ? dto.getImage().getBytes() : null)
+                .image(dto.getImage() == null ? null : dto.getImage().getBytes())
                 .build();
     }
 
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/services/StudentService.java b/back-skeleton/src/main/java/com/takima/backskeleton/services/StudentService.java
index 272a2887ea4654fc9be463c1ff6489c150249239..f8a8b5a249d379197d182a09dd88e4a1350cb8de 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/services/StudentService.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/services/StudentService.java
@@ -6,13 +6,15 @@ import com.takima.backskeleton.DTO.StudentMapper;
 import com.takima.backskeleton.models.Student;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
 
-@Component
+@Service
 @RequiredArgsConstructor
 public class StudentService {
     private final StudentDao studentDao;
@@ -28,10 +30,12 @@ public class StudentService {
         return studentDao.findById(id).orElseThrow();
     }
 
+    @Transactional
     public void deleteById(Long id) {
         studentDao.deleteById(id);
     }
 
+    @Transactional
     public void addStudent(StudentDto studentDto) {
         Student student;
         try {
@@ -42,6 +46,7 @@ public class StudentService {
         studentDao.save(student);
     }
 
+    @Transactional
     public void updateStudent(StudentDto studentDto, Long id) {
         studentDao.findById(id)
                 .orElseThrow(() -> new NoSuchElementException("Student doesn't exist"));
diff --git a/epf-front-skeleton-main/src/app/app.module.ts b/epf-front-skeleton-main/src/app/app.module.ts
index f1dfdf41059d5bf70f78ad6570ff3ae8dd191a14..dcf8a2e0276b005f438af94910faec488652e26e 100644
--- a/epf-front-skeleton-main/src/app/app.module.ts
+++ b/epf-front-skeleton-main/src/app/app.module.ts
@@ -15,6 +15,7 @@ import { MatButtonModule } from "@angular/material/button"
 import { MajorsComponent } from "majors/majors.component"
 import { MajorStudentsComponent } from "majors/major-students/major-students.component"
 import { ResearchComponent } from "students/research/research.component"
+import { HttpClientModule } from "@angular/common/http"
 
 @NgModule({
   declarations: [
@@ -35,6 +36,7 @@ import { ResearchComponent } from "students/research/research.component"
     FormsModule,
     MatIconModule,
     MatButtonModule,
+    HttpClientModule,
   ],
   providers: [],
   bootstrap: [AppComponent],
diff --git a/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.html b/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.html
index 803456e3fc41810c90b4ac91157b4bae8eacfe58..cd8c378bf9d759ba0bb1b8afb038fdf9a17147c9 100644
--- a/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.html
+++ b/epf-front-skeleton-main/src/app/majors/major-students/major-students.component.html
@@ -15,7 +15,7 @@
     <tr *ngFor="let student of (studentsFromMajor.students)">
       <td>{{ student.firstName }}</td>
       <td>{{ student.lastName }}</td>
-      <td>{{ student.birthDate | date : "dd/MM/yyyy" }}</td>
+      <td>{{ student.birthdate | date : "dd/MM/yyyy" }}</td>
       <td>{{ student.major!!.name }}</td>
     </tr>
   </ng-container>
diff --git a/epf-front-skeleton-main/src/app/models/student.model.ts b/epf-front-skeleton-main/src/app/models/student.model.ts
index af821a27cf9180b36a7d3668ada7153cd22433b3..c9d7f015b6709569af44e16fd22b8cad56aa4ad0 100644
--- a/epf-front-skeleton-main/src/app/models/student.model.ts
+++ b/epf-front-skeleton-main/src/app/models/student.model.ts
@@ -6,7 +6,7 @@ export interface Student {
   image?: string
   firstName: string
   lastName: string
-  birthDate?: Date
+  birthdate?: Date
   courses?: Course[]
   major: Major
 }
diff --git a/epf-front-skeleton-main/src/app/services/constantsMock.service.ts b/epf-front-skeleton-main/src/app/services/constantsMock.service.ts
index 17bd42bf05a0993b0157dc6ef34cca8ea3ef6ed7..05b709a46289a3acb5f451128103bf2d739f7405 100644
--- a/epf-front-skeleton-main/src/app/services/constantsMock.service.ts
+++ b/epf-front-skeleton-main/src/app/services/constantsMock.service.ts
@@ -34,7 +34,7 @@ export class ConstantsMockService {
     firstName: "Harry",
     lastName: "Cover",
     major: this.mem,
-    birthDate: new Date("1998-10-10"),
+    birthdate: new Date("1998-10-10"),
     courses: [this.german, this.termo],
     id: 1n,
   }
@@ -42,7 +42,7 @@ export class ConstantsMockService {
     firstName: "Jacques",
     lastName: "Climate",
     major: this.mee,
-    birthDate: new Date("1999-11-07"),
+    birthdate: new Date("1999-11-07"),
     courses: [this.german, this.termo],
     id: 2n,
   }
@@ -50,7 +50,7 @@ export class ConstantsMockService {
     firstName: "Alain",
     lastName: "Parfait",
     major: this.min,
-    birthDate: new Date("1999-04-12"),
+    birthdate: new Date("1999-04-12"),
     courses: [this.german, this.ioT, this.java],
     id: 3n,
   }
@@ -58,7 +58,7 @@ export class ConstantsMockService {
     firstName: "Cathy",
     lastName: "Mini",
     major: this.mde,
-    birthDate: new Date("1999-05-12"),
+    birthdate: new Date("1999-05-12"),
     courses: [this.spanish, this.math, this.java],
     id: 4n,
   }
@@ -66,7 +66,7 @@ export class ConstantsMockService {
     firstName: "Côme",
     lastName: "Toulemonde",
     major: this.mis,
-    birthDate: new Date("1999-07-16"),
+    birthdate: new Date("1999-07-16"),
     courses: [this.spanish, this.anatomie, this.math],
     id: 5n,
   }
diff --git a/epf-front-skeleton-main/src/app/services/course.service.ts b/epf-front-skeleton-main/src/app/services/course.service.ts
index c79212d65b7f0f60dada444dd96c7aaca687372c..bddda45df6e6379d3a8d0d59fde1e4b3a808734a 100644
--- a/epf-front-skeleton-main/src/app/services/course.service.ts
+++ b/epf-front-skeleton-main/src/app/services/course.service.ts
@@ -2,16 +2,23 @@ import { Injectable } from "@angular/core"
 import { Observable } from "rxjs"
 import { Course } from "models/course.model"
 import { ConstantsMockService } from "./constantsMock.service"
+import { HttpClient } from "@angular/common/http"
 
 @Injectable({
   providedIn: "root",
 })
 export class CourseService {
-  constructor(private constantsMockService: ConstantsMockService) {
+  constructor(private constantsMockService: ConstantsMockService, private http: HttpClient) {
   }
 
-  // FIXME : change to api call with httpclient
+  private coursesUrl = "http://localhost:8080/api/courses"
+
+  // // FIXME : change to api call with httpclient
+  // findAll(): Observable<Course[]> {
+  //   return new Observable((observer) => observer.next(this.constantsMockService.courses))
+  // }
+
   findAll(): Observable<Course[]> {
-    return new Observable((observer) => observer.next(this.constantsMockService.courses))
+    return this.http.get<Course[]>(this.coursesUrl)
   }
 }
diff --git a/epf-front-skeleton-main/src/app/services/major.service.ts b/epf-front-skeleton-main/src/app/services/major.service.ts
index eac8a4a6a6f0923ef4bc5a679bf904a6433e3975..87cafcb4fa5d3bc8aeb4f571e743b5335b75294f 100644
--- a/epf-front-skeleton-main/src/app/services/major.service.ts
+++ b/epf-front-skeleton-main/src/app/services/major.service.ts
@@ -4,16 +4,23 @@ import { Major } from "models/major.model"
 import { MajorStudentsDto } from "models/dto/MajorStudentsDto"
 import { MajorsAndCoursesDto } from "models/dto/majorsAndCoursesDto"
 import { ConstantsMockService } from "./constantsMock.service"
+import { HttpClient } from "@angular/common/http"
 
 @Injectable({
   providedIn: "root",
 })
 export class MajorService {
-  constructor(private constantsMockService: ConstantsMockService) {
+  constructor(private constantsMockService: ConstantsMockService, private http: HttpClient) {
   }
 
+  private majorUrl = "http://localhost:8080/majors"
+
+  // findAll(): Observable<Major[]> {
+  //   return new Observable((observer) => observer.next(this.constantsMockService.majors))
+  // }
+
   findAll(): Observable<Major[]> {
-    return new Observable((observer) => observer.next(this.constantsMockService.majors))
+    return this.http.get<Major[]>(this.majorUrl)
   }
 
   findStudentsFromMajor(majorId: string): Observable<MajorStudentsDto> {
diff --git a/epf-front-skeleton-main/src/app/services/student.service.ts b/epf-front-skeleton-main/src/app/services/student.service.ts
index 12e9462d10ac43381ea014694e003efa0e738346..0522c9a49f4d27cedecba140baed24cde18d90cf 100644
--- a/epf-front-skeleton-main/src/app/services/student.service.ts
+++ b/epf-front-skeleton-main/src/app/services/student.service.ts
@@ -4,22 +4,38 @@ import { Student } from "models/student.model"
 import { Course } from "models/course.model"
 import { ConstantsMockService } from "./constantsMock.service"
 import { MajorsAndCoursesDto } from "models/dto/majorsAndCoursesDto"
+import { HttpClient } from "@angular/common/http"
 
 @Injectable({
   providedIn: "root",
 })
 export class StudentService {
-  constructor(private constantsMockService: ConstantsMockService) {
+  constructor(private constantsMockService: ConstantsMockService, private http: HttpClient) {
   }
 
-  // FIXME : change to api call with httpclient
+  private studentsUrl = "http://localhost:8080/students"
+
   findAll(): Observable<Student[]> {
-    return new Observable((observer) => observer.next(this.constantsMockService.students))
+    return this.http.get<Student[]>(this.studentsUrl)
   }
 
-  // FIXME : unmock me !
   findById(id: number): Observable<Student> {
-    return new Observable((observer) => observer.next(this.constantsMockService.students.find((s) => s.id === BigInt(id))))
+    return this.http.get<Student>(this.studentsUrl + `/${id}` )
+  }
+
+  update(id: number, student: Student): Observable<Student> {
+    return this.http.post<Student>(this.studentsUrl + `/${id}`, student)
+  }
+
+  create(student: Student): Observable<Student> {
+    return this.http.post<Student>(this.studentsUrl, student)
+  }
+
+  delete(student: Student) {
+    const index = this.constantsMockService.students.indexOf(student)
+    if (index > -1) {
+      this.constantsMockService.students.splice(index, 1)
+    }
   }
 
   addCourseToStudent(student: Student, course: Course) {
@@ -39,22 +55,15 @@ export class StudentService {
     return student
   }
 
-  save(student: Student) {
-    const index = this.constantsMockService.students.indexOf(student)
-    if (index > -1) {
-      this.constantsMockService.students.splice(index, 1, student)
-    } else {
-      student.id = BigInt(this.constantsMockService.students.length + 1)
-      this.constantsMockService.students.push(student)
-    }
-  }
-
-  delete(student: Student) {
-    const index = this.constantsMockService.students.indexOf(student)
-    if (index > -1) {
-      this.constantsMockService.students.splice(index, 1)
-    }
-  }
+  // save(student: Student) {
+  //   const index = this.constantsMockService.students.indexOf(student)
+  //   if (index > -1) {
+  //     this.constantsMockService.students.splice(index, 1, student)
+  //   } else {
+  //     student.id = BigInt(this.constantsMockService.students.length + 1)
+  //     this.constantsMockService.students.push(student)
+  //   }
+  // }
 
   searchByMajorAndCourse(majorsAndCoursesDto: MajorsAndCoursesDto): Observable<Student[]> {
     return new Observable((observer) => observer.next(this.constantsMockService.students.filter(s => s.major.id === majorsAndCoursesDto.majors[0].id && s.courses?.includes(majorsAndCoursesDto.courses[0]))))
diff --git a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.html b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.html
index 43a48fb0dafbafe219ee30432736d33a70ba25a4..ed5d893ca428b9c0239d023909dd972564557c8c 100644
--- a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.html
+++ b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.html
@@ -2,10 +2,10 @@
   <h1>Student's personal data</h1>
   <form (ngSubmit)="save(student)" #studentForm="ngForm">
     <div class="form-group">
-      <label for="firstName">Picture</label>
+      <label for="image">Picture</label>
       <input type="file" class="form-control" id="image"
-        required
-        [(ngModel)]="student.image">
+
+        [(ngModel)]="student.image" name="image">
     </div>
     <div class="form-group">
       <label for="firstName">First Name</label>
@@ -33,7 +33,7 @@
       <label for="birthDate">Birthdate</label>
       <input type="date" class="form-control" id="birthDate"
              required
-             [ngModel]="student.birthDate | date:'yyyy-MM-dd'" name="birthDate"
+             [ngModel]="student.birthdate | date:'yyyy-MM-dd'" name="birthDate"
              #birthDate="ngModel" (ngModelChange)="updateBirthdate($event, student)">
       <div [hidden]="birthDate.pristine && birthDate.untouched || birthDate.value !== today.toISOString().slice(0, 10)"
            class="alert alert-danger">
diff --git a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.scss b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.scss
index 3a7aaf2a0efad79cb926f4dd4301099d8e500679..d9bf7edba0d899ad4e299e2ed57899de1dff358c 100644
--- a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.scss
+++ b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.scss
@@ -4,8 +4,7 @@
   display: flex;
   flex-direction: column;
   padding: 30px;
-  color: theme.$white;
-  h1 {
+  color: theme.$white h1 {
     color: theme.$common-purple;
     font-size: xx-large;
   }
diff --git a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.ts b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.ts
index e090df44a181bc2e5aee1ad4ccab02d5cab025b5..ab90308aabc6c478b8ee5b629bdfec324370b365 100644
--- a/epf-front-skeleton-main/src/app/students/student-details/student-details.component.ts
+++ b/epf-front-skeleton-main/src/app/students/student-details/student-details.component.ts
@@ -43,12 +43,17 @@ export class StudentDetailsComponent {
   }
 
   save(student: Student) {
-    this.studentService.save(student)
+    const id = this._route.snapshot.params["id"]
+    if (id == "new") {
+      this.studentService.create(student).subscribe()
+    } else {
+      this.studentService.update(id, student).subscribe() // todo mettre à jour le listing
+    }
     this.router.navigate(["students"])
   }
 
   // because the format of the date doesn't fit date picker
   updateBirthdate($event: any, student: Student) {
-    student.birthDate = new Date($event)
+    student.birthdate = new Date($event)
   }
 }
diff --git a/epf-front-skeleton-main/src/app/students/student-details/student-details.resolver.ts b/epf-front-skeleton-main/src/app/students/student-details/student-details.resolver.ts
index 57808c25414f266c6323998f3e945b14143ae20d..8616ba2c100be119979acc4f059e2803c8dcc7c0 100644
--- a/epf-front-skeleton-main/src/app/students/student-details/student-details.resolver.ts
+++ b/epf-front-skeleton-main/src/app/students/student-details/student-details.resolver.ts
@@ -16,6 +16,6 @@ export class StudentDetailsResolver implements Resolve<Student> {
     if (route.params["id"] == "new") {
       return new Observable((observer) => observer.next({firstName: "", lastName: "", major: {name: "", description: "", students: []}}))
     }
-    return this.studentService.findById(parseInt(route.paramMap.get("id")!!, 10))
+    return this.studentService.findById(parseInt(route.params["id"], 10))
   }
 }
diff --git a/epf-front-skeleton-main/src/app/students/students.component.html b/epf-front-skeleton-main/src/app/students/students.component.html
index ad3be37d0c16625cfa597bbf2f8145dd6792716e..35fb8955cc308168360ab18038f2cae6f8ca39e2 100644
--- a/epf-front-skeleton-main/src/app/students/students.component.html
+++ b/epf-front-skeleton-main/src/app/students/students.component.html
@@ -18,10 +18,11 @@
   <tr *ngFor="let student of (students$ | async)" routerLink="/student-details/{{student.id}}">
     <td>
       <img src="assets/defaultPicture.svg" alt="Photo manquante">
+<!--  todo remplacer cette image par celle récupéré dans le backend -->
     </td>
     <td>{{ student.firstName }}</td>
     <td>{{ student.lastName }}</td>
-    <td>{{ student.birthDate | date : "dd/MM/yyyy" }}</td>
+    <td>{{ student.birthdate | date : "dd/MM/yyyy" }}</td>
     <td>{{ student.major!!.name }}</td>
     <td>
       <button mat-icon-button color="warn" (click)="deleteStudent(student)">