Index: backend/controllers/forumController.js
===================================================================
--- backend/controllers/forumController.js	(revision 7829e2775936dac429a91cc6718a77cda167feae)
+++ backend/controllers/forumController.js	(revision 4a2a8f2b734d9ee6556912a7296d0ccb5eed0b05)
@@ -148,4 +148,20 @@
 }
 
+const scorePosts = (posts) => {
+  const now = new Date();
+  return posts
+    .map((post) => {
+      const createdAt = new Date(post.date_created);
+      const daysSince = Math.floor((now - createdAt) / (1000 * 60 * 60 * 24));
+      const commentCount = post.comment_count || 0;
+      const score = commentCount * 2 - daysSince;
+      return {
+        ...post,
+        score,
+      };
+    })
+    .sort((a, b) => b.score - a.score);
+};
+
 const getForumPosts = async (req, res) => {
   try {
@@ -162,5 +178,5 @@
 
     const filters = [];
-
+    let orderBy = [];
     if (topic && topic !== "all") {
       filters.push({ topic });
@@ -175,5 +191,21 @@
       }
     }
-
+    if (sort === "past-week" || sort === "past-month" || sort === "past-year") {
+      const fromDate = new Date();
+      if (sort === "past-week") {
+        fromDate.setDate(fromDate.getDate() - 7);
+      } else if (sort === "past-month") {
+        fromDate.setDate(fromDate.getDate() - 30);
+      } else if (sort === "past-year") {
+        fromDate.setDate(fromDate.getDate() - 365);
+      }
+      filters.push({
+        date_created: {
+          gte: fromDate,
+        },
+      });
+    } else if (!commentSort) {
+      orderBy.push({ date_created: "desc" });
+    }
     if (search) {
       filters.push({
@@ -188,7 +220,4 @@
     const whereCondition = filters.length > 0 ? { AND: filters } : {};
 
-    // Determine ordering - using an array to support multiple sorting criteria
-    let orderBy = [];
-
     if (commentSort === "most-popular") {
       orderBy.push({ comment_count: "desc" });
@@ -198,10 +227,4 @@
       orderBy.push({ comment_count: "asc" });
       orderBy.push({ date_created: "desc" });
-    } else {
-      if (sort === "oldest") {
-        orderBy.push({ date_created: "asc" });
-      } else {
-        orderBy.push({ date_created: "desc" });
-      }
     }
 
@@ -226,8 +249,14 @@
     });
 
-    const forumPosts = allPosts.map((post) => ({
+    let forumPosts = allPosts.map((post) => ({
       ...post,
       challengeTitle: post.challenges?.title || null,
     }));
+    if (
+      (sort === "past-week" || sort === "past-month" || sort == "past-year") &&
+      !commentSort
+    ) {
+      forumPosts = scorePosts(forumPosts).map(({ score, ...post }) => post);
+    }
 
     // Set cache control headers to prevent caching
Index: client/src/Dashboard/components/Forum.jsx
===================================================================
--- client/src/Dashboard/components/Forum.jsx	(revision 7829e2775936dac429a91cc6718a77cda167feae)
+++ client/src/Dashboard/components/Forum.jsx	(revision 4a2a8f2b734d9ee6556912a7296d0ccb5eed0b05)
@@ -345,5 +345,7 @@
                         >
                           <option value="newest">Most Recent</option>
-                          <option value="oldest">Oldest First</option>
+                          <option value="past-week">Past Week</option>
+                          <option value="past-month">Past Month</option>
+                          <option value="past-year">Past Year</option>
                         </select>
                       </div>
Index: client/src/Dashboard/components/ManagePosts.jsx
===================================================================
--- client/src/Dashboard/components/ManagePosts.jsx	(revision 7829e2775936dac429a91cc6718a77cda167feae)
+++ client/src/Dashboard/components/ManagePosts.jsx	(revision 4a2a8f2b734d9ee6556912a7296d0ccb5eed0b05)
@@ -128,4 +128,7 @@
   };
 
+  const openViewPostModal = (post) => {
+    showModal("", "view-post", post.id, post);
+  };
   const closeModal = () => {
     setModal({
@@ -657,5 +660,8 @@
                 className="p-4 sm:p-6 border border-base-300 bg-base-200 rounded-lg shadow-sm hover:shadow-md transition relative w-full"
               >
-                <h1 className="text-lg sm:text-xl lg:text-2xl font-bold mb-4 pr-16 sm:pr-20">
+                <h1
+                  className="text-lg sm:text-xl lg:text-2xl font-bold mb-4 pr-16 sm:pr-20"
+                  onClick={() => openViewPostModal(post)}
+                >
                   {post.title}
                 </h1>
@@ -715,5 +721,7 @@
                 </p>
                 <p className="text-sm sm:text-base text-base-content/90 whitespace-pre-line break-words">
-                  {post.content}
+                  {post.content && post.content.length > 100
+                    ? post.content.slice(0, 100) + "..."
+                    : post.content}
                 </p>
               </div>
@@ -751,5 +759,5 @@
           aria-modal="true"
         >
-          <div className="bg-base-200 rounded-lg shadow-xl p-4 sm:p-6  w-full max-w-sm sm:max-w-md mx-4">
+          <div className="bg-base-200 rounded-lg shadow-xl p-4 sm:p-6  w-full max-w-xl sm:max-w-md mx-4">
             <div className="flex items-center gap-3 mb-4">
               {(modal.type === "approve" || modal.type === "success") && (
@@ -797,7 +805,35 @@
               </h3>
             </div>
-            <div className="flex py-3 sm:py-4 items-center gap-3">
-              <p>{modal.message}</p>
-            </div>
+            {modal.type === "view-post" && modal.post ? (
+              <div className="space-y-4 max-h-[70vh] overflow-y-auto pr-2">
+                <h3
+                  className="font-bold text-xl sm:text-2xl text-base-content"
+                  id="modal-title"
+                >
+                  {modal.post.title}
+                </h3>
+                <p className="text-sm text-base-content/70">
+                  By {modal.post.author_name}
+                  <span className="mx-1.5">·</span>
+                  <span className="italic">
+                    {new Date(modal.post.created_at).toLocaleDateString(
+                      "en-US",
+                      {
+                        year: "numeric",
+                        month: "long",
+                        day: "numeric",
+                      }
+                    )}
+                  </span>
+                </p>
+                <div className="text-base text-base-content/90 whitespace-pre-line break-words pt-4 border-t border-base-300">
+                  {modal.post.content}
+                </div>
+              </div>
+            ) : (
+              <div className="flex py-3 sm:py-4 items-center gap-3">
+                <p>{modal.message}</p>
+              </div>
+            )}
             <div className="flex justify-end gap-2 sm:gap-3 mt-3 sm:mt-4">
               {modal.type === "approve" || modal.type === "delete" ? (
