Index: backend/scripts/hourlyCheckForDailyChallengePosts.js
===================================================================
--- backend/scripts/hourlyCheckForDailyChallengePosts.js	(revision 36394f8075407935dd1e8d3bfa6c6c8784df9254)
+++ backend/scripts/hourlyCheckForDailyChallengePosts.js	(revision dd75b478f3a10c5271ff1d9b0da7040acd7d1636)
@@ -8,4 +8,12 @@
 async function checkForNewReviews() {
   const scriptExecutionTime = new Date();
+  const currentHour = scriptExecutionTime.getHours();
+
+  if (currentHour >= 1 && currentHour < 7) {
+    console.log(
+      `[${scriptExecutionTime.toISOString()}] Skipping hourly review check (between 1AM and 7AM).`
+    );
+    return;
+  }
   console.log(
     `[${scriptExecutionTime.toISOString()}] Starting hourly review check process`
@@ -13,12 +21,24 @@
 
   try {
-    const postsToReviewCount = await prisma.to_be_reviewed.count();
+    const posts = await prisma.to_be_reviewed.findMany({
+      where: {
+        topic: 'daily-challenge',
+      },
+      select: {
+        title: true,
+        created_at: true,
+      },
+      orderBy: {
+        created_at: 'asc',
+      },
+    });
 
     console.log(
-      `[${scriptExecutionTime.toISOString()}] Found ${postsToReviewCount} post(s) awaiting review.`
+      `[${scriptExecutionTime.toISOString()}] Found ${
+        posts.length
+      } daily-challenge post(s) awaiting review.`
     );
 
-    // If there are no posts, do nothing.
-    if (postsToReviewCount === 0) {
+    if (posts.length === 0) {
       console.log(
         `[${scriptExecutionTime.toISOString()}] No new posts to review. Skipping email notification.`
@@ -48,5 +68,5 @@
     for (const email of moderatorEmails) {
       try {
-        await sendHourlyReviewNotification(email, postsToReviewCount);
+        await sendHourlyReviewNotification(email, posts);
         console.log(
           `[${scriptExecutionTime.toISOString()}] Hourly notification sent to ${email}`
Index: backend/scripts/populateChallengesDb.js
===================================================================
--- backend/scripts/populateChallengesDb.js	(revision 36394f8075407935dd1e8d3bfa6c6c8784df9254)
+++ backend/scripts/populateChallengesDb.js	(revision dd75b478f3a10c5271ff1d9b0da7040acd7d1636)
@@ -1,83 +1,83 @@
-const prisma = require('../lib/prisma');
-const fs = require('fs').promises;
-const path = require('path');
-const Challenge = require('../models/Challenge');
+// const prisma = require('../lib/prisma');
+// const fs = require('fs').promises;
+// const path = require('path');
+// const Challenge = require('../models/Challenge');
 
-async function populateChallenges() {
-  try {
-    const jsonPath = path.join(
-      __dirname,
-      '../challenges/initialChallenges.json'
-    );
-    const data = await fs.readFile(jsonPath, 'utf8');
-    const challengesData = JSON.parse(data);
+// async function populateChallenges() {
+//   try {
+//     const jsonPath = path.join(
+//       __dirname,
+//       '../challenges/initialChallenges.json'
+//     );
+//     const data = await fs.readFile(jsonPath, 'utf8');
+//     const challengesData = JSON.parse(data);
 
-    console.log(`Found ${challengesData.length} challenges to import`);
+//     console.log(`Found ${challengesData.length} challenges to import`);
 
-    let currentDate = new Date();
+//     let currentDate = new Date();
 
-    for (const challengeData of challengesData) {
-      const challenge = new Challenge({
-        title: challengeData.title,
-        content: challengeData.description,
-        solving_date: currentDate,
-        attempted_by: 0,
-        solved_by: 0,
-        expired: false,
-        examples: challengeData.examples,
-        test_cases: challengeData.testcases.map((testCase) => ({
-          input: testCase.input,
-          output: testCase.output,
-        })),
-        output_type: challengeData.output_type,
-        difficulty: challengeData.difficulty,
-      });
+//     for (const challengeData of challengesData) {
+//       const challenge = new Challenge({
+//         title: challengeData.title,
+//         content: challengeData.description,
+//         solving_date: currentDate,
+//         attempted_by: 0,
+//         solved_by: 0,
+//         expired: false,
+//         examples: challengeData.examples,
+//         test_cases: challengeData.testcases.map((testCase) => ({
+//           input: testCase.input,
+//           output: testCase.output,
+//         })),
+//         output_type: challengeData.output_type,
+//         difficulty: challengeData.difficulty,
+//       });
 
-      console.log(
-        `Processing challenge: ${challenge.title} with date ${
-          challenge.solving_date.toISOString().split('T')[0]
-        }`
-      );
+//       console.log(
+//         `Processing challenge: ${challenge.title} with date ${
+//           challenge.solving_date.toISOString().split('T')[0]
+//         }`
+//       );
 
-      const createdChallenge = await prisma.challenges.create({
-        data: {
-          solving_date: challenge.solving_date,
-          title: challenge.title,
-          content: challenge.content,
-          attempted_by: challenge.attempted_by,
-          solved_by: challenge.solved_by,
-          expired: challenge.expired,
-          examples: challenge.examples,
-          output_type: challenge.output_type,
+//       const createdChallenge = await prisma.challenges.create({
+//         data: {
+//           solving_date: challenge.solving_date,
+//           title: challenge.title,
+//           content: challenge.content,
+//           attempted_by: challenge.attempted_by,
+//           solved_by: challenge.solved_by,
+//           expired: challenge.expired,
+//           examples: challenge.examples,
+//           output_type: challenge.output_type,
 
-          test_cases: {
-            create: challenge.test_cases.map((example) => ({
-              input: example.input,
-              output: example.output,
-            })),
-          },
-          output_type: challengeData.output_type,
-          difficulty: challengeData.difficulty,
-        },
-      });
+//           test_cases: {
+//             create: challenge.test_cases.map((example) => ({
+//               input: example.input,
+//               output: example.output,
+//             })),
+//           },
+//           output_type: challengeData.output_type,
+//           difficulty: challengeData.difficulty,
+//         },
+//       });
 
-      console.log(`Created challenge with ID: ${createdChallenge.id}`);
+//       console.log(`Created challenge with ID: ${createdChallenge.id}`);
 
-      currentDate = new Date(currentDate);
-      currentDate.setDate(currentDate.getDate() + 1);
-    }
+//       currentDate = new Date(currentDate);
+//       currentDate.setDate(currentDate.getDate() + 1);
+//     }
 
-    console.log('Challenge import completed successfully!');
-  } catch (error) {
-    console.error('Error importing challenges:', error);
-  } finally {
-    await prisma.$disconnect();
-  }
-}
+//     console.log('Challenge import completed successfully!');
+//   } catch (error) {
+//     console.error('Error importing challenges:', error);
+//   } finally {
+//     await prisma.$disconnect();
+//   }
+// }
 
-populateChallenges()
-  .then(() => console.log('Done'))
-  .catch((e) => {
-    console.error('Script failed:', e);
-    process.exit(1);
-  });
+// populateChallenges()
+//   .then(() => console.log('Done'))
+//   .catch((e) => {
+//     console.error('Script failed:', e);
+//     process.exit(1);
+//   });
Index: backend/services/emailService.js
===================================================================
--- backend/services/emailService.js	(revision 36394f8075407935dd1e8d3bfa6c6c8784df9254)
+++ backend/services/emailService.js	(revision dd75b478f3a10c5271ff1d9b0da7040acd7d1636)
@@ -171,13 +171,27 @@
   }
 };
-const sendHourlyReviewNotification = 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>These posts are related to the daily challenge and need your attention ASAP!.</p>
+const sendHourlyReviewNotification = async (userEmail, posts) => {
+  const postsList = posts
+    .map((post) => {
+      const date = new Date(post.created_at);
+      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: 'Hourly Reminder: Daily Challenge Posts Awaiting Review',
+    html: `
+        <h1>Hourly Reminder: Daily Challenge Posts Awaiting Review</h1>
+        <p>This is an automated notification to let you know that there are <strong>${posts.length}</strong> daily challenge forum post(s) waiting for review.</p>
+        <h3>Posts requiring review:</h3>
+        <ul style="padding-left: 20px;">
+          ${postsList}
+        </ul>
         <p>Please log in to the moderator dashboard at your earliest convenience to review and approve or reject these submissions.</p>
         <br>
Index: client/src/contexts/AuthContext.jsx
===================================================================
--- client/src/contexts/AuthContext.jsx	(revision 36394f8075407935dd1e8d3bfa6c6c8784df9254)
+++ client/src/contexts/AuthContext.jsx	(revision dd75b478f3a10c5271ff1d9b0da7040acd7d1636)
@@ -6,9 +6,9 @@
   useRef,
   useCallback,
-} from "react";
-import { useNavigate } from "react-router-dom";
-import { createClient } from "@supabase/supabase-js";
-import { loginUser, registerUser } from "@/services/registerLoginService";
-import { jwtDecode } from "jwt-decode";
+} from 'react';
+import { useNavigate } from 'react-router-dom';
+import { createClient } from '@supabase/supabase-js';
+import { loginUser, registerUser } from '@/services/registerLoginService';
+
 export const supabase = createClient(
   import.meta.env.VITE_SUPABASE_URL,
@@ -18,5 +18,5 @@
       persistSession: true,
       autoRefreshToken: true,
-      storageKey: "supabase-auth-token",
+      storageKey: 'supabase-auth-token',
       storage: localStorage,
     },
@@ -40,10 +40,10 @@
     clearTimeout(inactivityTimeoutRef.current);
     clearTimeout(tokenExpiryTimeoutRef.current);
-    navigate("/");
+    navigate('/');
     await supabase.auth.signOut();
 
-    localStorage.removeItem("user");
-    localStorage.removeItem("jwt");
-    localStorage.removeItem("lastActivityTimestamp");
+    localStorage.removeItem('user');
+    localStorage.removeItem('jwt');
+    localStorage.removeItem('lastActivityTimestamp');
     setUser(null);
     userRef.current = null;
@@ -51,6 +51,6 @@
   useEffect(() => {
     const checkStaleSession = () => {
-      const storedUser = localStorage.getItem("user");
-      const lastActivity = localStorage.getItem("lastActivityTimestamp");
+      const storedUser = localStorage.getItem('user');
+      const lastActivity = localStorage.getItem('lastActivityTimestamp');
 
       if (storedUser && lastActivity) {
@@ -67,9 +67,9 @@
   const resetInactivityTimer = useCallback(() => {
     const now = Date.now();
-    localStorage.setItem("lastActivityTimestamp", Date.now().toString());
+    localStorage.setItem('lastActivityTimestamp', Date.now().toString());
     clearTimeout(inactivityTimeoutRef.current);
     if (userRef.current) {
       inactivityTimeoutRef.current = setTimeout(() => {
-        console.warn("Logged out due to inactivity");
+        console.warn('Logged out due to inactivity');
         logout();
       }, INACTIVITY_TIMEOUT);
@@ -84,5 +84,5 @@
       });
       if (error || !data.session?.access_token) {
-        return { success: false, error: error?.message || "Login failed" };
+        return { success: false, error: error?.message || 'Login failed' };
       }
 
@@ -95,6 +95,6 @@
       setUser(backendData.user);
       userRef.current = backendData.user.id;
-      localStorage.setItem("user", JSON.stringify(backendData.user));
-      localStorage.setItem("jwt", data.session.access_token);
+      localStorage.setItem('user', JSON.stringify(backendData.user));
+      localStorage.setItem('jwt', data.session.access_token);
       resetInactivityTimer();
       return { success: true };
@@ -136,5 +136,5 @@
           return {
             success: false,
-            error: "An unexpected network error occurred.",
+            error: 'An unexpected network error occurred.',
           };
         }
@@ -145,5 +145,5 @@
 
   useEffect(() => {
-    const localUser = localStorage.getItem("user");
+    const localUser = localStorage.getItem('user');
     if (localUser) {
       setUser(localUser);
@@ -153,10 +153,10 @@
       async (event, session) => {
         console.log(event);
-        if (event === "TOKEN_REFRESHED" && session) {
+        if (event === 'TOKEN_REFRESHED' && session) {
           const now = Date.now();
           const readableTime = new Date(now).toLocaleString();
           console.log(`Token reset at: ${readableTime}`);
 
-          localStorage.setItem("jwt", session.access_token);
+          localStorage.setItem('jwt', session.access_token);
 
           return;
@@ -167,7 +167,7 @@
             setUser(backendData.user);
             userRef.current = backendData.user.id;
-            localStorage.setItem("user", JSON.stringify(backendData.user));
-            localStorage.setItem("jwt", session.access_token);
-            if (event === "INITIAL_SESSION" || event === "SIGNED_IN") {
+            localStorage.setItem('user', JSON.stringify(backendData.user));
+            localStorage.setItem('jwt', session.access_token);
+            if (event === 'INITIAL_SESSION' || event === 'SIGNED_IN') {
               resetInactivityTimer();
             }
@@ -178,6 +178,6 @@
           setUser(null);
           userRef.current = null;
-          localStorage.removeItem("user");
-          localStorage.removeItem("jwt");
+          localStorage.removeItem('user');
+          localStorage.removeItem('jwt');
         }
         setLoading(false);
@@ -191,5 +191,5 @@
 
   useEffect(() => {
-    const events = ["click", "mousemove", "keydown", "scroll", "touchstart"];
+    const events = ['click', 'mousemove', 'keydown', 'scroll', 'touchstart'];
     const handleActivity = () => resetInactivityTimer();
     events.forEach((event) => window.addEventListener(event, handleActivity));
@@ -203,5 +203,5 @@
     setUser(newUserData);
 
-    localStorage.setItem("user", JSON.stringify(newUserData));
+    localStorage.setItem('user', JSON.stringify(newUserData));
   }, []);
   return (
