diff --git a/back-skeleton/initdb/1_TABLES.sql b/back-skeleton/initdb/1_TABLES.sql
new file mode 100644
index 0000000000000000000000000000000000000000..41a112f00f367c34f469e63b2c04f61036405f9d
--- /dev/null
+++ b/back-skeleton/initdb/1_TABLES.sql
@@ -0,0 +1,29 @@
+create table students
+(
+    id SERIAL PRIMARY KEY,
+    first_name TEXT not null,
+    last_name TEXT not null,
+    birthdate date null,
+    major_id int null
+);
+
+create table majors
+(
+    id SERIAL PRIMARY KEY,
+    name TEXT not null,
+    description TEXT not null
+);
+
+create table courses
+(
+    id SERIAL PRIMARY KEY,
+    name TEXT not null,
+    hours int not null
+);
+
+create table student_course
+(
+    id SERIAL PRIMARY KEY,
+    student_id int not null,
+    course_id int not null
+);
diff --git a/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql b/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
new file mode 100644
index 0000000000000000000000000000000000000000..8cc78f609f6c7767f00c7b8015519ea10cb3eae5
--- /dev/null
+++ b/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
@@ -0,0 +1,8 @@
+INSERT INTO majors (id, name, description) VALUES (1, 'MIN', 'Ouaiiis du code partout');
+
+INSERT INTO students (id, first_name, last_name, birthdate, major_id) VALUES (1, 'Paul', 'Harrohide', '2002-06-15', 1);
+
+INSERT INTO courses (id, name, hours) VALUES (1, 'Java', 30);
+INSERT INTO student_course (id, student_id, course_id) VALUES (1, 1, 1);
+
+
diff --git a/back-skeleton/pom.xml b/back-skeleton/pom.xml
index 9c08aa8f2eb5604c9ee19a31340788fd4e4d7fe2..6621302882fbfa0a590f8822b56e2806c602417a 100644
--- a/back-skeleton/pom.xml
+++ b/back-skeleton/pom.xml
@@ -15,6 +15,7 @@
 	<description>Skeleton of an API project</description>
 	<properties>
 		<java.version>17</java.version>
+		<lombok.version>1.18.20</lombok.version>
 	</properties>
 	<dependencies>
 		<dependency>
@@ -36,6 +37,12 @@
 			<artifactId>spring-boot-starter-test</artifactId>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<version>${lombok.version}</version>
+			<scope>provided</scope>
+		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/models/Course.java b/back-skeleton/src/main/java/com/takima/backskeleton/models/Course.java
new file mode 100644
index 0000000000000000000000000000000000000000..a420a6951fd0eed71c043f84ec0732a0746f95fc
--- /dev/null
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/models/Course.java
@@ -0,0 +1,19 @@
+package com.takima.backskeleton.models;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import lombok.Builder;
+import lombok.NoArgsConstructor;
+
+@Entity(name = "courses")
+@NoArgsConstructor
+public class Course {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+    private Integer hours;
+
+}
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/models/Major.java b/back-skeleton/src/main/java/com/takima/backskeleton/models/Major.java
new file mode 100644
index 0000000000000000000000000000000000000000..6224e27fd4a751d23a6bb84fd9471d3c132ed616
--- /dev/null
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/models/Major.java
@@ -0,0 +1,21 @@
+package com.takima.backskeleton.models;
+
+import jakarta.persistence.*;
+import lombok.Builder;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Entity(name = "majors")
+@NoArgsConstructor
+public class Major {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+    private String description;
+    @OneToMany(mappedBy = "major")
+    private List<Student> students;
+
+}
+
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java b/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java
new file mode 100644
index 0000000000000000000000000000000000000000..af85a479e153a086545282eb9a47ea6f388bce4e
--- /dev/null
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java
@@ -0,0 +1,80 @@
+package com.takima.backskeleton.models;
+
+import jakarta.persistence.*;
+
+import java.time.Instant;
+import java.util.List;
+
+@Entity
+@Table(name= "students")
+public class Student {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    @Column(name = "first_name")
+    private String firstName;
+    @Column(name = "last_name")
+    private String lastName;
+    private Instant birthdate;
+    @ManyToMany(mappedBy="student")
+    @JoinTable(
+            name = "student_course",
+            joinColumns = @JoinColumn(name = "student_id"),
+            inverseJoinColumns = @JoinColumn(name = "course_id"))
+    private List<Course> courses;
+    @ManyToOne()
+    @JoinColumn(name = "major_id")
+    private Major major;
+
+    private Student(Builder builder) {
+        this.id = builder.id;
+        this.firstName = builder.firstName;
+        this.lastName = builder.lastName;
+        this.birthdate = builder.birthdate;
+        this.courses = builder.courses;
+        this.major = builder.major;
+    }
+    public Student(){
+    }
+
+    public static class Builder {
+        private final Long id;
+        private String firstName;
+        private String lastName;
+        private Instant birthdate;
+        private List<Course> courses;
+        private Major major;
+
+        public Builder(Long id) {
+            this.id = id;
+        }
+
+        public Builder firstName(String firstName) {
+            this.firstName = firstName;
+            return this;
+        }
+        public Builder lastName(String lastName) {
+            this.lastName = lastName;
+            return this;
+        }
+        public Builder courses(List<Course> courses) {
+            this.courses = courses;
+            return this;
+        }
+        public Builder major(Major major) {
+            this.major = major;
+            return this;
+        }
+        public Builder birthdate(Instant birthdate) {
+            this.birthdate = birthdate;
+            return this;
+        }
+
+        public Student build() {
+            return new Student(this);
+        }
+    }
+
+
+
+}