diff --git a/src/main/java/com/pt/service/AdminService.java b/src/main/java/com/pt/service/AdminService.java
new file mode 100644
index 0000000..a4ce98a
--- /dev/null
+++ b/src/main/java/com/pt/service/AdminService.java
@@ -0,0 +1,23 @@
+package com.pt.service;
+
+import com.pt.entity.Admin;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.pt.repository.AdminRepository;
+
+@Service
+public class AdminService {
+
+    @Autowired
+    private AdminRepository adminRepository;
+
+    public AdminService(AdminRepository adminRepository) {
+        this.adminRepository = adminRepository;
+    }
+
+    public Admin findByUsernameAndPassword(String username, String password) {
+        return adminRepository.findByUsernameAndPassword(username, password);
+    }
+
+}
diff --git a/src/main/java/com/pt/service/PostService.java b/src/main/java/com/pt/service/PostService.java
new file mode 100644
index 0000000..f1ab50e
--- /dev/null
+++ b/src/main/java/com/pt/service/PostService.java
@@ -0,0 +1,50 @@
+package com.pt.service;
+
+import com.pt.entity.Post;
+import com.pt.repository.PostRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Service
+public class PostService {
+
+    @Autowired
+    private PostRepository postRepository;
+
+    public void createPost(String title, String content, String author) {
+        System.out.println("Post created with title: " + title);
+        postRepository.save(new Post(title, content, author));
+    }
+
+    public Post findPostByTitle(String title) {
+        return postRepository.findByTitle(title);
+    }
+
+    public List<Post> listByAuthor(String author) {
+        return postRepository.listByAuthor(author);
+    }
+
+    public List<Post> listByTitle(String title) {
+        return postRepository.listByTitle(title);
+    }
+
+    public List<Post> listByDate(String date) {
+        LocalDate nDate  = LocalDate.parse(date);
+        return postRepository.listByDate(nDate);
+    }
+
+    public List<Post> listAll() {
+        return postRepository.findAll();
+    }
+
+    public void deletePost(Post p) {
+        postRepository.delete(p);
+    }
+
+    public Post findPostById(int id) {
+        return postRepository.findById(id).orElse(null);
+    }
+}
diff --git a/src/main/java/com/pt/service/UserService.java b/src/main/java/com/pt/service/UserService.java
index 7025e5a..bdffeea 100644
--- a/src/main/java/com/pt/service/UserService.java
+++ b/src/main/java/com/pt/service/UserService.java
@@ -5,6 +5,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class UserService {
 
@@ -42,4 +44,8 @@
     public void deleteById(String uid) {
         userRepository.deleteById(uid);
     }
+
+    public List<User> listAll() {
+        return userRepository.findAll();
+    }
 }
