diff --git a/docker-compose.yml b/docker-compose.yml
index 5b5ded32b6d76dbdbb956b197345a5ffc3e3d19a..85350a9a139c684fc2a0284bbd4b07f1b367dac2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -15,7 +15,6 @@ services:
   php-postgres:
     image: postgres:16-alpine
     container_name: ${MONOLITHIC_POSTGRES_HOST}
-    restart: always
     environment:
       POSTGRES_USER: ${MONOLITHIC_POSTGRES_USER}
       POSTGRES_PASSWORD: ${MONOLITHIC_POSTGRES_PASSWORD}
diff --git a/src/app/controllers/Home/GetPostController.php b/src/app/controllers/Home/GetPostController.php
index bdc856a11990069b759b29089b70cbd44435d5a0..f45cf1ac577d2b99b19ad3193ffeae7e1ee7917d 100644
--- a/src/app/controllers/Home/GetPostController.php
+++ b/src/app/controllers/Home/GetPostController.php
@@ -12,7 +12,13 @@ class GetPostController extends BaseController{
     }
     public function get($urlParams){
         $page = $urlParams[0];
-        $data = $this->srv->getPostPage($page);
+        if(array_key_exists('owner_id', $_GET)) {
+            $ownerId = $_GET['owner_id'];
+        }
+        else {
+            $ownerId = null;
+        }
+        $data = $this->srv->getPostPage($page, $ownerId);
         if($data!=null){
             $hasiljson = array(
                 'status' => 'sukses',
diff --git a/src/app/controllers/Page/ProfilePage.php b/src/app/controllers/Page/ProfilePage.php
index 8ce3ca7ac2c04986af3eae789f7090c8d9113a5c..7c9539b63643febb90215211ad76bd5091351406 100644
--- a/src/app/controllers/Page/ProfilePage.php
+++ b/src/app/controllers/Page/ProfilePage.php
@@ -13,6 +13,9 @@ class ProfilePage extends BaseController{
         return self::$instance;
     }
     public function get($urlParams){
+        if(!isset($_SESSION['user_id'])) {
+            header("Location: /login");
+        }
         require PAGE_PATH . "/profile.php";
         exit();
     }
diff --git a/src/app/models/HomeModel.php b/src/app/models/HomeModel.php
index 2ba3ec71636ffd3dd808a7460a8e71ee8f6d41ea..e342130127538e8f5c0c5faa08da2c59afe78c59 100644
--- a/src/app/models/HomeModel.php
+++ b/src/app/models/HomeModel.php
@@ -15,12 +15,19 @@ class HomeModel
         }
         return self::$instance;
     }
-    public function getPostPage($page){
+    public function getPostPage($page, $ownerId=null){
         try{
+            if(!is_null($ownerId)){
+                $and_owner_id = " AND p.owner_id=$ownerId ";
+            }
+            else {
+                $and_owner_id = "";
+            }
+
             $db = PDOHandler::getInstance()->getPDO();
             $page = $page * 10;
-            $sql = "SELECT p.post_id,u.id,u.username,u.profile_name,u.profile_picture_path,p.body,pr.path 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.refer_type IS NULL ORDER BY p.created_at DESC LIMIT 10 OFFSET $page";
-            $count = "SELECT COUNT(*) as count 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.refer_type IS NULL";
+            $sql = "SELECT p.post_id,u.id,u.username,u.profile_name,u.profile_picture_path,p.body,pr.path 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.refer_type IS NULL $and_owner_id ORDER BY p.created_at DESC LIMIT 10 OFFSET $page";
+            $count = "SELECT COUNT(*) as count 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.refer_type IS NULL $and_owner_id";
             $result = $db->query($sql);
             $result2 = $db->query($count);
             if($result){
diff --git a/src/app/view/profile.php b/src/app/view/profile.php
index de89ddbc436a72965bf8eda50ec28a376eb11def..c20ab4d00bbcf0530c4069e7db23623dbcbb928e 100644
--- a/src/app/view/profile.php
+++ b/src/app/view/profile.php
@@ -8,6 +8,7 @@ require_once PAGE_PATH . "/templates/navbar.php";
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Profile</title>
+    <link rel="stylesheet" href="/public/css/home.css" />
     <link rel="stylesheet" href="/public/css/shared.css" />
     <link rel="stylesheet" href="/public/css/profile.css" />
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css">
@@ -18,16 +19,21 @@ require_once PAGE_PATH . "/templates/navbar.php";
     <?php
       echo Navbar();
     ?>
-    <div class="box" id="box">
-        <div class="iden">
-                <img src="/public/assets/kajuha.jpg" alt="" class="fotoprofil">
-                <div class="kolom">
-                    <p id="namaprofile"></p>
-                    <p id="username"></p>
-                </div>
-        </div>
-    </div>
+    <div>
+      <div class="box" id="box">
+          <div class="iden">
+                  <img src="/public/assets/kajuha.jpg" alt="" class="fotoprofil">
+                  <div class="kolom">
+                      <p id="namaprofile"></p>
+                      <p id="username"></p>
+                  </div>
+          </div>
+      </div>
+      <div id="list-post">
+      </div>
     </div>
+  </div>
     <script src="/public/js/profile.js"></script>
+    <script src="/public/js/home.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/src/public/js/home.js b/src/public/js/home.js
index 6a56902cc4f7e7888b86d9374aadb38bee5432d8..b8f2f5cb435c53669b144b21d34379d0d0820308 100644
--- a/src/public/js/home.js
+++ b/src/public/js/home.js
@@ -1,5 +1,30 @@
+const xhr = new XMLHttpRequest();
+const url = '/api/getpost/0';
+
+xhr.open('GET', url, true);
+xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+
+xhr.onreadystatechange = function () {
+    if (xhr.readyState === 4) {
+    if (xhr.status === 200) {
+        const response = JSON.parse(xhr.responseText);
+        if(response.status==="error"){
+            alert(response.message);
+        }
+        else if(response.status==="sukses"){
+            console.log(response);
+            var totalpost = response.data.count;
+            var totalPage = Math.ceil(totalpost/10);
+            createPost(response.data.data,totalPage,1);
+        }
+    } else {
+        console.error('Gagal melakukan permintaan');
+    }
+    }
+};
+xhr.send();
 
-function createPost(data,totalsemuapage,pagenow){
+function createPost(data,totalsemuapage,pagenow,owner_id=null){
     const post = document.getElementById('list-post');
     data.forEach(element => {
         const username =  document.createElement('p');
@@ -137,32 +162,8 @@ function likeId(postid,userid){
     };
     xhr.send(`post_id=${encodeURIComponent(postid)}&owner=${encodeURIComponent(userid)}`);
 }
-const xhr = new XMLHttpRequest();
-const url = '/api/getpost/0';
-
-xhr.open('GET', url, true);
-xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 
-xhr.onreadystatechange = function () {
-    if (xhr.readyState === 4) {
-    if (xhr.status === 200) {
-        const response = JSON.parse(xhr.responseText);
-        if(response.status==="error"){
-            alert(response.message);
-        }
-        else if(response.status==="sukses"){
-            console.log(response);
-            var totalpost = response.data.count;
-            var totalPage = Math.ceil(totalpost/10);
-            createPost(response.data.data,totalPage,1);
-        }
-    } else {
-        console.error('Gagal melakukan permintaan');
-    }
-    }
-};
-xhr.send();
-function makePagination(totalPages,page){
+function makePagination(totalPages,page,owner_id=null){
     console.log(page);
     const ulTag = document.querySelector('ul');
     let liTag = '';
@@ -216,10 +217,11 @@ function klikPagination(totalPages,page){
     changePage(page);
 }
 
-function changePage(page){
+function changePage(page,owner_id=null){
     const xhr = new XMLHttpRequest();
     var getpage = (page-1);
-    const url = '/api/getpost/'+getpage.toString();
+    var url = '/api/getpost/'+getpage.toString();
+    if(owner_id !== null) url.concat("?", owner_id)
 
     xhr.open('GET', url, true);
     xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');