diff --git a/pom.xml b/pom.xml
index f6f35e0f21bf73fa5e3ec792cb788640471aecaa..39fff25f0769e449ac776a1e0e2ce078eb4d20b6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,6 +60,10 @@
 			<artifactId>spring-boot-starter-test</artifactId>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-validation</artifactId>
+		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Meeting.java b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Meeting.java
new file mode 100644
index 0000000000000000000000000000000000000000..724a4f728abf803e4c184e74a620905a31d14e09
--- /dev/null
+++ b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Meeting.java
@@ -0,0 +1,37 @@
+package fr.but.infoetu.MeetingPlannr.pojo;
+
+import java.sql.Date;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Entity
+@AllArgsConstructor
+@Data
+@NoArgsConstructor
+public class Meeting {
+    private static final String REQUIRED = "is required";
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private int mno;
+
+    @ManyToOne
+    @JoinColumn(name = "rno")
+    private Request request;
+
+    @ManyToOne
+    @JoinColumn(name = "rno")
+    private User user;
+
+    @NotNull(message = REQUIRED)
+    private Date date;
+}
diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Request.java b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Request.java
new file mode 100644
index 0000000000000000000000000000000000000000..002d7abcd621753b914d18111fbe73031b71767e
--- /dev/null
+++ b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/Request.java
@@ -0,0 +1,28 @@
+package fr.but.infoetu.MeetingPlannr.pojo;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Entity
+@AllArgsConstructor
+@Data
+@NoArgsConstructor
+public class Request {
+    private static final String REQUIRED = "is required";
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private int rno;
+
+    @NotNull(message = REQUIRED)
+    private String reason;
+
+    @NotNull(message = REQUIRED)
+    private String description;
+}
diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ae05b33a3bf8c83b2a06289fb81a4062d237443
--- /dev/null
+++ b/src/main/java/fr/but/infoetu/MeetingPlannr/pojo/User.java
@@ -0,0 +1,53 @@
+package fr.but.infoetu.MeetingPlannr.pojo;
+
+import java.sql.Date;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.PastOrPresent;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Entity
+@AllArgsConstructor
+@Data
+@NoArgsConstructor
+public class User {
+    private static final String REQUIRED = "is required";
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private int uno;
+
+    @NotNull(message = REQUIRED)
+    @Email(message = "email not valid")
+    private String email;
+
+    @NotNull(message = REQUIRED)
+    private String name;
+
+    @NotNull(message = REQUIRED)
+    private String surname;
+
+    @NotNull(message = REQUIRED)
+    @Pattern(
+        regexp = "^0[1-9]([-. ]?[0-9]{2}){4}$", 
+        message = "invalid phone number"
+    )
+    private String phoneNumber;
+
+    @NotNull(message = REQUIRED)
+    @PastOrPresent(message = "date must be within the past")
+    private Date birthdate;
+
+    @NotNull(message = REQUIRED)
+    @Size(min = 8, message = "password too short")
+    private String password;
+}
diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/MeetingRepository.java b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/MeetingRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4225a7c86c62281e156772b65319f2cd6a5cef8
--- /dev/null
+++ b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/MeetingRepository.java
@@ -0,0 +1,9 @@
+package fr.but.infoetu.MeetingPlannr.repository;
+
+import org.springframework.data.repository.CrudRepository;
+
+import fr.but.infoetu.MeetingPlannr.pojo.Meeting;
+
+public interface MeetingRepository extends CrudRepository<Meeting, Integer>{
+    
+}
diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/RequestRepository.java b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/RequestRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..6385482b73888c11a57d80678e7b7ac2103eb131
--- /dev/null
+++ b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/RequestRepository.java
@@ -0,0 +1,9 @@
+package fr.but.infoetu.MeetingPlannr.repository;
+
+import org.springframework.data.repository.CrudRepository;
+
+import fr.but.infoetu.MeetingPlannr.pojo.Request;
+
+public interface RequestRepository extends CrudRepository<Request, Integer>{
+    
+}
diff --git a/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..3905be5a4e747829a4161735f2e74a11f1caa7ef
--- /dev/null
+++ b/src/main/java/fr/but/infoetu/MeetingPlannr/repository/UserRepository.java
@@ -0,0 +1,9 @@
+package fr.but.infoetu.MeetingPlannr.repository;
+
+import org.springframework.data.repository.CrudRepository;
+
+import fr.but.infoetu.MeetingPlannr.pojo.User;
+
+public interface UserRepository extends CrudRepository<User, Integer>{
+    
+}