Index: backend/controllers/reviewController.js
===================================================================
--- backend/controllers/reviewController.js	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
+++ backend/controllers/reviewController.js	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
@@ -0,0 +1,105 @@
+const prisma = require('../lib/prisma');
+const ForumPost = require('../models/ForumPost');
+const ForumController = require('./forumController');
+const filter = require("leo-profanity");
+const safeWords = require("../filters/safeWords");
+
+
+const createReviewPost = async (req, res) => {
+    const { title, content, authorId, authorName } = req.body;
+
+    try {
+        // Create domain object first
+        const post = new ForumPost({
+            title,
+            content,
+            authorName,
+        });
+        const savedPost = await prisma.to_be_reviewed.create({
+            data: {
+                title: post.title,
+                content: post.content,
+                author_id: authorId,
+                author_name: post.authorName,
+            },
+        });
+
+        post.id = savedPost.id;
+
+        res.status(201).json({
+            message: 'Forum post created successfully',
+            post: savedPost,
+        });
+    } catch (err) {
+        console.error('Server error:', err);
+        res.status(500).json({ error: 'Internal server error' });
+    }
+};
+
+const getReviewPosts = async (req, res) => {
+    try {
+        console.log('Fetching to be reviewed posts ');
+        const page = parseInt(req.query.page) || 0;
+        const limit = parseInt(req.query.limit) || 5;
+        const skip = page * limit;
+
+        // Use Prisma to fetch posts with pagination
+        const posts = await prisma.to_be_reviewed.findMany({
+            skip,
+            take: limit,
+            orderBy: {
+                date_created: 'desc',
+            },
+        });
+
+        // Convert to domain objects
+        const forumPosts = posts.map(
+            (post) =>
+                new ForumPost({
+                    id: post.id,
+                    title: post.title,
+                    content: post.content,
+                    authorName: post.author_name,
+                    dateCreated: post.date_created,
+                    commentCount: post.comment_count,
+                })
+        );
+
+        res.status(200).json(forumPosts);
+    } catch (err) {
+        console.error('Server error:', err);
+        res.status(500).json({ error: 'Internal server error' });
+    }
+};
+
+const deleteReviewPost = async (req, res) => {
+    const { id } = req.params;
+
+    try {
+        // Delete using Prisma
+        await prisma.to_be_reviewed.delete({
+            where: { id },
+        });
+
+        res.status(204).send();
+    } catch (err) {
+        // Prisma throws when record not found
+        if (err.code === 'P2025') {
+            return res.status(404).json({ error: 'Forum post not found' });
+        }
+        console.error('Server error:', err);
+        res.status(500).json({ error: 'Internal server error' });
+    }
+};
+
+const approveReviewPost = async (req, res) => {
+    await ForumController.createForumPost(req, res)
+    await deleteReviewPost(req, res)
+}
+
+module.exports = {
+    createReviewPost,
+    getReviewPosts,
+    deleteReviewPost,
+    approveReviewPost
+}
Index: backend/prisma/schema.prisma
===================================================================
--- backend/prisma/schema.prisma	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
+++ backend/prisma/schema.prisma	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
@@ -11,41 +11,53 @@
 /// This model contains row level security and requires additional setup for migrations. Visit https://pris.ly/d/row-level-security for more info.
 model comments {
-  id          String       @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
-  dateCreated DateTime     @default(now()) @db.Timestamptz(6)
-  post_id     String?      @default(dbgenerated("gen_random_uuid()")) @db.Uuid
-  content     String?      @default("")
-  author_id   String?      @default(dbgenerated("gen_random_uuid()")) @db.Uuid
-  author_name String?
-  users       users?       @relation(fields: [author_id], references: [id], onDelete: Cascade)
-  forum_posts forum_posts? @relation(fields: [post_id], references: [id], onDelete: Cascade)
+  id             String       @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
+  dateCreated    DateTime     @default(now()) @db.Timestamptz(6)
+  post_id        String?      @default(dbgenerated("gen_random_uuid()")) @db.Uuid
+  content        String?      @default("")
+  author_id      String?      @default(dbgenerated("gen_random_uuid()")) @db.Uuid
+  author_name    String?
+  users          users?       @relation(fields: [author_id], references: [id], onDelete: Cascade, map: "comments_author_id_fkey")
+  to_be_reviewed forum_posts? @relation(fields: [post_id], references: [id], onDelete: Cascade, map: "comments_to_be_reviewed_post_id_fkey")
+}
+
+model to_be_reviewed {
+  id            String   @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
+  title         String?
+  created_at    DateTime @default(now()) @db.Timestamptz(6)
+  content       String?
+  author_id     String?  @default(dbgenerated("gen_random_uuid()")) @db.Uuid
+  author_name   String?
+  comment_count Int?     @default(0) @db.SmallInt
+  users         users?   @relation(fields: [author_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "to_be_reviewed_author_id_fkey")
 }
 
 /// This model contains row level security and requires additional setup for migrations. Visit https://pris.ly/d/row-level-security for more info.
 model forum_posts {
-  id           String     @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
-  title        String     @default("")
-  content      String?    @default("")
-  author_id    String?    @default(dbgenerated("gen_random_uuid()")) @db.Uuid
-  author_name  String?
-  date_created DateTime?  @default(now()) @db.Date
-  comment_count Int       @default(0) 
-  comments     comments[]
-  users        users?     @relation(fields: [author_id], references: [id], onDelete: Restrict, onUpdate: Restrict)
+  id            String     @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
+  title         String     @default("")
+  content       String?    @default("")
+  author_id     String?    @default(dbgenerated("gen_random_uuid()")) @db.Uuid
+  author_name   String?
+  date_created  DateTime?  @default(now()) @db.Date
+  comment_count Int        @default(0)
+  comments      comments[]
+  users         users?     @relation(fields: [author_id], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "forum_posts_author_id_fkey")
 }
 
 model users {
-  id                  String        @id @default(dbgenerated("auth.uid()")) @db.Uuid
-  username            String        @unique
-  email               String        @unique
+  id                  String           @id @default(dbgenerated("auth.uid()")) @db.Uuid
+  username            String           @unique
+  email               String           @unique
   name                String?
-  solved_problems     BigInt?       @default(0)
-  rank                String?       @default("Novice")
-  points              BigInt?       @default(0)
-  commentCounter      Int?          @default(3) @db.SmallInt
-  commentCheckCounter Int?          @default(0) @db.SmallInt
-  postCounter         Int?          @default(3) @db.SmallInt
-  postCheckCounter    Int?          @default(0) @db.SmallInt
-  isModerator         Boolean       @default(false)
+  solved_problems     BigInt?          @default(0)
+  rank                String?          @default("Novice")
+  points              BigInt?          @default(0)
+  commentCounter      Int?             @default(3) @db.SmallInt
+  commentCheckCounter Int?             @default(0) @db.SmallInt
+  postCounter         Int?             @default(3) @db.SmallInt
+  postCheckCounter    Int?             @default(0) @db.SmallInt
+  isModerator         Boolean          @default(false)
   comments            comments[]
   forum_posts         forum_posts[]
+  to_be_reviewed      to_be_reviewed[]
 }
Index: backend/routers/reviewRouter.js
===================================================================
--- backend/routers/reviewRouter.js	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
+++ backend/routers/reviewRouter.js	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
@@ -0,0 +1,11 @@
+const express = require('express');
+const router = express.Router();
+const reviewController = require('../controllers/reviewController');
+
+// Review Routes
+
+router.post('/posts/:id', reviewController.approveReviewPost);
+router.get('/posts', reviewController.getReviewPosts);
+router.delete('/posts/:id', reviewController.deleteReviewPost);
+
+module.exports = router;
Index: backend/server.js
===================================================================
--- backend/server.js	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
+++ backend/server.js	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
@@ -6,4 +6,5 @@
 
 const forumRouter = require('./routers/forumRouter');
+const reviewRouter = require('./routers/reviewRouter');
 
 app.use(express.json());
@@ -17,4 +18,5 @@
 
 app.use('/forum', forumRouter);
+app.use('/review', reviewRouter);
 app.get('/', indexRouter);
 app.use((req, res, next) => {
Index: ient/src/Dashboard/Dashboard.jsx
===================================================================
--- client/src/Dashboard/Dashboard.jsx	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
+++ 	(revision )
@@ -1,179 +1,0 @@
-import React, { useState, useEffect } from 'react';
-import { useNavigate } from 'react-router-dom';
-import logoIcon from '../assets/images/logoIcon.png';
-import logoText from '../assets/images/logoText.png';
-import pp from '../assets/images/pp.svg';
-
-import Task from './components/Task';
-import LeaderBoardEx from '@/LandingPage/components/LeaderBoardEx';
-import Forum from './components/Forum';
-import Profile from './components/Profile';
-import CreatePost from '../CreatePost/CreatePost';
-import ForumPostDetail from './components/ForumPostDetail';
-
-const Dashboard = () => {
-  const [activePage, setActivePage] = useState('home');
-  const [user, setUser] = useState(null);
-  const [selectedForumPost, setSelectedForumPost] = useState(null);
-  const navigate = useNavigate();
-
-  useEffect(() => {
-    const storedUser = localStorage.getItem('user');
-    if (!storedUser) {
-      navigate('/login');
-    } else {
-      setUser(JSON.parse(storedUser));
-    }
-  }, [navigate]);
-
-  const renderPage = () => {
-    if (selectedForumPost) {
-      return (
-        <ForumPostDetail
-          post={selectedForumPost}
-          onBack={() => setSelectedForumPost(null)}
-        />
-      );
-    }
-    switch (activePage) {
-      case 'home':
-        return <Task />;
-      case 'forum':
-        return (
-          <Forum
-            setActivePage={setActivePage}
-            onPostClick={setSelectedForumPost}
-          />
-        );
-      case 'leaderboard':
-        return <LeaderBoardEx />;
-      case 'profile':
-        return <Profile />;
-      case 'createPost':
-        return <CreatePost setActivePage={setActivePage} />;
-      default:
-        return (
-          <div className="text-center text-xl font-semibold">
-            Page Not Found
-          </div>
-        );
-    }
-  };
-
-  if (!user) {
-    return <div>Loading...</div>; // or a loading spinner
-  }
-
-  return (
-    <div
-      data-theme="luxury"
-      className="dashboard h-screen flex bg-base-100 overflow-none"
-    >
-      <nav className="dashboard__navbar w-64 min-h-screen bg-base-200 text-base-content">
-        <div className="p-4 border-b border-base-content/10">
-          <a href="/" className="flex items-center gap-2">
-            <img src={logoIcon} alt="Logo" className="w-10 h-10" />
-            <img src={logoText} alt="Logo Text" className="w-32" />
-          </a>
-        </div>
-
-        <div className="px-4 py-8">
-          <ul className="menu menu-lg gap-2">
-            <li>
-              <button
-                className={`flex items-center gap-4 px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors ${
-                  activePage === 'home'
-                    ? 'bg-[#FFB800] text-black font-medium'
-                    : ''
-                }`}
-                onClick={() => setActivePage('home')}
-              >
-                <svg
-                  xmlns="http://www.w3.org/2000/svg"
-                  className="w-5 h-5"
-                  viewBox="0 0 24 24"
-                  fill="none"
-                  stroke="currentColor"
-                  strokeWidth="2"
-                >
-                  <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
-                </svg>
-                Task of the Day
-              </button>
-            </li>
-            <li>
-              <button
-                className={`flex items-center gap-4 px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors ${
-                  activePage === 'leaderboard'
-                    ? 'bg-[#FFB800] text-black font-medium'
-                    : ''
-                }`}
-                onClick={() => setActivePage('leaderboard')}
-              >
-                <svg
-                  xmlns="http://www.w3.org/2000/svg"
-                  className="w-5 h-5"
-                  viewBox="0 0 24 24"
-                  fill="none"
-                  stroke="currentColor"
-                  strokeWidth="2"
-                >
-                  <path d="M18 20V10M12 20V4M6 20v-6"></path>
-                </svg>
-                Leaderboard
-              </button>
-            </li>
-            <li>
-              <button
-                className={`flex items-center gap-4 px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors ${
-                  activePage === 'forum'
-                    ? 'bg-[#FFB800] text-black font-medium'
-                    : ''
-                }`}
-                onClick={() => setActivePage('forum')}
-              >
-                <svg
-                  xmlns="http://www.w3.org/2000/svg"
-                  className="w-5 h-5"
-                  viewBox="0 0 24 24"
-                  fill="none"
-                  stroke="currentColor"
-                  strokeWidth="2"
-                >
-                  <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
-                  <circle cx="9" cy="7" r="4"></circle>
-                  <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
-                  <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
-                </svg>
-                Forum
-              </button>
-            </li>
-          </ul>
-        </div>
-
-        <div className="absolute bottom-0 left-0 w-64 right-0 p-4 border-t border-base-content/10">
-          <button
-            className={`flex items-center gap-3  px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors ${
-              activePage === 'profile' ? 'bg-[#FFB800] text-black' : ''
-            }`}
-            onClick={() => setActivePage('profile')}
-          >
-            <img
-              src={pp}
-              alt="Profile"
-              className="w-10 h-10 rounded-full border-2 border-base-content/10"
-            />
-            <div className="flex flex-col items-start">
-              <span className="font-medium text-left">{user.name}</span>
-              <span className="text-sm text-base-content/70">{user.rank}</span>
-            </div>
-          </button>
-        </div>
-      </nav>
-
-      <main className="dashboard__content flex-1">{renderPage()}</main>
-    </div>
-  );
-};
-
-export default Dashboard;
Index: client/src/Dashboard/components/ManagePosts.jsx
===================================================================
--- client/src/Dashboard/components/ManagePosts.jsx	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
+++ client/src/Dashboard/components/ManagePosts.jsx	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
@@ -0,0 +1,175 @@
+import React, {useState, useEffect} from 'react';
+import {useNavigate} from 'react-router-dom';
+import doneAll from '../../assets/images/done-all.svg';
+import trashIcon from '../../assets/images/delete.svg'; // Add this import
+import Navbar from './Navbar';
+
+const ManagePosts = () => {
+    const navigate = useNavigate();
+    const [posts, setPosts] = useState([]);
+    const [page, setPage] = useState(0);
+    const [hasMore, setHasMore] = useState(true);
+    const postsPerPage = 5;
+    const user = JSON.parse(localStorage.getItem('user'));
+
+    useEffect(() => {
+        fetchPosts();
+    }, [page]);
+
+    const fetchPosts = async () => {
+        try {
+            const response = await fetch(
+                `/review/posts?page=${page}&limit=${postsPerPage}`
+            );
+            if (!response.ok) {
+                throw new Error(`HTTP error! status: ${response.status}`);
+            }
+            const data = await response.json();
+            if (page === 0) {
+                setPosts(data);
+                console.log('Fetched posts:', data);
+            } else {
+                setPosts((prevPosts) => [...prevPosts, ...data]);
+            }
+            if (data.length < postsPerPage) {
+                setHasMore(false);
+            }
+        } catch (error) {
+            console.error('Error fetching forum posts:', error);
+        }
+    };
+
+    const handleDeletePost = async (postId) => {
+        try {
+            const response = await fetch(`/review/posts/${postId}`, {
+                method: 'DELETE',
+                headers: {
+                    'Content-Type': 'application/json',
+                },
+            });
+            if (!response.ok) {
+                throw new Error(`HTTP error! status: ${response.status}`);
+            }
+            setPosts((prevPosts) => prevPosts.filter((post) => post.id !== postId));
+            console.log('Post deleted successfully');
+        } catch (error) {
+            console.error('Error deleting post:', error);
+        }
+    };
+
+    const handleApprovePost = async (postId) => {
+        try {
+            const response = await fetch(`/review/posts/${postId}`, {
+                method: 'POST',
+                headers: {
+                    'Content-Type': 'application/json',
+                },
+                body: JSON.stringify({
+                    authorId: user.id,
+                    authorName: user.name,
+                }),
+            });
+            if (!response.ok) {
+                throw new Error(`HTTP error! status: ${response.status}`);
+            }
+            setPosts((prevPosts) => prevPosts.filter((post) => post.id !== postId));
+            console.log('Post approved successfully');
+        } catch (error) {
+            console.error('Error approving post:', error);
+        }
+    }
+
+    const handleLoadMore = () => {
+        setPage((prevPage) => prevPage + 1);
+    };
+
+    return (
+        <div
+            data-theme="luxury"
+            className="dashboard h-screen flex bg-base-100 overflow-none"
+        >
+            <Navbar></Navbar>
+            <div className="flex flex-col md:flex-row gap-6 p-6 h-full overflow-y-auto w-full">
+                <div className="flex-1 ml-8">
+                    <h1 className="text-3xl font-bold mb-4">Posts that need approval</h1>
+                    <div className="space-y-4" w-300>
+                        {posts.map((post) => (
+                            <div
+                                key={post.id}
+                                className="p-4 border rounded-lg shadow-sm hover:shadow-md transition  relative"
+                            >
+
+                                <button
+                                    className=" absolute top-2 right-20 p-1.5 cursor-pointer rounded-full hover:bg-gray-600 transition-colors"
+                                    onClick={(e) => {
+                                        e.stopPropagation();
+
+
+                                        if (
+                                            window.confirm(
+                                                'Are you sure you want to delete this post?'
+                                            )
+                                        ) {
+                                            handleApprovePost(post.id);
+                                        }
+                                    }}
+                                >
+                                    <img src={doneAll} alt="Approve" className="w-10 h-10"/>
+                                </button>
+                                <button
+                                    className=" absolute top-2 right-8 p-1.5 cursor-pointer rounded-full hover:bg-gray-600 transition-colors"
+                                    onClick={(e) => {
+                                        e.stopPropagation();
+                                        if (
+                                            window.confirm(
+                                                'Are you sure you want to delete this post?'
+                                            )
+                                        ) {
+                                            handleDeletePost(post.id);
+                                        }
+                                    }}
+                                >
+                                    <img src={trashIcon} alt="Delete" className="w-10 h-10"/>
+                                </button>
+
+                                <div className="flex items-center gap-4 mt-2">
+                                    <h2
+                                        className="text-3xl font-semibold mb-2 cursor-pointer hover:underline"
+                                        onClick={() => {
+                                            console.log('Post clicked:', post);
+                                            navigate(`/dashboard/forum-detail/${post.id}`, {
+                                                state: {post},
+                                            });
+                                        }}
+                                    >
+                                        {post.title}
+                                    </h2>
+                                </div>
+
+                                <p className="text-m text-gray-500">
+                                    By {post.authorName},{' '}
+                                    <span>{post.dateCreated.split('T')[0]}</span>
+                                </p>
+                                <p className="mt-2 text-gray-400 text-xl">
+                                    {post.content && post.content.length > 300
+                                        ? post.content.slice(0, 300) + '...'
+                                        : post.content}
+                                </p>
+
+                            </div>
+                        ))}
+                    </div>
+                    {hasMore && (
+                        <div className="flex justify-center mt-6">
+                            <button onClick={handleLoadMore} className="btn btn-outline">
+                                Load More
+                            </button>
+                        </div>
+                    )}
+                </div>
+            </div>
+        </div>
+    );
+};
+
+export default ManagePosts;
Index: client/src/Dashboard/components/Navbar.jsx
===================================================================
--- client/src/Dashboard/components/Navbar.jsx	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
+++ client/src/Dashboard/components/Navbar.jsx	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
@@ -1,3 +1,3 @@
-import React, { useState, useEffect } from 'react';
+import React  from 'react';
 import { useNavigate } from 'react-router-dom';
 import logoIcon from '../../assets/images/logoIcon.png';
@@ -81,5 +81,5 @@
               <button
                 className={`flex items-center gap-4 px-4 py-3 hover:bg-[#FFB800] hover:text-black rounded-lg transition-colors`}
-                onClick={() => navigate('/dashboard/forum')}
+                onClick={() => navigate('/dashboard/manage-posts')}
               >
                 <svg
Index: client/src/assets/images/done-all.svg
===================================================================
--- client/src/assets/images/done-all.svg	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
+++ client/src/assets/images/done-all.svg	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
@@ -0,0 +1,1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#dba54d"><path d="M268-240 42-466l57-56 170 170 56 56-57 56Zm226 0L268-466l56-57 170 170 368-368 56 57-424 424Zm0-226-57-56 198-198 57 56-198 198Z"/></svg>
Index: client/src/main.jsx
===================================================================
--- client/src/main.jsx	(revision 16160a4c1d2614a1e39956b2be6205509c92e4cd)
+++ client/src/main.jsx	(revision 8d2824b890bdb7b88fceac4e0aa65a28e34bdf8b)
@@ -7,5 +7,4 @@
 import Login from './LogIn/LogIn';
 import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
-import Dashboard from './Dashboard/Dashboard';
 import CreatePost from './CreatePost/CreatePost';
 import Task from './Dashboard/components/Task';
@@ -14,4 +13,5 @@
 import Profile from './Dashboard/components/Profile';
 import LeaderBoardEx from './LandingPage/components/LeaderBoardEx';
+import ManagePosts from "@/Dashboard/components/ManagePosts.jsx";
 createRoot(document.getElementById('root')).render(
   <Router>
@@ -23,4 +23,5 @@
       <Route path="/dashboard/create-post" element={<CreatePost />} />
       <Route path="/dashboard/forum" element={<Forum />} />
+      <Route path="/dashboard/manage-posts" element={<ManagePosts />} />
       <Route
         path="/dashboard/forum-detail/:postId"
