diff --git a/src/main/java/com/hepia/demobdd/controller/UserController.java b/src/main/java/com/hepia/demobdd/controller/UserController.java
new file mode 100644
index 0000000000000000000000000000000000000000..09f88bccb6726f2790e2f7b13e37a5e38b0a48e3
--- /dev/null
+++ b/src/main/java/com/hepia/demobdd/controller/UserController.java
@@ -0,0 +1,37 @@
+package com.hepia.demobdd.controller;
+
+import com.hepia.demobdd.entity.User;
+import com.hepia.demobdd.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/users")
+public class UserController {
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @GetMapping
+    public List<User> getAllUsers() {
+        return userRepository.findAll();
+    }
+
+    @GetMapping("/{id}")
+    public User getUserById(@PathVariable Long id) {
+        return userRepository.findById(id).orElse(null);
+    }
+
+    @GetMapping("/search")
+    public List<User> getUserByName(@RequestParam String name) {
+        return userRepository.findByName(name);
+    }
+
+    @PostMapping
+    public User createUser(@RequestBody User user) {
+        return userRepository.save(user);
+    }
+
+}
diff --git a/src/main/java/com/hepia/demobdd/entity/User.java b/src/main/java/com/hepia/demobdd/entity/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..14dc2cf150fb814c31c42f7c3611b7642ff00fba
--- /dev/null
+++ b/src/main/java/com/hepia/demobdd/entity/User.java
@@ -0,0 +1,47 @@
+package com.hepia.demobdd.entity;
+
+import jakarta.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+
+@Entity
+public class User {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+    private String email;
+
+    //#region getters
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+    //#endregion
+
+    //#region setters
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+    //#endregion
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/hepia/demobdd/repository/UserRepository.java b/src/main/java/com/hepia/demobdd/repository/UserRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..774ea2cb439c52cacb525565e493774bde1c6c28
--- /dev/null
+++ b/src/main/java/com/hepia/demobdd/repository/UserRepository.java
@@ -0,0 +1,11 @@
+package com.hepia.demobdd.repository;
+
+import com.hepia.demobdd.entity.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface UserRepository extends JpaRepository<User, Long> {
+    List<User> findByName(String name);
+
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 8b137891791fe96927ad78e64b0aad7bded08bdc..c0a7fae5f69294480d5e6e9026f92b26e5706976 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,7 @@
+spring.datasource.url=jdbc:mariadb://localhost:3308/demo-bdd
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
 
+spring.flyway.enabled=true
+spring.flyway.baseline-on-migrate=true
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V1__Init_user_table.sql b/src/main/resources/db/migration/V1__Init_user_table.sql
new file mode 100644
index 0000000000000000000000000000000000000000..36ccb6bb724a5fbe9ab792d76398dfed5c5e745a
--- /dev/null
+++ b/src/main/resources/db/migration/V1__Init_user_table.sql
@@ -0,0 +1,5 @@
+CREATE TABLE user (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    name VARCHAR(255),
+    email VARCHAR(255)
+);
diff --git a/src/main/resources/docker-compose.yml b/src/main/resources/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e06a834d2b737acce9f174f668bc10f55d61f8b3
--- /dev/null
+++ b/src/main/resources/docker-compose.yml
@@ -0,0 +1,22 @@
+version: '3.1'
+
+services:
+  db:
+    image: mariadb:10.6
+    restart: always
+    environment:
+      MYSQL_ROOT_PASSWORD: root
+    volumes:
+      - mariadb_data:/var/lib/mysql
+      - mariadb_tmp:/tmp
+    ports:
+      - 3308:3306
+
+  phpmyadmin:
+    image: phpmyadmin
+    restart: always
+    ports:
+      - 8082:80
+volumes:
+  mariadb_data:
+  mariadb_tmp:
\ No newline at end of file