Index: backend/controllers/forumController.js
===================================================================
--- backend/controllers/forumController.js	(revision 7202388d9140af7bd10bdac16f89d111e5129655)
+++ backend/controllers/forumController.js	(revision 420d7b9b1837b208cbebd6615b98ec8012e3d42e)
@@ -166,5 +166,4 @@
 const getForumPosts = async (req, res) => {
   try {
-    console.log("Called");
     const page = parseInt(req.query.page) - 1 || 0;
     const limit = parseInt(req.query.limit) || 20;
Index: backend/controllers/reviewController.js
===================================================================
--- backend/controllers/reviewController.js	(revision 7202388d9140af7bd10bdac16f89d111e5129655)
+++ backend/controllers/reviewController.js	(revision 420d7b9b1837b208cbebd6615b98ec8012e3d42e)
@@ -12,4 +12,5 @@
   sendModeratorManyPendingPostsEmail,
 } = require("../services/emailService");
+const { equal } = require("assert");
 
 const createReviewPost = async (req, res) => {
@@ -78,5 +79,12 @@
 const getReviewPosts = async (req, res) => {
   try {
-    const { page = 0, limit = 5, search = "", date = "" } = req.query;
+    const {
+      page = 0,
+      limit = 5,
+      search = "",
+      date = "",
+      topic = "all",
+      dateSort = "newest",
+    } = req.query;
     const skip = parseInt(page) * parseInt(limit);
     const userId = req.query.userId;
@@ -93,21 +101,29 @@
       if (search) {
         whereClause.AND.push({
-          title: {
-            contains: search,
-            mode: "insensitive",
-          },
+          OR: [
+            { title: { contains: search, mode: "insensitive" } },
+            { content: { contains: search, mode: "insensitive" } },
+            { author_name: { contains: search, mode: "insensitive" } },
+          ],
         });
       }
       if (date) {
+        // Create a start date (e.g., 2025-08-07T00:00:00.000Z)
         const startDate = new Date(date);
-        startDate.setUTCHours(0, 0, 0, 0);
-
-        const endDate = new Date(date);
-        endDate.setUTCHours(23, 59, 59, 999);
+        // Create an end date for the next day
+        const endDate = new Date(startDate);
+        endDate.setDate(startDate.getDate() + 1);
 
         whereClause.AND.push({
           created_at: {
-            gte: startDate,
-            lte: endDate,
+            gte: startDate, // Greater than or equal to the start of the day
+            lt: endDate, // Less than the start of the next day
+          },
+        });
+      }
+      if (topic && topic !== "all") {
+        whereClause.AND.push({
+          topic: {
+            equals: topic,
           },
         });
@@ -123,5 +139,5 @@
           take: parseInt(limit),
           orderBy: {
-            created_at: "asc",
+            created_at: dateSort === "oldest" ? "asc" : "desc",
           },
           include: {
Index: client/src/Dashboard/components/Forum.jsx
===================================================================
--- client/src/Dashboard/components/Forum.jsx	(revision 7202388d9140af7bd10bdac16f89d111e5129655)
+++ client/src/Dashboard/components/Forum.jsx	(revision 420d7b9b1837b208cbebd6615b98ec8012e3d42e)
@@ -27,5 +27,5 @@
   });
   const [isDeleting, setIsDeleting] = useState(false);
-  const postsPerPage = 10;
+  const postsPerPage = 6;
   const { user } = useAuth();
 
Index: client/src/Dashboard/components/ManagePosts.jsx
===================================================================
--- client/src/Dashboard/components/ManagePosts.jsx	(revision 7202388d9140af7bd10bdac16f89d111e5129655)
+++ client/src/Dashboard/components/ManagePosts.jsx	(revision 420d7b9b1837b208cbebd6615b98ec8012e3d42e)
@@ -20,5 +20,5 @@
   const [isCalendarOpen, setIsCalendarOpen] = useState(false);
   const [error, setError] = useState(null);
-  const postsPerPage = 5;
+  const postsPerPage = 10;
 
   const { user, loading: authLoading } = useAuth();
@@ -52,70 +52,4 @@
   const [showFilters, setShowFilters] = useState(false);
 
-  // Apply filters to posts
-  const applyFiltersToPendingPosts = (posts, activeFilters) => {
-    let filteredPosts = [...posts];
-
-    // 1. Apply text search filter
-    if (activeFilters.searchText && activeFilters.searchText.trim()) {
-      const searchTerm = activeFilters.searchText.trim().toLowerCase();
-      filteredPosts = filteredPosts.filter((post) => {
-        const titleMatch =
-          post.title && post.title.toLowerCase().includes(searchTerm);
-        const contentMatch =
-          post.content && post.content.toLowerCase().includes(searchTerm);
-        const authorMatch =
-          post.author_name &&
-          post.author_name.toLowerCase().includes(searchTerm);
-        return titleMatch || contentMatch || authorMatch;
-      });
-    }
-
-    // 2. Apply topic filter
-    if (activeFilters.topic && activeFilters.topic !== "all") {
-      filteredPosts = filteredPosts.filter(
-        (post) => post.topic === activeFilters.topic
-      );
-    }
-
-    // 3. Apply specific date filter
-    if (activeFilters.selectedDate) {
-      try {
-        const filterDate =
-          activeFilters.selectedDate instanceof Date
-            ? new Date(activeFilters.selectedDate)
-            : new Date(String(activeFilters.selectedDate));
-
-        if (!isNaN(filterDate.getTime())) {
-          filterDate.setHours(0, 0, 0, 0);
-          const nextDay = new Date(filterDate);
-          nextDay.setDate(nextDay.getDate() + 1);
-
-          filteredPosts = filteredPosts.filter((post) => {
-            const postDate = new Date(post.created_at);
-            return postDate >= filterDate && postDate < nextDay;
-          });
-        }
-      } catch (err) {
-        console.error("Error in date filtering:", err);
-      }
-    }
-
-    // 4. Apply date sorting (comment sorting not applicable for pending posts)
-    if (activeFilters.dateSort) {
-      filteredPosts = filteredPosts.sort((a, b) => {
-        const dateA = new Date(a.created_at);
-        const dateB = new Date(b.created_at);
-
-        if (activeFilters.dateSort === "oldest") {
-          return dateA - dateB;
-        } else {
-          return dateB - dateA;
-        }
-      });
-    }
-
-    return filteredPosts;
-  };
-
   const applyFilters = () => {
     const newSearchParams = new URLSearchParams();
@@ -126,4 +60,6 @@
       }
     }
+    newSearchParams.set("page", "1");
+    setPage(1);
     setSearchParams(newSearchParams);
   };
@@ -134,4 +70,6 @@
     const newSearchParams = new URLSearchParams(searchParams);
     newSearchParams.delete(filterKey);
+    newSearchParams.set("page", "1");
+    setPage(1);
     setSearchParams(newSearchParams);
   };
@@ -139,5 +77,6 @@
     const freshDefaultFilters = { ...defaultFilters };
     setFilters(freshDefaultFilters);
-    setSearchParams({});
+    setSearchParams({ page: "1" });
+    setPage(1);
   };
   const activeFilters = { ...defaultFilters };
@@ -175,49 +114,51 @@
   };
 
-  const fetchPostsData = useCallback(async () => {
-    if (authLoading || !user?.id) return;
-
-    setIsFetching(true);
-    setError(null);
-    const pageToFetch = page - 1;
-    try {
-      const data = await getReviewPosts(
-        pageToFetch,
-        postsPerPage,
-        user.id,
-        null, // search - using client-side filtering instead
-        null // date - using client-side filtering instead
-      );
-
-      setPosts(data.posts);
-      setTotalPages(data.totalPages);
-    } catch (err) {
-      console.error("Error fetching review posts:", err);
-      setPosts([]);
-      setTotalPages(0);
-      setError(
-        err.response?.data?.error ||
-          "Failed to fetch posts. You may not have permission."
-      );
-    } finally {
-      setIsFetching(false);
-    }
-  }, [user?.id, page]);
-
   useEffect(() => {
+    const fetchPostsData = async () => {
+      if (authLoading || !user?.id) return;
+
+      setIsFetching(true);
+      setError(null);
+
+      const filtersForApi = {
+        searchText: searchParams.get("searchText") || "",
+        topic: searchParams.get("topic") || "all",
+        selectedDate: searchParams.get("selectedDate") || null,
+        dateSort: searchParams.get("dateSort") || "newest",
+      };
+
+      try {
+        const currentPage = parseInt(searchParams.get("page") || "1", 10);
+        setPage(currentPage);
+
+        const data = await getReviewPosts(
+          currentPage - 1,
+          postsPerPage,
+          user.id,
+          filtersForApi
+        );
+
+        setPosts(data.posts);
+        setTotalPages(data.totalPages);
+      } catch (err) {
+        console.error("Error fetching review posts:", err);
+        setPosts([]);
+        setTotalPages(0);
+        setError(
+          err.response?.data?.error ||
+            "Failed to fetch posts. You may not have permission."
+        );
+      } finally {
+        setIsFetching(false);
+      }
+    };
+
     fetchPostsData();
-  }, [user?.id]);
-
-  useEffect(() => {
-    if (page > 0) {
-      fetchPostsData(false);
-    }
-  }, [page]);
+  }, [user?.id, authLoading, searchParams]);
 
   const handleDeletePost = async (postId) => {
     try {
-      console.log(postId.id);
       await deleteReviewPost(postId, user.id);
-      fetchPostsData();
+      setPosts((prevPosts) => prevPosts.filter((p) => p.id !== postId));
       showModal("Post deleted successfully.", "deleted");
     } catch (err) {
@@ -239,5 +180,5 @@
 
       await approveReviewPost(postToApprove.id, postDataForApproval, user.id);
-      fetchPostsData();
+      setPosts((prevPosts) => prevPosts.filter((p) => p.id !== postId));
       showModal("Post approved successfully.", "success");
     } catch (err) {
@@ -270,7 +211,4 @@
     }
   };
-
-  // Apply filters to get filtered posts
-  const filteredPosts = applyFiltersToPendingPosts(posts, activeFilters);
 
   const isLoading = authLoading || isFetching;
@@ -609,5 +547,5 @@
           </div>
         )}
-        {filteredPosts.length === 0 && !isLoading && !error && (
+        {posts.length === 0 && !isLoading && !error && (
           <div className="text-center text-gray-500 py-8 sm:py-10">
             <div className="w-12 h-12 sm:w-16 sm:h-16 lg:w-20 lg:h-20 bg-base-300 rounded-full flex items-center justify-center mx-auto mb-4">
@@ -651,5 +589,5 @@
         {!isLoading && (
           <div className=" grid grid-cols-1 2xl:grid-cols-2 gap-3 sm:gap-4 lg:gap-6 p-3 sm:p-4 md:p-6 md:pl-12 w-full">
-            {filteredPosts.map((post) => (
+            {posts.map((post) => (
               <div
                 key={post.id}
@@ -726,16 +664,29 @@
         )}
 
-        {!isLoading && posts.length > 0 && totalPages > 1 && (
-          <div className="flex flex-wrap justify-center gap-1 sm:gap-2 mt-6 sm:mt-8 px-4">
-            <div className="text-sm text-base-content/60 mb-2 w-full text-center">
-              Showing {filteredPosts.length} of {posts.length} posts
-            </div>
-            {Array.from({ length: totalPages }, (_, idx) => (
+        {!isLoading && posts.length > 0 && totalPages >= 1 && (
+          <div className="flex justify-center items-center gap-1 sm:gap-2 mt-6 mb-6 sm:mt-8">
+            <button
+              className="btn btn-sm btn-ghost px-2 sm:px-3"
+              onClick={() => {
+                const newPage = page - 1;
+                searchParams.set("page", newPage.toString());
+                setSearchParams(searchParams);
+              }}
+              disabled={isLoading || page === 1}
+              title="Previous Page"
+            >
+              ←
+            </button>
+
+            {Array.from({ length: Math.min(3, totalPages) }, (_, idx) => (
               <button
-                key={idx + 1}
-                className={`btn btn-xs sm:btn-sm ${
-                  page === idx + 1 ? "border-amber-400" : "btn-ghost"
+                key={idx}
+                className={`btn btn-sm px-2 sm:px-3 ${
+                  page - 1 === idx ? "border-amber-400" : "btn-ghost"
                 }`}
-                onClick={() => setPage(idx + 1)}
+                onClick={() => {
+                  searchParams.set("page", (idx + 1).toString());
+                  setSearchParams(searchParams);
+                }}
                 disabled={isLoading}
               >
@@ -743,4 +694,49 @@
               </button>
             ))}
+
+            {totalPages > 3 && (
+              <span className="px-1 sm:px-2 text-gray-500 text-sm">...</span>
+            )}
+
+            {page > 2 && page < totalPages - 1 && (
+              <button
+                className="btn btn-sm border-amber-400 px-2 sm:px-3"
+                onClick={() => {
+                  searchParams.set("page", page.toString());
+                  setSearchParams(searchParams);
+                }}
+                disabled={isLoading}
+              >
+                {page + 1}
+              </button>
+            )}
+
+            {totalPages > 3 && (
+              <button
+                className={`btn btn-sm px-2 sm:px-3 ${
+                  page === totalPages ? "border-amber-400" : "btn-ghost"
+                }`}
+                onClick={() => {
+                  searchParams.set("page", totalPages.toString());
+                  setSearchParams(searchParams);
+                }}
+                disabled={isLoading}
+              >
+                {totalPages}
+              </button>
+            )}
+
+            <button
+              className="btn btn-sm btn-ghost px-2 sm:px-3"
+              onClick={() => {
+                const newPage = page + 1;
+                searchParams.set("page", newPage.toString());
+                setSearchParams(searchParams);
+              }}
+              disabled={isLoading || page === totalPages}
+              title="Next Page"
+            >
+              →
+            </button>
           </div>
         )}
Index: client/src/services/reviewService.js
===================================================================
--- client/src/services/reviewService.js	(revision 7202388d9140af7bd10bdac16f89d111e5129655)
+++ client/src/services/reviewService.js	(revision 420d7b9b1837b208cbebd6615b98ec8012e3d42e)
@@ -1,5 +1,5 @@
 import apiClient from "./apiClient";
 
-export const getReviewPosts = async (page, limit, userId, search, date) => {
+export const getReviewPosts = async (page, limit, userId, filters) => {
   const params = new URLSearchParams({
     page,
@@ -8,12 +8,20 @@
   });
 
-  if (search) {
-    params.append("search", search);
+  if (filters) {
+    if (filters.searchText) {
+      params.append("search", filters.searchText);
+    }
+    if (filters.selectedDate) {
+      const dateFormatted = new Date(filters.selectedDate);
+      console.log("service", dateFormatted);
+      params.append("date", dateFormatted);
+    }
+    if (filters.topic && filters.topic !== "all") {
+      params.append("topic", filters.topic);
+    }
+    if (filters.dateSort) {
+      params.append("dateSort", filters.dateSort);
+    }
   }
-  if (date) {
-    const dateFormated = new Date(date);
-    params.append("date", dateFormated.toISOString().split("T")[0]);
-  }
-
   try {
     return await apiClient.get(`/review/posts?${params.toString()}`);
