Index: backend/controllers/forumController.js
===================================================================
--- backend/controllers/forumController.js	(revision d3070ceb2c558e6c32050c288f76753bfe63b3ec)
+++ backend/controllers/forumController.js	(revision caa8bb6b1ad5e050504facdef2d3d2b96bee5eec)
@@ -9,5 +9,9 @@
 const { createReviewPost } = require("./reviewController");
 const verifyModeratorStatus = require("../services/checkModeratorStatus");
-
+const {
+  sendDeletedFromForumEmail,
+  sendDeletedCommentEmail,
+  sendCommentedNotificationEmail,
+} = require("../services/emailService");
 const createForumPost = async (req, res) => {
   const { title, content, authorId, authorName } = req.body;
@@ -202,4 +206,5 @@
       select: {
         author_id: true,
+        title: true,
       },
     });
@@ -209,17 +214,27 @@
     }
 
-    if (post.author_id === userId) {
-      await prisma.forum_posts.delete({ where: { id } });
-      return res.status(204).send();
-    }
-
-    const hasPermission = await verifyModeratorStatus(userId);
-    if (!hasPermission) {
+    const isAuthor = post.author_id === userId;
+    const isUserModerator = await verifyModeratorStatus(userId);
+
+    if (!isAuthor && !isUserModerator) {
       return res.status(403).json({
         error: "You do not have permission to delete this post",
       });
     }
+
     await prisma.forum_posts.delete({ where: { id } });
-    res.status(204).send();
+
+    if (isUserModerator) {
+      const author = await prisma.users.findUnique({
+        where: { id: post.author_id },
+        select: { email: true },
+      });
+
+      if (author && author.email) {
+        await sendDeletedFromForumEmail(author.email, post.title);
+      }
+    }
+
+    return res.status(204).send();
   } catch (err) {
     if (err.code === "P2025") {
@@ -264,6 +279,22 @@
     });
 
+    const post = await prisma.forum_posts.findUnique({
+      where: { id: post_id },
+      select: { title: true, author_id: true },
+    });
+
+    const postAuthor = await prisma.users.findUnique({
+      where: { id: post.author_id },
+      select: { email: true },
+    });
+
     comment.id = savedComment.id;
-
+    if (post.author_id != authorId) {
+      await sendCommentedNotificationEmail(
+        postAuthor.email,
+        post.title,
+        authorName
+      );
+    }
     res.status(201).json({
       message: "Comment created successfully",
@@ -319,5 +350,5 @@
     const comment = await prisma.comments.findUnique({
       where: { id: commentId },
-      select: { post_id: true, author_id: true },
+      select: { post_id: true, author_id: true, content: true },
     });
 
@@ -325,9 +356,20 @@
       return res.status(404).json({ error: "Comment not found" });
     }
-    const user = await prisma.users.findUnique({
-      where: { id: userId },
-      select: { isModerator: true },
-    });
-    if (comment.author_id !== userId && !(user && user.isModerator)) {
+
+    const post = await prisma.forum_posts.findUnique({
+      where: { id: comment.post_id },
+      select: { title: true },
+    });
+
+    if (!post) {
+      return res
+        .status(404)
+        .json({ error: "Post associated with comment not found" });
+    }
+
+    const isUserModerator = await verifyModeratorStatus(userId);
+    const isAuthor = comment.author_id === userId;
+
+    if (!isUserModerator && !isAuthor) {
       return res.status(403).json({
         error: "You do not have permission to delete this comment",
@@ -346,5 +388,19 @@
     }
 
-    res.status(204).send();
+    if (isUserModerator) {
+      const author = await prisma.users.findUnique({
+        where: { id: comment.author_id },
+        select: { email: true },
+      });
+      if (author && author.email) {
+        await sendDeletedCommentEmail(
+          author.email,
+          post.title,
+          comment.content
+        );
+      }
+    }
+
+    return res.status(204).send();
   } catch (err) {
     if (err.code === "P2025") {
Index: backend/controllers/reviewController.js
===================================================================
--- backend/controllers/reviewController.js	(revision d3070ceb2c558e6c32050c288f76753bfe63b3ec)
+++ backend/controllers/reviewController.js	(revision caa8bb6b1ad5e050504facdef2d3d2b96bee5eec)
@@ -9,4 +9,5 @@
   sendApprovalEmail,
   sendDeletionEmail,
+  sendModeratorManyPendingPostsEmail,
 } = require("../services/emailService");
 
@@ -25,4 +26,21 @@
       data: post,
     });
+
+    const pendingCount = await prisma.to_be_reviewed.count();
+
+    if (pendingCount > 5) {
+      const moderators = await prisma.users.findMany({
+        where: { isModerator: true },
+        select: { email: true },
+      });
+
+      if (moderators.length > 0) {
+        const emailPromises = moderators.map((moderator) =>
+          sendModeratorManyPendingPostsEmail(moderator.email, pendingCount)
+        );
+        await Promise.all(emailPromises);
+      }
+    }
+
     await resetPostCheckCoutner(authorId);
     return res.status(201).json({
@@ -52,7 +70,7 @@
 const getReviewPosts = async (req, res) => {
   try {
-    const page = parseInt(req.query.page) || 0;
-    const limit = parseInt(req.query.limit) || 5;
-    const skip = page * limit;
+    console.log("called getREviewPosts");
+    const { page = 0, limit = 5, search = "", date = "" } = req.query;
+    const skip = parseInt(page) * parseInt(limit);
     const userId = req.query.userId;
     const hasModeratorStatus = await verifyModeratorStatus(userId);
@@ -63,25 +81,48 @@
     }
     try {
-      const posts = await prisma.to_be_reviewed.findMany({
-        skip,
-        take: limit,
-        orderBy: {
-          created_at: "desc",
-        },
-      });
-
-      const forumPosts = posts.map(
-        (post) =>
-          new ForumPost({
-            id: post.id,
-            title: post.title,
-            content: post.content,
-            authorName: post.author_name,
-            dateCreated: post.created_at,
-            commentCount: post.comment_count || 0,
-          })
-      );
-
-      res.status(200).json(forumPosts);
+      const whereClause = {
+        AND: [],
+      };
+      if (search) {
+        whereClause.AND.push({
+          title: {
+            contains: search,
+            mode: "insensitive",
+          },
+        });
+      }
+      if (date) {
+        const startDate = new Date(date);
+        startDate.setUTCHours(0, 0, 0, 0);
+
+        const endDate = new Date(date);
+        endDate.setUTCHours(23, 59, 59, 999);
+
+        whereClause.AND.push({
+          created_at: {
+            gte: startDate,
+            lte: endDate,
+          },
+        });
+      }
+
+      const where = whereClause.AND.length > 0 ? whereClause : undefined;
+
+      const [totalPosts, posts] = await prisma.$transaction([
+        prisma.to_be_reviewed.count({ where }),
+        prisma.to_be_reviewed.findMany({
+          where,
+          skip,
+          take: parseInt(limit),
+          orderBy: {
+            created_at: "asc",
+          },
+        }),
+      ]);
+
+      const totalPages = Math.ceil(totalPosts / parseInt(limit));
+      console.log(posts);
+
+      res.status(200).json({ posts, totalPages });
     } catch (dbError) {
       console.error("Database query error:", dbError);
Index: backend/scripts/sendEmailToModerator.js
===================================================================
--- backend/scripts/sendEmailToModerator.js	(revision d3070ceb2c558e6c32050c288f76753bfe63b3ec)
+++ backend/scripts/sendEmailToModerator.js	(revision caa8bb6b1ad5e050504facdef2d3d2b96bee5eec)
@@ -1,8 +1,8 @@
-require('dotenv').config({
-  path: require('path').resolve(__dirname, '../.env'),
+require("dotenv").config({
+  path: require("path").resolve(__dirname, "../.env"),
 });
-const { sendModeratorEmail } = require('../services/emailService');
-const schedule = require('node-schedule');
-const prisma = require('../lib/prisma');
+const { sendModeratorEmail } = require("../services/emailService");
+const schedule = require("node-schedule");
+const prisma = require("../lib/prisma");
 
 async function sendmailToModerators() {
@@ -27,5 +27,5 @@
       },
       orderBy: {
-        created_at: 'asc',
+        created_at: "asc",
       },
     });
@@ -37,11 +37,9 @@
     );
 
-    // 3. If no old posts, exit gracefully
     if (posts.length === 0) {
-      console.log('No old posts to review. No emails sent.');
+      console.log("No old posts to review. No emails sent.");
       return;
     }
 
-    // 4. If there are old posts, get all moderators
     const moderators = await prisma.users.findMany({
       where: {
@@ -49,5 +47,5 @@
       },
       select: {
-        email: true, // Only select the email field
+        email: true,
       },
     });
@@ -99,5 +97,5 @@
 }
 
-const job = schedule.scheduleJob('0 7 * * *', function () {
+const job = schedule.scheduleJob("0 7 * * *", function () {
   console.log(
     `[${new Date().toISOString()}] Running scheduled moderator email check`
@@ -110,5 +108,5 @@
 );
 
-process.on('SIGINT', function () {
+process.on("SIGINT", function () {
   job.cancel();
   console.log(
Index: backend/services/emailService.js
===================================================================
--- backend/services/emailService.js	(revision d3070ceb2c558e6c32050c288f76753bfe63b3ec)
+++ backend/services/emailService.js	(revision caa8bb6b1ad5e050504facdef2d3d2b96bee5eec)
@@ -1,8 +1,8 @@
-const nodemailer = require('nodemailer');
+const nodemailer = require("nodemailer");
 
 const transporter = nodemailer.createTransport({
   host: process.env.EMAIL_HOST,
   port: parseInt(process.env.EMAIL_PORT, 10),
-  secure: process.env.EMAIL_PORT === '465',
+  secure: process.env.EMAIL_PORT === "465",
   auth: {
     user: process.env.EMAIL_USER,
@@ -13,7 +13,7 @@
 const sendApprovalEmail = async (userEmail, postTitle) => {
   const mailOptions = {
-    from: 'FinkiRanked',
-    to: userEmail,
-    subject: 'Your Forum Post has been Approved!',
+    from: "FinkiRanked",
+    to: userEmail,
+    subject: "Your Forum Post has been Approved!",
     html: `
         <h1>Success!</h1>
@@ -36,12 +36,63 @@
 const sendDeletionEmail = async (userEmail, postTitle) => {
   const mailOptions = {
-    from: 'FinkiRanked',
-    to: userEmail,
-    subject: 'Your Forum Post has been discared',
-    html: `
-        <h1>Your Forum Post contains harmfull or innapropriate language</h1>
+    from: "FinkiRanked",
+    to: userEmail,
+    subject: "Your Forum Post has been discared",
+    html: `
+        <h1>Your Forum Post contains harmfull or inappropriate language</h1>
         <p>We have reviewed your recent forum post, "<strong>${postTitle}</strong>".</p>
         <p>Unfortunately, it could not be approved as it was found to be in violation of our community guidelines.</p>
         <p>We encourage you to review our content policies before submitting a new post in the future.</p>
+        <br>
+        <p>Thank you for your understanding.</p>
+        <p>The FinkiRanked Team</p>
+    `,
+  };
+
+  try {
+    await transporter.sendMail(mailOptions);
+    console.log(`Deletion email sent successfully to ${userEmail}`);
+  } catch (error) {
+    console.error(`Failed to send approval email to ${userEmail}:`, error);
+  }
+};
+const sendDeletedFromForumEmail = async (userEmail, postTitle) => {
+  const mailOptions = {
+    from: "FinkiRanked",
+    to: userEmail,
+    subject: "Your Forum Post has been deleted",
+    html: `
+        <h1>Your Forum Post contains harmfull or inappropriate language</h1>
+        <p>We have reviewed your recent forum post, "<strong>${postTitle}</strong>".</p>
+        <p>Unfortunately, it was found to be in violation of our community guidelines.</p>
+        <p>We encourage you to review our content policies before submitting a new post in the future.</p>
+        <br>
+        <p>Thank you for your understanding.</p>
+        <p>The FinkiRanked Team</p>
+    `,
+  };
+
+  try {
+    await transporter.sendMail(mailOptions);
+    console.log(`Deletion email sent successfully to ${userEmail}`);
+  } catch (error) {
+    console.error(`Failed to send approval email to ${userEmail}:`, error);
+  }
+};
+
+const sendDeletedCommentEmail = async (
+  userEmail,
+  postTitle,
+  commentContent
+) => {
+  const mailOptions = {
+    from: "FinkiRanked",
+    to: userEmail,
+    subject: "Your Comment has been deleted",
+    html: `
+        <h1>Your Comment contains harmfull or inappropriate language</h1>
+        <p>We have reviewed your recent comment on "${postTitle}", "<strong>${commentContent}</strong>".</p>
+        <p>Unfortunately, it was found to be in violation of our community guidelines.</p>
+        <p>We encourage you to review our content policies before submitting a new comment in the future.</p>
         <br>
         <p>Thank you for your understanding.</p>
@@ -61,16 +112,16 @@
     .map((post, index) => {
       const date = new Date(post.created_at);
-      const formattedDate = date.toLocaleDateString('en-GB', {
-        day: 'numeric',
-        month: 'long',
-        year: 'numeric',
+      const formattedDate = date.toLocaleDateString("en-GB", {
+        day: "numeric",
+        month: "long",
+        year: "numeric",
       });
       return `<li style="margin-bottom: 8px;"><strong>${post.title}</strong> (Created: ${formattedDate})</li>`;
     })
-    .join('');
-  const mailOptions = {
-    from: 'FinkiRanked',
-    to: userEmail,
-    subject: 'Action Required: Posts Awaiting Review',
+    .join("");
+  const mailOptions = {
+    from: "FinkiRanked",
+    to: userEmail,
+    subject: "Action Required: Posts Awaiting Review",
     html: `
         <h1>Action Required: Posts Awaiting Review</h1>
@@ -96,3 +147,60 @@
   }
 };
-module.exports = { sendApprovalEmail, sendDeletionEmail, sendModeratorEmail };
+
+const sendModeratorManyPendingPostsEmail = async (userEmail, postsLength) => {
+  const mailOptions = {
+    from: "FinkiRanked",
+    to: userEmail,
+    subject: "Action Required: Posts Awaiting Review",
+    html: `
+        <h1>Action Required: Posts Awaiting Review</h1>
+        <p>This is an automated notification to let you know that there are <strong>${postsLength}</strong> forum post(s) waiting for review.</p>
+      
+        <p>Please log in to the moderator dashboard at your earliest convenience to review and approve or reject these submissions.</p>
+        <br>
+        <p>Thank you for your help in maintaining our community standards.</p>
+        <p>The FinkiRanked System</p>
+    `,
+  };
+
+  try {
+    await transporter.sendMail(mailOptions);
+    console.log(`Moderator email sent successfully to ${userEmail}`);
+  } catch (error) {
+    console.error(`Failed to send approval email to ${userEmail}:`, error);
+  }
+};
+const sendCommentedNotificationEmail = async (
+  userEmail,
+  postTitle,
+  commentBy
+) => {
+  const mailOptions = {
+    from: "FinkiRanked",
+    to: userEmail,
+    subject: `New Comment on Your Post: "${postTitle}"`,
+    html: `
+        <h1>You've got a new comment!</h1>
+        <p><strong>${commentBy}</strong> has left a new comment on your forum post: "<strong>${postTitle}</strong>".</p>
+        <p>You can view the new comment by visiting the post on our forum.</p>
+        <br>
+        <p>The FinkiRanked Team</p>
+    `,
+  };
+
+  try {
+    await transporter.sendMail(mailOptions);
+    console.log(`Moderator email sent successfully to ${userEmail}`);
+  } catch (error) {
+    console.error(`Failed to send approval email to ${userEmail}:`, error);
+  }
+};
+module.exports = {
+  sendApprovalEmail,
+  sendDeletionEmail,
+  sendModeratorEmail,
+  sendDeletedFromForumEmail,
+  sendDeletedCommentEmail,
+  sendModeratorManyPendingPostsEmail,
+  sendCommentedNotificationEmail,
+};
Index: client/src/Dashboard/components/ManagePosts.jsx
===================================================================
--- client/src/Dashboard/components/ManagePosts.jsx	(revision d3070ceb2c558e6c32050c288f76753bfe63b3ec)
+++ client/src/Dashboard/components/ManagePosts.jsx	(revision caa8bb6b1ad5e050504facdef2d3d2b96bee5eec)
@@ -1,3 +1,3 @@
-import React, { useState, useEffect, useCallback } from "react";
+import React, { useState, useEffect, useCallback, useRef } from "react";
 
 import doneAll from "../../assets/images/done-all.svg";
@@ -9,13 +9,20 @@
   approveReviewPost,
 } from "@/services/reviewService";
-
+import { DatePicker } from "react-daisyui-timetools";
+import "react-datepicker/dist/react-datepicker.css";
+import "cally";
 const ManagePosts = () => {
   const [posts, setPosts] = useState([]);
-  const [page, setPage] = useState(0);
-  const [hasMore, setHasMore] = useState(true);
+  const [page, setPage] = useState(1);
+  const [totalPages, setTotalPages] = useState(0);
   const [isFetching, setIsFetching] = useState(false);
-  const [loadingMore, setLoadingMore] = useState(false);
+
+  const [searchQuery, setSearchQuery] = useState("");
+  const [submittedQuery, setSubmittedQuery] = useState("");
+  const [selectedDate, setSelectedDate] = useState(null);
+
   const [error, setError] = useState(null);
   const postsPerPage = 5;
+
   const { user, loading: authLoading } = useAuth();
   const [modal, setModal] = useState({
@@ -53,48 +60,56 @@
 
   const fetchPostsData = useCallback(async () => {
-    if (authLoading) return;
-
-    if (!user || !user.id) {
-      setError("User not found. Please log in.");
-      return;
-    }
-
-    if (page === 0) {
-      setIsFetching(true);
-    } else {
-      setLoadingMore(true);
-    }
+    if (authLoading || !user?.id) return;
+
+    setIsFetching(true);
     setError(null);
-
+    const pageToFetch = page - 1;
     try {
-      const data = await getReviewPosts(page, postsPerPage, user.id);
-      setPosts((prevPosts) => (page === 0 ? data : [...prevPosts, ...data]));
-      setHasMore(data.length === postsPerPage);
+      const data = await getReviewPosts(
+        pageToFetch,
+        postsPerPage,
+        user.id,
+        searchQuery,
+        selectedDate
+      );
+
+      setPosts(data.posts);
+      setTotalPages(data.totalPages);
     } catch (err) {
       console.error("Error fetching review posts:", err);
+      setPosts([]);
+      setTotalPages(0);
       setError(
-        err.response?.data?.message ||
-          err.message ||
-          "Failed to fetch posts for review."
+        err.response?.data?.error ||
+          "Failed to fetch posts. You may not have permission."
       );
     } finally {
       setIsFetching(false);
-      setLoadingMore(false);
-    }
-  }, [page, user, authLoading]);
-
+    }
+  }, [user?.id, searchQuery, selectedDate, page]);
+
+  useEffect(() => {
+    setPage(1);
+  }, [submittedQuery, selectedDate]);
   useEffect(() => {
     fetchPostsData();
-  }, [fetchPostsData]);
+  }, [submittedQuery, selectedDate, user?.id]);
+
+  const handleSearchKeyDown = (event) => {
+    if (event.key === "Enter") {
+      event.preventDefault();
+      setSubmittedQuery(searchQuery);
+    }
+  };
+  useEffect(() => {
+    if (page > 0) {
+      fetchPostsData(false);
+    }
+  }, [page]);
 
   const handleDeletePost = async (postId) => {
-    if (!user || !user.id) {
-      console.error("User ID not found for delete operation");
-      setError("Action cannot be performed without user authentication.");
-      return;
-    }
     try {
       await deleteReviewPost(postId, user.id);
-      setPosts((prevPosts) => prevPosts.filter((post) => post.id !== postId));
+      fetchPostsData();
       showModal("Post deleted successfully.", "deleted");
     } catch (err) {
@@ -107,9 +122,4 @@
 
   const handleApprovePost = async (postToApprove) => {
-    if (!user || !user.id || !postToApprove) {
-      console.error("User ID or post data not found for approve operation");
-      setError("Action cannot be performed without user or post data.");
-      return;
-    }
     try {
       const postDataForApproval = {
@@ -121,7 +131,5 @@
 
       await approveReviewPost(postToApprove.id, postDataForApproval, user.id);
-      setPosts((prevPosts) =>
-        prevPosts.filter((p) => p.id !== postToApprove.id)
-      );
+      fetchPostsData();
       showModal("Post approved successfully.", "success");
     } catch (err) {
@@ -137,8 +145,8 @@
   };
 
-  const openConfirmationModal = (type, item, postTitle) => {
+  const openConfirmationModal = (type, item) => {
     if (type === "delete") {
       showModal(
-        `Are you sure you want to delete post with title "${postTitle}"? This action cannot be undone.`,
+        `Are you sure you want to delete post with title "${item.title}"? This action cannot be undone.`,
         "delete",
         item
@@ -146,5 +154,5 @@
     } else if (type === "approve") {
       showModal(
-        `Are you sure you want to approve post with title "${postTitle}"? It will be published to the forum.`,
+        `Are you sure you want to approve post with title "${item.title}"? It will be published to the forum.`,
         "approve",
         item.id,
@@ -154,6 +162,8 @@
   };
 
-  const handleLoadMore = () => {
-    setPage((prevPage) => prevPage + 1);
+  const handlePageChange = (newPage) => {
+    if (newPage >= 0 && newPage < totalPages) {
+      setPage(newPage);
+    }
   };
 
@@ -161,35 +171,54 @@
 
   return (
-    <div
-      data-theme="luxury"
-      className="dashboard h-screen flex bg-base-100 overflow-none"
-    >
+    <div data-theme="luxury" className="dashboard h-screen flex bg-base-100 ">
       <div className="flex flex-col w-full h-full overflow-y-auto p-6">
         <div className="flex-1 md:ml-8">
           <h1 className="text-4xl font-bold mb-10">Posts to be reviewed:</h1>
+          {/* Search and Filter Bar */}
+          <div className="mb-8 flex flex-col sm:flex-row gap-4 items-center">
+            <div className="relative  w-[40%]">
+              <input
+                type="text"
+                placeholder="Search by title..."
+                className="input input-bordered w-full pl-10"
+                value={searchQuery}
+                onChange={(e) => setSearchQuery(e.target.value)}
+                onKeyDown={handleSearchKeyDown}
+              />
+              <svg
+                className="w-5 h-5 z-10 absolute top-1/2 left-3 transform -translate-y-1/2 text-base-content/40"
+                fill="none"
+                stroke="currentColor"
+                viewBox="0 0 24 24"
+              >
+                <path
+                  strokeLinecap="round"
+                  strokeLinejoin="round"
+                  strokeWidth="2"
+                  d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
+                ></path>
+              </svg>
+            </div>
+            <div className="flex flex-row gap-2 w-[30%]">
+              <DatePicker
+                className="p-2 w-[37%]"
+                value={selectedDate}
+                onChange={(date) => setSelectedDate(date)}
+                placeholder="Search by date"
+              ></DatePicker>
+              {selectedDate && (
+                <button
+                  className="btn-sm text-red-500 cursor-pointer"
+                  onClick={() => setSelectedDate(null)}
+                >
+                  Clear date
+                </button>
+              )}
+            </div>
+          </div>
+
           {error && (
             <div className="alert alert-error shadow-lg mb-4">
-              <div>
-                <svg
-                  xmlns="http://www.w3.org/2000/svg"
-                  className="stroke-current flex-shrink-0 h-6 w-6"
-                  fill="none"
-                  viewBox="0 0 24 24"
-                >
-                  <path
-                    strokeLinecap="round"
-                    strokeLinejoin="round"
-                    strokeWidth="2"
-                    d="M10 14l2-2m0 0l2-2m-2 2l-2 2m2-2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
-                  />
-                </svg>
-                <span>{error}</span>
-                <button
-                  className="btn btn-xs btn-ghost"
-                  onClick={() => setError(null)}
-                >
-                  Clear
-                </button>
-              </div>
+              <span>{error}</span>
             </div>
           )}
@@ -199,9 +228,10 @@
             </div>
           )}
-          {posts.length === 0 && !isLoading && !loadingMore && !error && (
+          {posts.length === 0 && !isLoading && !error && (
             <div className="text-center text-gray-500 py-10">
-              No posts currently awaiting approval.
-            </div>
-          )}
+              No posts found matching your criteria.
+            </div>
+          )}
+
           {!isLoading && (
             <div className="space-y-4">
@@ -209,5 +239,5 @@
                 <div
                   key={post.id}
-                  className="p-6 border border-base-300 bg-base-200 rounded-lg shadow-sm hover:shadow-md transition relative"
+                  className="p-6 border border-base-300 bg-base-200 rounded-lg shadow-sm hover:shadow-md transition relative w-[80%]"
                 >
                   <h1 className="text-2xl font-bold mb-2">{post.title}</h1>
@@ -216,8 +246,5 @@
                       title="Approve Post"
                       className="btn btn-sm btn-success btn-circle"
-                      onClick={(e) => {
-                        e.stopPropagation();
-                        openConfirmationModal("approve", post, post.title);
-                      }}
+                      onClick={() => openConfirmationModal("approve", post)}
                     >
                       <img src={doneAll} alt="Approve" className="w-5 h-5" />
@@ -226,19 +253,17 @@
                       title="Delete Post"
                       className="btn btn-sm btn-error btn-circle"
-                      onClick={(e) => {
-                        e.stopPropagation();
-                        openConfirmationModal("delete", post.id, post.title);
-                      }}
+                      onClick={() => openConfirmationModal("delete", post)}
                     >
                       <img src={trashIcon} alt="Delete" className="w-5 h-5" />
                     </button>
                   </div>
-
                   <p className="text-sm text-base-content/70 mb-3">
                     By {post.author_name} on{" "}
                     <span>
-                      {post.date_created
-                        ? new Date(post.date_created).toLocaleDateString()
-                        : "N/A"}
+                      {new Date(post.created_at).toLocaleDateString("en-GB", {
+                        day: "2-digit",
+                        month: "2-digit",
+                        year: "numeric",
+                      })}
                     </span>
                   </p>
@@ -250,18 +275,19 @@
             </div>
           )}
-          {hasMore && !loadingMore && !isLoading && (
-            <div className="flex justify-center mt-6">
-              <button
-                onClick={handleLoadMore}
-                className="btn btn-primary"
-                disabled={loadingMore}
-              >
-                Load More
-              </button>
-            </div>
-          )}
-          {loadingMore && (
-            <div className="flex justify-center mt-6">
-              <span className="loading loading-spinner loading-md"></span>
+
+          {!isLoading && totalPages > 1 && (
+            <div className="flex flex-wrap justify-center gap-1 sm:gap-2 mt-6 sm:mt-8">
+              {Array.from({ length: totalPages }, (_, idx) => (
+                <button
+                  key={idx + 1}
+                  className={`btn btn-xs sm:btn-sm ${
+                    page === idx + 1 ? "border-amber-400" : "btn-ghost"
+                  }`}
+                  onClick={() => setPage(idx + 1)}
+                  disabled={isLoading}
+                >
+                  {idx + 1}
+                </button>
+              ))}
             </div>
           )}
@@ -317,5 +343,6 @@
               <h3 className="font-bold text-lg" id="modal-title">
                 {modal.type === "approve" && "Approve Post"}
-                {modal.type === "deleted" && "Delete Post"}
+                {(modal.type === "deleted" || modal.type === "delete") &&
+                  "Delete Post"}
                 {(modal.type === "success" || modal.type === "error") &&
                   "Approve Post"}
Index: client/src/Dashboard/components/UserPosts.jsx
===================================================================
--- client/src/Dashboard/components/UserPosts.jsx	(revision d3070ceb2c558e6c32050c288f76753bfe63b3ec)
+++ client/src/Dashboard/components/UserPosts.jsx	(revision caa8bb6b1ad5e050504facdef2d3d2b96bee5eec)
@@ -37,5 +37,5 @@
       fetchAllPosts();
     }
-  }, []);
+  }, [user?.id]);
 
   const filteredApprovedPosts = approvedPosts.filter((post) => {
Index: client/src/services/reviewService.js
===================================================================
--- client/src/services/reviewService.js	(revision d3070ceb2c558e6c32050c288f76753bfe63b3ec)
+++ client/src/services/reviewService.js	(revision caa8bb6b1ad5e050504facdef2d3d2b96bee5eec)
@@ -1,9 +1,27 @@
 import apiClient from "./apiClient";
 
-export const getReviewPosts = async (page, limit, userId) => {
-  return await apiClient.get(
-    `/review/posts?page=${page}&limit=${limit}&userId=${userId}`
-  );
+export const getReviewPosts = async (page, limit, userId, search, date) => {
+  const params = new URLSearchParams({
+    page,
+    limit,
+    userId,
+  });
+
+  if (search) {
+    params.append("search", search);
+  }
+  if (date) {
+    const dateFormated = new Date(date);
+    params.append("date", dateFormated.toISOString().split("T")[0]);
+  }
+
+  try {
+    return await apiClient.get(`/review/posts?${params.toString()}`);
+  } catch (error) {
+    console.error("Error fetching posts for review:", error);
+    throw error;
+  }
 };
+
 export const deleteReviewPost = async (postId, userId) => {
   return await apiClient.delete(`/review/posts/${postId}/${userId}`);
