diff --git a/src/app/controllers/User/GetDataPostController.php b/src/app/controllers/User/GetDataPostController.php
new file mode 100644
index 0000000000000000000000000000000000000000..068f463e6ff22a5e1b086114ac9866c40f1b81c1
--- /dev/null
+++ b/src/app/controllers/User/GetDataPostController.php
@@ -0,0 +1,45 @@
+<?php
+
+
+
+require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php";
+require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php";
+
+class GetDataPostController extends BaseController{
+    protected static $instance;
+    private function __construct($srv){
+        parent::__construct($srv);
+    }
+    public static function getInstance(){
+        if(!isset(self::$instance)){
+            self::$instance = new static(GetPostModel::getInstance());
+        }
+        return self::$instance;
+    }
+    
+    public function get($urlParams){
+        $idowner = $urlParams[0];
+        $data = $this->srv->getDataPostByOwner($idowner);
+        if($data!=null){
+            header('Content-Type: application/json');
+            return json_encode(array(
+                'status' => 'success',
+                'message' => 'Success to get data post',
+                'data' => $data
+            ));
+        }
+        else{
+            header('Content-Type: application/json');
+            return json_encode(array(
+                'status' => 'failed',
+                'message' => 'Failed to get data post',
+            ));
+        }
+    }
+
+}
+
+
+
+
+?>
\ No newline at end of file
diff --git a/src/app/controllers/User/GetDataPostIDController.php b/src/app/controllers/User/GetDataPostIDController.php
new file mode 100644
index 0000000000000000000000000000000000000000..66252ead470f16f6d21226b5d48c04e580c9f460
--- /dev/null
+++ b/src/app/controllers/User/GetDataPostIDController.php
@@ -0,0 +1,46 @@
+<?php
+
+
+
+require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php";
+require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php";
+
+class GetDataPostIDController extends BaseController{
+    protected static $instance;
+    private function __construct($srv){
+        parent::__construct($srv);
+    }
+    public static function getInstance(){
+        if(!isset(self::$instance)){
+            self::$instance = new static(GetPostModel::getInstance());
+        }
+        return self::$instance;
+    }
+    
+    public function get($urlParams){
+        $idowner = $urlParams[0];
+        $idpost = $urlParams[1];
+        $data = $this->srv->getDataPostIDByOwner($idowner,$idpost);
+        if($data!=null){
+            header('Content-Type: application/json');
+            return json_encode(array(
+                'status' => 'success',
+                'message' => 'Success to get data post',
+                'data' => $data
+            ));
+        }
+        else{
+            header('Content-Type: application/json');
+            return json_encode(array(
+                'status' => 'failed',
+                'message' => 'Failed to get data post',
+            ));
+        }
+    }
+
+}
+
+
+
+
+?>
\ No newline at end of file
diff --git a/src/app/controllers/User/GetFollowsController.php b/src/app/controllers/User/GetFollowsController.php
new file mode 100644
index 0000000000000000000000000000000000000000..89f9e7c6612c18fdac84a7eb824ed88a998997af
--- /dev/null
+++ b/src/app/controllers/User/GetFollowsController.php
@@ -0,0 +1,45 @@
+<?php
+
+
+
+require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php";
+require_once SRC_ROOT_PATH . "/app/models/GetPostModel.php";
+
+class GetFollowsController extends BaseController{
+    protected static $instance;
+    private function __construct($srv){
+        parent::__construct($srv);
+    }
+    public static function getInstance(){
+        if(!isset(self::$instance)){
+            self::$instance = new static(GetPostModel::getInstance());
+        }
+        return self::$instance;
+    }
+    
+    public function get($urlParams){
+        $idowner = $urlParams[0];
+        $data = $this->srv->getFollows($idowner);
+        if($data!=null){
+            header('Content-Type: application/json');
+            return json_encode(array(
+                'status' => 'success',
+                'message' => 'Success to get data follows',
+                'data' => $data
+            ));
+        }
+        else{
+            header('Content-Type: application/json');
+            return json_encode(array(
+                'status' => 'failed',
+                'message' => 'Failed to get data follows',
+            ));
+        }
+    }
+
+}
+
+
+
+
+?>
\ No newline at end of file
diff --git a/src/app/models/GetPostModel.php b/src/app/models/GetPostModel.php
new file mode 100644
index 0000000000000000000000000000000000000000..f28ed02f6ff2266ab867436eeeeca0ad647a9bb3
--- /dev/null
+++ b/src/app/models/GetPostModel.php
@@ -0,0 +1,130 @@
+<?php
+
+require_once SRC_ROOT_PATH . "/app/baseclasses/BaseModel.php";
+require_once SRC_ROOT_PATH . "/app/core/PDOHandler.php";
+
+class GetPostModel
+{
+    protected static $instance;
+
+
+    public static function getInstance()
+    {
+        if (!isset(self::$instance)) {
+            self::$instance = new static();
+        }
+        return self::$instance;
+    }
+
+    public function getFollows($id){
+        try{
+            $db = PDOHandler::getInstance()->getPDO();
+            $sql = "SELECT DATE(created_at) as day, COUNT(followed_user_id) as total from follows WHERE followed_user_id=$id GROUP BY day ORDER BY day DESC LIMIT 7;";
+            $result = $db->query($sql);
+            if($result){
+                $data = $result->fetchAll(PDO::FETCH_ASSOC);
+                return $data;
+            }
+            else{
+                return null;
+            }
+        }catch(Exception $e){
+            echo $e->getMessage();
+            return null;
+        }
+    }
+    public function getDataPostByOwner($owner){
+        try{
+            $db = PDOHandler::getInstance()->getPDO();
+            $sql = "SELECT p.post_id,u.id,u.username,u.profile_name,p.body,pr.path,p.created_at FROM posts as p LEFT JOIN post_resources as pr ON p.post_id=pr.post_id AND p.owner_id=pr.post_owner_id JOIN users as u ON p.owner_id=u.id WHERE p.owner_id=$owner AND p.refer_type IS NULL ";
+            $result = $db->query($sql);
+            $sql2 = "SELECT DATE(created_at) as day, COUNT(post_id) as total from posts WHERE refer_post_owner=$owner AND refer_type='Reply' GROUP BY day ORDER BY day DESC LIMIT 7";
+            $result2 = $db->query($sql2);
+            $sql3 = "SELECT DATE(created_at) as day, COUNT(post_id) as total from likes WHERE post_owner_id=$owner GROUP BY day ORDER BY day DESC LIMIT 7";
+            $result3 = $db->query($sql3);
+            $sql4 = "SELECT DATE(created_at) as day, SUM(views) as total from posts WHERE owner_id=$owner GROUP BY day ORDER BY day DESC LIMIT 7";
+            $result4 = $db->query($sql4);
+            if($result){
+                if($result2){
+                    if($result3){
+                        if($result4){
+                            $data = $result->fetchAll(PDO::FETCH_ASSOC);
+                            $data2 = $result2->fetchAll(PDO::FETCH_ASSOC);
+                            $data3 = $result3->fetchAll(PDO::FETCH_ASSOC);
+                            $data4 = $result4->fetchAll(PDO::FETCH_ASSOC);
+                            return array(
+                                'post' => $data,
+                                'reply' => $data2,
+                                'likes' => $data3,
+                                'view' => $data4
+                            );
+                        }
+                        else{
+                            return null;
+                        }
+                    }
+                    else{
+                        return null;
+                    }
+                }
+                else{
+                    return null;
+                }
+            }
+            else{
+                return null;
+            }
+        }catch(Exception $e){
+            echo $e->getMessage();
+            return null;
+        }
+    }
+    public function getDataPostIDByOwner($owner,$post_id){
+        try{
+            $db = PDOHandler::getInstance()->getPDO();
+            $sql = "SELECT p.post_id,u.id,u.username,u.profile_name,p.body,pr.path,p.created_at FROM posts as p LEFT JOIN post_resources as pr ON p.post_id=pr.post_id AND p.owner_id=pr.post_owner_id JOIN users as u ON p.owner_id=u.id WHERE p.owner_id=$owner AND p.post_id=$post_id AND p.refer_type IS NULL ";
+            $result = $db->query($sql);
+            $sql2 = "SELECT DATE(created_at) as day, COUNT(post_id) as total from posts WHERE refer_post_owner=$owner AND refer_post=$post_id AND refer_type='Reply' GROUP BY day ORDER BY day DESC LIMIT 7";
+            $result2 = $db->query($sql2);
+            $sql3 = "SELECT DATE(created_at) as day, COUNT(post_id) as total from likes WHERE post_owner_id=$owner AND post_id=$post_id GROUP BY day ORDER BY day DESC LIMIT 7";
+            $result3 = $db->query($sql3);
+            $sql4 = "SELECT DATE(created_at) as day, views as total from posts WHERE owner_id=$owner AND post_id=$post_id";
+            $result4 = $db->query($sql4);
+            if($result){
+                if($result2){
+                    if($result3){
+                        if($result4){
+                            $data = $result->fetch(PDO::FETCH_ASSOC);
+                            $data2 = $result2->fetchAll(PDO::FETCH_ASSOC);
+                            $data3 = $result3->fetchAll(PDO::FETCH_ASSOC);
+                            $data4 = $result4->fetch(PDO::FETCH_ASSOC);
+                            return array(
+                                'post' => $data,
+                                'reply' => $data2,
+                                'likes' => $data3,
+                                'view' => $data4
+                            );
+                        }
+                        else{
+                            return null;
+                        }
+                    }
+                    else{
+                        return null;
+                    }
+                }
+                else{
+                    return null;
+                }
+            }
+            else{
+                return null;
+            }
+        }catch(Exception $e){
+            echo $e->getMessage();
+            return null;
+        }
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/src/index.php b/src/index.php
index 99b4e95047791c3e6c2b55e8afdd4ada4ddab573..1dc6492697f943e56deb24df1467b3b5033dbc4a 100644
--- a/src/index.php
+++ b/src/index.php
@@ -12,6 +12,9 @@ require_once CONTROLLER_PATH . "/User/LoginController.php";
 require_once CONTROLLER_PATH . "/User/LogoutController.php";
 require_once CONTROLLER_PATH . "/User/RegisterController.php";
 require_once CONTROLLER_PATH . "/User/GetAllUserController.php";
+require_once CONTROLLER_PATH . "/User/GetFollowsController.php";
+require_once CONTROLLER_PATH . "/User/GetDataPostController.php";
+require_once CONTROLLER_PATH . "/User/GetDataPostIDController.php";
 require_once CONTROLLER_PATH . "/Admin/AdminController.php";
 require_once CONTROLLER_PATH . "/Admin/BanController.php";
 require_once CONTROLLER_PATH . "/Admin/UnbanController.php";
@@ -66,6 +69,9 @@ $router->addHandler("/api/profileuser/*", ProfileUserController::getInstance(),
 $router->addHandler("/api/follow", FollowController::getInstance(), []);
 $router->addHandler("/api/unfollow", UnfollowController::getInstance(), []);
 $router->addHandler("/api/getalluser", GetAllUserController::getInstance(), []);
+$router->addHandler("/api/getdatafollows/*", GetFollowsController::getInstance(), []);
+$router->addHandler("/api/getdatapost/*", GetDataPostController::getInstance(), []);
+$router->addHandler("/api/getdatapostid/*/*", GetDataPostIDController::getInstance(), []);
 
 
 $router->addHandler("/", HomePage::getInstance(), []);