diff --git a/domain/pom.xml b/domain/pom.xml
new file mode 100644
index 0000000..f55aaad
--- /dev/null
+++ b/domain/pom.xml
@@ -0,0 +1,22 @@
+
+
+
+ ms-library
+ org.example
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ domain
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+
\ No newline at end of file
diff --git a/domain/src/main/java/org/exemple/data/BookDto.java b/domain/src/main/java/org/exemple/data/BookDto.java
new file mode 100644
index 0000000..629b23d
--- /dev/null
+++ b/domain/src/main/java/org/exemple/data/BookDto.java
@@ -0,0 +1,21 @@
+package org.exemple.data;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class BookDto {
+
+ private Long id;
+
+ private String title;
+
+ private String description;
+
+ private Double price;
+}
\ No newline at end of file
diff --git a/domain/src/main/java/org/exemple/ports/api/BookServicePort.java b/domain/src/main/java/org/exemple/ports/api/BookServicePort.java
new file mode 100644
index 0000000..d9ae9e3
--- /dev/null
+++ b/domain/src/main/java/org/exemple/ports/api/BookServicePort.java
@@ -0,0 +1,18 @@
+package org.exemple.ports.api;
+
+import org.exemple.data.BookDto;
+
+import java.util.List;
+
+public interface BookServicePort {
+
+ BookDto addBook(BookDto bookDto);
+
+ void deleteBookById(Long id);
+
+ BookDto updateBook(BookDto bookDto);
+
+ List getBooks();
+
+ BookDto getBookById(Long bookId);
+}
diff --git a/domain/src/main/java/org/exemple/ports/spi/BookPersistencePort.java b/domain/src/main/java/org/exemple/ports/spi/BookPersistencePort.java
new file mode 100644
index 0000000..c7fb63d
--- /dev/null
+++ b/domain/src/main/java/org/exemple/ports/spi/BookPersistencePort.java
@@ -0,0 +1,19 @@
+package org.exemple.ports.spi;
+
+import org.exemple.data.BookDto;
+
+import java.util.List;
+
+public interface BookPersistencePort {
+
+ BookDto addBook(BookDto bookDto);
+
+ void deleteBookById(Long id);
+
+ BookDto updateBook(BookDto bookDto);
+
+ List getBooks();
+
+ BookDto getBookById(Long bookId);
+
+}
diff --git a/domain/src/main/java/org/exemple/service/BookServiceImpl.java b/domain/src/main/java/org/exemple/service/BookServiceImpl.java
new file mode 100644
index 0000000..1ff0106
--- /dev/null
+++ b/domain/src/main/java/org/exemple/service/BookServiceImpl.java
@@ -0,0 +1,41 @@
+package org.exemple.service;
+
+import org.exemple.data.BookDto;
+import org.exemple.ports.api.BookServicePort;
+import org.exemple.ports.spi.BookPersistencePort;
+
+import java.util.List;
+
+public class BookServiceImpl implements BookServicePort {
+
+ private BookPersistencePort bookPersistencePort;
+
+ public BookServiceImpl(BookPersistencePort bookPersistencePort) {
+ this.bookPersistencePort = bookPersistencePort;
+ }
+
+ @Override
+ public BookDto addBook(BookDto bookDto) {
+ return bookPersistencePort.addBook(bookDto);
+ }
+
+ @Override
+ public void deleteBookById(Long id) {
+ bookPersistencePort.deleteBookById(id);
+ }
+
+ @Override
+ public BookDto updateBook(BookDto bookDto) {
+ return bookPersistencePort.updateBook(bookDto);
+ }
+
+ @Override
+ public List getBooks() {
+ return bookPersistencePort.getBooks();
+ }
+
+ @Override
+ public BookDto getBookById(Long bookId) {
+ return bookPersistencePort.getBookById(bookId);
+ }
+}