Index: backend/controllers/apiController.js
===================================================================
--- backend/controllers/apiController.js	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ backend/controllers/apiController.js	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -145,14 +145,16 @@
 const loginPOST = async (req, res) => {
   try {
-    const { email, password } = req.body;
+    const { email } = req.body;
 
-    if (!email || !password) {
+    if (!email) {
       return res
         .status(400)
-        .json({ message: "Email and password are required", success: false });
+        .json({ message: "Email is required", success: false });
     }
+
     const userData = await prisma.users.findUnique({
       where: { email: email },
     });
+
     if (!userData) {
       return res
@@ -161,37 +163,11 @@
     }
 
-    const { data, error } = await supabase.auth.signInWithPassword({
-      email,
-      password,
+    const safeUserData = convertBigIntToString(userData);
+
+    res.status(200).json({
+      message: "User data retrieved successfully",
+      success: true,
+      user: safeUserData,
     });
-
-    if (error) {
-      return res.status(401).json({ message: error.message, success: false });
-    }
-
-    try {
-      const userData = await prisma.users.findUnique({
-        where: { email: email },
-      });
-
-      if (!userData) {
-        return res
-          .status(404)
-          .json({ message: "User not found in database", success: false });
-      }
-
-      const safeUserData = convertBigIntToString(userData);
-
-      res.status(200).json({
-        message: "User data retrieved",
-        success: true,
-        user: safeUserData,
-      });
-    } catch (error) {
-      console.error("Login error:", error);
-      res
-        .status(500)
-        .json({ message: "An error occurred during login", success: false });
-    }
   } catch (error) {
     console.error("Login error:", error);
Index: backend/controllers/forumController.js
===================================================================
--- backend/controllers/forumController.js	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ backend/controllers/forumController.js	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -114,40 +114,4 @@
   }
 }
-//Dali treba?
-// const createApprovedForumPost = async (req, res) => {
-//   const { title, content, authorId, authorName } = req.body;
-
-//   try {
-//     const user = await prisma.users.findUnique({
-//       where: { id: authorId },
-//     });
-
-//     const post = new ForumPost({
-//       title,
-//       content,
-//       authorName,
-//     });
-
-//     const savedPost = await prisma.forum_posts.create({
-//       data: {
-//         title: post.title,
-//         content: post.content,
-//         author_id: authorId,
-//         author_name: post.authorName,
-//       },
-//     });
-
-//     post.id = savedPost.id;
-//     await decrementPostCounter(authorId);
-
-//     res.status(201).json({
-//       message: "Approved post published successfully",
-//       post: savedPost,
-//     });
-//   } catch (err) {
-//     console.error("Server error:", err);
-//     res.status(500).json({ error: "Internal server error" });
-//   }
-// };
 
 const getForumPosts = async (req, res) => {
Index: backend/controllers/taskController.js
===================================================================
--- backend/controllers/taskController.js	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ backend/controllers/taskController.js	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -4,6 +4,8 @@
 const getTaskByDate = async (req, res) => {
   const { date } = req.params;
-  console.log(date);
-
+  const user = await prisma.users.findUnique({
+    where: { id: "af582629-8385-47b9-9f01-3267652f693c" },
+  });
+  console.log(user);
   try {
     const now = new Date();
@@ -296,6 +298,5 @@
     }
     if (user.solvedDailyChallenge) {
-      alert("You have already solved today's challenge!");
-      return;
+      return res.status(404).json({ message: "User daily challenge solved" });
     }
     let attempts = user.attempts || 0;
Index: client/src/App.jsx
===================================================================
--- client/src/App.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/App.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -1,7 +1,44 @@
-import React, { useEffect, useState } from 'react';
+import { Routes, Route } from "react-router-dom";
+import ProtectedRoute from "./routes/ProtectedRoute";
+import LandingPage from "./LandingPage/LandingPage";
+import Register from "./Register/Register";
+import Login from "./LogIn/LogIn";
+import CreatePost from "./CreatePost/CreatePost";
+import Task from "./Dashboard/components/Task";
+import Forum from "./Dashboard/components/Forum";
+import ForumPostDetail from "./Dashboard/components/ForumPostDetail";
+import Profile from "./Dashboard/components/Profile";
+import LeaderBoardEx from "./LandingPage/components/LeaderBoardEx";
+import ManagePosts from "@/Dashboard/components/ManagePosts.jsx";
+import DashboardLayout from "./Dashboard/DashboardLayout";
+import Logout from "./Dashboard/components/Logout";
 
-function App() {
-  return <></>;
+export default function App() {
+  return (
+    <Routes>
+      <Route path="/" element={<LandingPage />} />
+      <Route path="/register" element={<Register />} />
+      <Route path="/login" element={<Login />} />
+      <Route path="/logout" element={<Logout />} />
+
+      {/* Protected Routes */}
+
+      <Route
+        path="/dashboard"
+        element={
+          <ProtectedRoute>
+            <DashboardLayout />
+          </ProtectedRoute>
+        }
+      >
+        <Route index element={<Task />} />
+        <Route path="create-post" element={<CreatePost />} />
+        <Route path="forum" element={<Forum />} />
+        <Route path="manage-posts" element={<ManagePosts />} />
+        <Route path="forum-detail/:postId" element={<ForumPostDetail />} />
+        <Route path="profile" element={<Profile />} />
+        <Route path="leaderboard" element={<LeaderBoardEx />} />
+      </Route>
+    </Routes>
+  );
 }
-
-export default App;
Index: client/src/CreatePost/CreatePost.jsx
===================================================================
--- client/src/CreatePost/CreatePost.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/CreatePost/CreatePost.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -3,9 +3,9 @@
 import { useEffect } from "react";
 import { createForumPost } from "@/services/forumService";
-
+import { useAuth } from "@/contexts/AuthContext";
 const CreatePost = () => {
   const [title, setTitle] = useState("");
   const [content, setContent] = useState("");
-
+  const { user } = useAuth();
   const [isSubmitting, setIsSubmitting] = useState(false);
 
@@ -28,7 +28,6 @@
   const handleSubmit = async (e) => {
     e.preventDefault();
-    // setError('');
+
     setIsSubmitting(true);
-    const user = JSON.parse(localStorage.getItem("user"));
 
     if (!user || !user.id || !user.name) {
Index: client/src/Dashboard/DashboardLayout.jsx
===================================================================
--- client/src/Dashboard/DashboardLayout.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
+++ client/src/Dashboard/DashboardLayout.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -0,0 +1,19 @@
+import React from "react";
+import { Outlet } from "react-router-dom";
+import Navbar from "./components/Navbar";
+
+const DashboardLayout = () => {
+  return (
+    <div
+      data-theme="luxury"
+      className="dashboard h-screen flex bg-base-100 overflow-hidden"
+    >
+      <Navbar />
+      <div className="flex-1 w-full h-full overflow-y-auto">
+        <Outlet />
+      </div>
+    </div>
+  );
+};
+
+export default DashboardLayout;
Index: client/src/Dashboard/components/Forum.jsx
===================================================================
--- client/src/Dashboard/components/Forum.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/Dashboard/components/Forum.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -5,4 +5,5 @@
 import Navbar from "./Navbar";
 import { getForumPosts, deleteForumPost } from "@/services/forumService";
+import { useAuth } from "@/contexts/AuthContext";
 const Forum = () => {
   const navigate = useNavigate();
@@ -13,5 +14,5 @@
   const [loadingMore, setLoadingMore] = useState(false);
   const postsPerPage = 5;
-  const user = JSON.parse(localStorage.getItem("user"));
+  const { user } = useAuth();
 
   useEffect(() => {
@@ -28,5 +29,5 @@
 
       const data = await getForumPosts(page, postsPerPage);
-      console.log(data);
+
       if (page === 0) {
         setPosts(data);
@@ -71,5 +72,4 @@
       className="dashboard h-screen flex bg-base-100 overflow-hidden"
     >
-      <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 mb-6">
@@ -173,5 +173,4 @@
         </div>
 
-        {/* Create a Post Button */}
         <div className="w-full md:w-1/4">
           <div className="flex flex-row justify-end p-6 rounded-lg shadow-md">
Index: client/src/Dashboard/components/ForumPostDetail.jsx
===================================================================
--- client/src/Dashboard/components/ForumPostDetail.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/Dashboard/components/ForumPostDetail.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -1,6 +1,7 @@
-import React, { useEffect, useState } from "react";
+import React, { use, useEffect, useState } from "react";
 import trashIcon from "../../assets/images/delete.svg";
 import Navbar from "./Navbar";
 import { useParams, useNavigate, useLocation } from "react-router-dom";
+import { useAuth } from "@/contexts/AuthContext";
 import {
   getCommentsForPost,
@@ -19,5 +20,5 @@
   const post = statePost[0];
   const [posting, setPosting] = useState(false);
-  const user = JSON.parse(localStorage.getItem("user"));
+  const { user } = useAuth();
   const navigate = useNavigate();
   const { postId } = useParams();
Index: client/src/Dashboard/components/Logout.jsx
===================================================================
--- client/src/Dashboard/components/Logout.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
+++ client/src/Dashboard/components/Logout.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -0,0 +1,15 @@
+import { useEffect } from "react";
+import { Navigate } from "react-router-dom";
+import { useAuth } from "../../contexts/AuthContext";
+
+const Logout = () => {
+  const { logout } = useAuth();
+
+  useEffect(() => {
+    logout();
+  }, [logout]);
+
+  return <Navigate to="/" />;
+};
+
+export default Logout;
Index: client/src/Dashboard/components/ManagePosts.jsx
===================================================================
--- client/src/Dashboard/components/ManagePosts.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/Dashboard/components/ManagePosts.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -3,4 +3,5 @@
 import doneAll from "../../assets/images/done-all.svg";
 import trashIcon from "../../assets/images/delete.svg";
+import { useAuth } from "@/contexts/AuthContext";
 import Navbar from "./Navbar";
 import { useCallback } from "react";
@@ -19,5 +20,5 @@
   const [error, setError] = useState(null);
   const postsPerPage = 5;
-  const user = JSON.parse(localStorage.getItem("user"));
+  const { user } = useAuth();
   const [modal, setModal] = useState({
     isOpen: false,
@@ -62,5 +63,4 @@
     try {
       const data = await getReviewPosts(page, postsPerPage, user.id);
-      console.log("Fetched posts data:", data);
 
       setPosts((prevPosts) => (page === 0 ? data : [...prevPosts, ...data]));
@@ -155,5 +155,4 @@
       className="dashboard h-screen flex bg-base-100 overflow-none"
     >
-      <Navbar />
       <div className="flex flex-col w-full h-full overflow-y-auto p-6">
         <div className="flex-1 md:ml-8">
Index: client/src/Dashboard/components/Navbar.jsx
===================================================================
--- client/src/Dashboard/components/Navbar.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/Dashboard/components/Navbar.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -5,9 +5,10 @@
 import pp from "../../assets/images/pp.svg";
 import RankBadge from "@/utils/RankBadge";
+import { useAuth } from "@/contexts/AuthContext";
 
 export default function Navbar() {
-  const user = JSON.parse(localStorage.getItem("user"));
+  const navigate = useNavigate();
+  const { user } = useAuth();
 
-  const navigate = useNavigate();
   return (
     <nav className="dashboard__navbar w-80 min-h-screen bg-base-200 text-base-content">
Index: client/src/Dashboard/components/Profile.jsx
===================================================================
--- client/src/Dashboard/components/Profile.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/Dashboard/components/Profile.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -8,31 +8,11 @@
 import { useEffect } from "react";
 const Profile = () => {
-  const { logout } = useAuth();
+  const { user, loading, logout } = useAuth();
   const navigate = useNavigate();
-  const user = JSON.parse(localStorage.getItem("user"));
-  useEffect(() => {
-    if (!user) {
-      navigate("/");
-    }
-  }, [user, navigate]);
 
   const handleSignOut = async () => {
-    await logout();
-    navigate("/");
+    navigate("/logout");
   };
 
-  if (!user) {
-    return (
-      <div
-        data-theme="luxury"
-        className="h-screen flex items-center justify-center"
-      >
-        <div className="text-center">
-          <span className="loading loading-spinner loading-lg"></span>
-          <p className="mt-4">Redirecting to login...</p>
-        </div>
-      </div>
-    );
-  }
   return (
     <div
@@ -40,5 +20,4 @@
       className="dashboard h-screen flex bg-base-100 overflow-none"
     >
-      <Navbar></Navbar>
       <div
         data-theme="luxury"
@@ -47,27 +26,36 @@
         <div className="card w-full max-w-md bg-base-100 shadow-xl">
           <div className="card-body items-center text-center">
-            <div className="avatar">
-              <div className="w-24 rounded-full ring ring-primary ring-offset-base-100 ring-offset-2">
-                <img src={pp} alt="Profile" />
-              </div>
-            </div>
-            <h2 className="card-title mt-4">{user.name}</h2>
-            <p className="text-gray-500">{user.email}</p>
-            <div className="mt-4">
-              <div className="text-lg">
-                <RankBadge rankName={user.rank} size="lg" />
-              </div>
-              <p className="text-lg mt-5">
-                <span className="font-bold">Points:</span> {user.points}
-              </p>
-            </div>
-            <div className="mt-6">
-              <a onClick={handleSignOut} className="btn btn-action btn-sm mx-2">
-                Sign Out
-              </a>
-              <a href="/register" className="btn btn-action btn-sm mx-2">
-                Create New Account
-              </a>
-            </div>
+            {loading ? (
+              <span className="loading loading-spinner loading-lg"></span>
+            ) : (
+              <>
+                <div className="avatar">
+                  <div className="w-24 rounded-full ring ring-primary ring-offset-base-100 ring-offset-2">
+                    <img src={pp} alt="Profile" />
+                  </div>
+                </div>
+                <h2 className="card-title mt-4">{user.name}</h2>
+                <p className="text-gray-500">{user.email}</p>
+                <div className="mt-4">
+                  <div className="text-lg">
+                    <RankBadge rankName={user.rank} size="lg" />
+                  </div>
+                  <p className="text-lg mt-5">
+                    <span className="font-bold">Points:</span> {user.points}
+                  </p>
+                </div>
+                <div className="mt-6">
+                  <a
+                    onClick={handleSignOut}
+                    className="btn btn-action btn-sm mx-2"
+                  >
+                    Sign Out
+                  </a>
+                  <a href="/register" className="btn btn-action btn-sm mx-2">
+                    Create New Account
+                  </a>
+                </div>
+              </>
+            )}
           </div>
         </div>
Index: client/src/Dashboard/components/Task.jsx
===================================================================
--- client/src/Dashboard/components/Task.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/Dashboard/components/Task.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -1,5 +1,6 @@
 import React, { useEffect, useState } from "react";
-import Navbar from "./Navbar";
+
 import { useNavigate } from "react-router-dom";
+import { useAuth } from "@/contexts/AuthContext";
 import {
   getTaskForDate,
@@ -20,22 +21,5 @@
 
   const today = new Date().toLocaleDateString();
-  const [currentUser, setCurrentUser] = useState(() => {
-    const storedUser = localStorage.getItem("user");
-    const initialUser = storedUser ? JSON.parse(storedUser) : {};
-    return {
-      attempts: 0,
-      daily_test_case_id: null,
-      solvedDailyChallenge: false,
-      points: 0,
-      id: null,
-      ...initialUser,
-    };
-  });
-
-  useEffect(() => {
-    if (currentUser && currentUser.id) {
-      localStorage.setItem("user", JSON.stringify(currentUser));
-    }
-  }, [currentUser]);
+  const { user, updateUser, loading } = useAuth();
 
   useEffect(() => {
@@ -86,17 +70,17 @@
       let finalTestCaseIdToStore = null;
 
-      if (currentUser.daily_test_case_id) {
+      if (user.daily_test_case_id) {
         try {
           fetchedApiTestCaseData = await getSpecificTestCase(
-            currentUser.daily_test_case_id
+            user.daily_test_case_id
           );
           if (fetchedApiTestCaseData && fetchedApiTestCaseData.id) {
             finalTestCaseIdToStore = fetchedApiTestCaseData.id;
           } else {
-            setCurrentUser((prev) => ({ ...prev, daily_test_case_id: null }));
+            updateUser({ ...user, daily_test_case_id: null });
           }
         } catch (specificFetchError) {
           console.warn(
-            `Error fetching specific test case ${currentUser.daily_test_case_id}:`,
+            `Error fetching specific test case ${user.daily_test_case_id}:`,
             specificFetchError
           );
@@ -106,5 +90,5 @@
             specificFetchError.response.status === 404
           ) {
-            setCurrentUser((prev) => ({ ...prev, daily_test_case_id: null }));
+            updateUser({ ...user, daily_test_case_id: null });
           }
         }
@@ -112,21 +96,13 @@
 
       if (!finalTestCaseIdToStore) {
-        console.log("Fetching random test case for challenge:", challengeId);
-
         fetchedApiTestCaseData = await getTestCaseForTask(challengeId);
         if (fetchedApiTestCaseData && fetchedApiTestCaseData.id) {
           finalTestCaseIdToStore = fetchedApiTestCaseData.id;
 
-          setCurrentUser((prev) => ({
-            ...prev,
-            daily_test_case_id: finalTestCaseIdToStore,
-          }));
-
-          if (currentUser.id) {
+          updateUser({ ...user, daily_test_case_id: finalTestCaseIdToStore });
+
+          if (user.id) {
             try {
-              await updateUserDailyTestCaseId(
-                currentUser.id,
-                finalTestCaseIdToStore
-              );
+              await updateUserDailyTestCaseId(user.id, finalTestCaseIdToStore);
               console.log(
                 "Successfully updated daily_test_case_id on backend."
@@ -184,10 +160,5 @@
         return;
       }
-      const result = await evaluate(
-        task.id,
-        userOutput,
-        testCase.id,
-        currentUser.id
-      );
+      const result = await evaluate(task.id, userOutput, testCase.id, user.id);
 
       if (result.success) {
@@ -197,11 +168,11 @@
         setIsCorrect(true);
 
-        setCurrentUser((prev) => ({
-          ...prev,
+        updateUser({
+          ...user,
           points: result.newTotalPoints,
           solvedDailyChallenge: true,
           daily_points: result.scoreAwarded,
           rank: result.rank,
-        }));
+        });
       } else {
         setEvalResult(
@@ -210,8 +181,8 @@
         setIsCorrect(false);
 
-        setCurrentUser((prev) => ({
-          ...prev,
+        updateUser({
+          ...user,
           attempts: result.attemptsMade,
-        }));
+        });
       }
     } catch (error) {
@@ -226,7 +197,17 @@
     setShowTask(false);
   };
+
+  if (loading) {
+    return (
+      <div data-theme="luxury" className="dashboard h-screen flex bg-base-100">
+        <div className="flex-1 flex justify-center items-center">
+          <span className="loading loading-spinner loading-lg"></span>
+        </div>
+      </div>
+    );
+  }
+
   return (
     <div data-theme="luxury" className="dashboard h-screen flex bg-base-100">
-      <Navbar />
       <div className="flex-1 overflow-y-auto">
         <div className="container mx-auto max-w-4xl p-6" data-theme="luxury">
@@ -295,5 +276,5 @@
                       <path d="M5 3l14 9-14 9V3z" />
                     </svg>
-                    {currentUser.solvedDailyChallenge
+                    {user.solvedDailyChallenge
                       ? "View Challenge"
                       : "Start Challenge"}
@@ -311,5 +292,5 @@
                 </div>
 
-                {currentUser.solvedDailyChallenge && (
+                {user.solvedDailyChallenge && (
                   <div className="alert alert-info mb-4">
                     <svg
@@ -396,5 +377,5 @@
                       type="text"
                       placeholder={
-                        currentUser.solvedDailyChallenge
+                        user.solvedDailyChallenge
                           ? "Challenge already completed"
                           : "Enter your output here..."
@@ -412,11 +393,9 @@
                       }`}
                       rows="6"
-                      disabled={
-                        currentUser.solvedDailyChallenge || isSubmitting
-                      }
+                      disabled={user.solvedDailyChallenge || isSubmitting}
                     />
-                    {currentUser.solvedDailyChallenge && (
+                    {user.solvedDailyChallenge && (
                       <p className="text-lg text-success">
-                        You earned: {currentUser.daily_points} for today's task
+                        You earned: {user.daily_points} for today's task
                       </p>
                     )}
@@ -454,10 +433,10 @@
                         onClick={() => handleSubmitSolution()}
                         className={`btn btn-lg ${
-                          currentUser.solvedDailyChallenge || isSubmitting
+                          user.solvedDailyChallenge || isSubmitting
                             ? "btn-disabled"
                             : "border-amber-400"
                         }`}
                         disabled={
-                          currentUser.solvedDailyChallenge ||
+                          user.solvedDailyChallenge ||
                           isSubmitting ||
                           isUserOutputEmpty
@@ -466,5 +445,5 @@
                         {isSubmitting ? (
                           <span className="loading loading-spinner"></span>
-                        ) : currentUser.solvedDailyChallenge ? (
+                        ) : user.solvedDailyChallenge ? (
                           "Already Completed"
                         ) : (
Index: client/src/LandingPage/components/Hero.jsx
===================================================================
--- client/src/LandingPage/components/Hero.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/LandingPage/components/Hero.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -2,7 +2,8 @@
 import hero from "../../assets/images/hero-bg.jpg";
 import { useNavigate } from "react-router-dom";
+import { useAuth } from "@/contexts/AuthContext";
 
 const Hero = () => {
-  const user = JSON.parse(localStorage.getItem("user"));
+  const { user } = useAuth();
   const navigate = useNavigate();
   return (
Index: client/src/LandingPage/components/LeaderBoardEx.jsx
===================================================================
--- client/src/LandingPage/components/LeaderBoardEx.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/LandingPage/components/LeaderBoardEx.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -23,5 +23,4 @@
 
   const fetchLeaderboard = async (page = 1, append = false) => {
-    console.log("entered from leaderboard.jsx");
     try {
       if (append) {
@@ -89,5 +88,5 @@
     return (
       <div data-theme="luxury" className="min-h-screen flex bg-base-100">
-        {!landing ? <Navbar /> : null}
+        {/* {!landing ? <Navbar /> : null} */}
         <div className="flex w-full flex-col justify-center items-center p-20 gap-10">
           <h1 className="text-4xl font-bold">Leaderboard</h1>
@@ -101,5 +100,5 @@
     return (
       <div data-theme="luxury" className="min-h-screen flex bg-base-100">
-        {!landing ? <Navbar /> : null}
+        {/* {!landing ? <Navbar /> : null} */}
         <div className="flex w-full flex-col justify-center items-center p-20 gap-10">
           <h1 className="text-4xl font-bold">Leaderboard</h1>
@@ -120,5 +119,5 @@
   return (
     <div data-theme="luxury" className="min-h-screen flex bg-base-100">
-      {!landing ? <Navbar /> : null}
+      {/* {!landing ? <Navbar /> : null} */}
 
       <div className="flex w-full flex-col items-center p-20 gap-10">
Index: client/src/LogIn/LogIn.jsx
===================================================================
--- client/src/LogIn/LogIn.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/LogIn/LogIn.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -2,5 +2,5 @@
 import { Link, useNavigate } from "react-router-dom";
 import { supabase } from "../contexts/AuthContext";
-import { loginUser } from "@/services/registerLoginService";
+import { useAuth } from "../contexts/AuthContext";
 const Login = () => {
   const [email, setEmail] = useState("");
@@ -9,4 +9,5 @@
   const [error, setError] = useState("");
   const [loading, setLoading] = useState(false);
+  const { login } = useAuth();
   const navigate = useNavigate();
 
@@ -20,45 +21,13 @@
     setLoading(true);
 
-    try {
-      const { data: supabaseAuthData, error: supabaseAuthError } =
-        await supabase.auth.signInWithPassword({
-          email,
-          password,
-        });
+    const result = await login(email, password);
 
-      if (supabaseAuthError) {
-        setError(supabaseAuthError.message);
-        setLoading(false);
-        return;
-      }
+    if (result.success) {
+      navigate("/dashboard");
+    } else {
+      setError(result.error);
+    }
 
-      if (!supabaseAuthData.session?.access_token) {
-        setError("Failed to retrieve session token from Supabase.");
-        setLoading(false);
-        return;
-      }
-
-      localStorage.setItem("jwt", supabaseAuthData.session.access_token);
-      const backendLoginData = await loginUser({ email, password });
-
-      if (backendLoginData.success) {
-        localStorage.setItem("user", JSON.stringify(backendLoginData.user));
-        navigate("/dashboard");
-      } else {
-        localStorage.removeItem("jwt");
-        setError(backendLoginData.message || "Login failed on backend.");
-      }
-    } catch (err) {
-      console.error("Login error caught in component:", err);
-      if (err.response && err.response.data && err.response.data.message) {
-        setError(err.response.data.message);
-      } else if (err.message) {
-        setError(err.message);
-      } else {
-        setError("An unexpected error occurred during login.");
-      }
-    } finally {
-      setLoading(false);
-    }
+    setLoading(false);
   };
   return (
Index: client/src/contexts/AuthContext.jsx
===================================================================
--- client/src/contexts/AuthContext.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/contexts/AuthContext.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -9,4 +9,5 @@
 import { useNavigate } from "react-router-dom";
 import { createClient } from "@supabase/supabase-js";
+import { loginUser } from "@/services/registerLoginService";
 
 const supabaseUrl = import.meta.env.VITE_SUPABASE_URL;
@@ -39,4 +40,5 @@
 export const AuthContext = createContext();
 export const useAuth = () => useContext(AuthContext);
+const INACTIVITY_TIMEOUT = 120 * 60 * 1000;
 
 export const AuthProvider = ({ children }) => {
@@ -50,9 +52,49 @@
   const navigate = useNavigate();
 
-  const INACTIVITY_TIMEOUT = 120 * 60 * 1000;
-
   useEffect(() => {
     userRef.current = user?.id || null;
   }, [user]);
+
+  const login = useCallback(async (email, password) => {
+    try {
+      const { data: supabaseAuthData, error: supabaseAuthError } =
+        await supabase.auth.signInWithPassword({
+          email,
+          password,
+        });
+
+      if (supabaseAuthError) {
+        return { success: false, error: supabaseAuthError.message };
+      }
+
+      if (!supabaseAuthData.session?.access_token) {
+        return {
+          success: false,
+          error: "Failed to retrieve session token from Supabase.",
+        };
+      }
+
+      const backendLoginData = await loginUser({ email });
+
+      if (backendLoginData.success) {
+        setUser(backendLoginData.user);
+
+        return { success: true };
+      } else {
+        await supabase.auth.signOut();
+        return {
+          success: false,
+          error: backendLoginData.message || "Login failed on backend.",
+        };
+      }
+    } catch (err) {
+      console.error("Login error caught in AuthContext:", err);
+      const message =
+        err.response?.data?.message ||
+        err.message ||
+        "An unexpected error occurred during login.";
+      return { success: false, error: message };
+    }
+  }, []);
 
   const logout = useCallback(async () => {
@@ -68,21 +110,24 @@
         tokenExpiryTimeoutRef.current = null;
       }
-
       localStorage.removeItem("lastActivityTimestamp");
       localStorage.removeItem("jwt");
       localStorage.removeItem("token_exp");
+      localStorage.removeItem("lastResetDate");
       localStorage.removeItem("user");
 
       await supabase.auth.signOut();
+
+      localStorage.setItem("logout", "true");
+      setTimeout(() => localStorage.removeItem("logout"), 1000);
+
       setUser(null);
       userRef.current = null;
-      navigate("/");
-
-      setTimeout(() => setIsLoggingOut(false), 1000);
+
+      setTimeout(() => setIsLoggingOut(false), 500);
     } catch (error) {
       console.error("Error during logout:", error);
       setIsLoggingOut(false);
     }
-  }, [navigate]);
+  }, []);
 
   const resetInactivityTimer = useCallback(() => {
@@ -102,4 +147,10 @@
     }
   }, [logout]);
+
+  const updateUser = useCallback((newUserData) => {
+    setUser(newUserData);
+
+    localStorage.setItem("user", JSON.stringify(newUserData));
+  }, []);
 
   useEffect(() => {
@@ -174,16 +225,38 @@
 
   useEffect(() => {
-    const initializeAuth = async () => {
+    console.log("AuthContext mounted");
+    const initializeAndVerifyAuth = async () => {
       try {
+        setLoading(true);
+
+        const storedUserJson = localStorage.getItem("user");
+        if (storedUserJson) {
+          setUser(JSON.parse(storedUserJson));
+        }
+
         const { data } = await supabase.auth.getSession();
         const session = data?.session;
 
         if (session?.user) {
-          setUser(session.user);
+          const backendLoginData = await loginUser({
+            email: session.user.email,
+          });
+
+          if (backendLoginData.success) {
+            setUser(backendLoginData.user);
+            localStorage.setItem("user", JSON.stringify(backendLoginData.user));
+          } else {
+            logout();
+            return;
+          }
+
           localStorage.setItem("jwt", session.access_token);
           setupTokenExpiryLogout(session.access_token);
+        } else if (storedUserJson) {
+          logout();
         }
       } catch (error) {
-        console.error("Error retrieving session:", error);
+        console.error("Error initializing/verifying auth:", error);
+        logout();
       } finally {
         setLoading(false);
@@ -191,31 +264,26 @@
     };
 
-    initializeAuth();
+    initializeAndVerifyAuth();
 
     const { data: authListener } = supabase.auth.onAuthStateChange(
       (event, session) => {
-        if (event === "SIGNED_IN" && session?.user) {
-          setUser(session.user);
-
-          localStorage.setItem("jwt", session.access_token);
-          setupTokenExpiryLogout(session.access_token);
-        } else if (event === "SIGNED_OUT") {
-          setUser(null);
-          localStorage.removeItem("jwt");
-
-          if (inactivityTimeoutRef.current) {
-            clearTimeout(inactivityTimeoutRef.current);
-            inactivityTimeoutRef.current = null;
+        if (event === "SIGNED_IN" || event === "TOKEN_REFRESHED") {
+          if (session?.user) {
+            initializeAndVerifyAuth();
           }
-          if (tokenExpiryTimeoutRef.current) {
-            clearTimeout(tokenExpiryTimeoutRef.current);
-            tokenExpiryTimeoutRef.current = null;
-          }
-        } else if (event === "TOKEN_REFRESHED" && session) {
-          localStorage.setItem("jwt", session.access_token);
-          setupTokenExpiryLogout(session.access_token);
-        }
+        }
+        // } else if (event === "SIGNED_OUT") {
+        //   logout();
+        // }
       }
     );
+
+    const handleVisibilityChange = () => {
+      if (document.visibilityState === "visible") {
+        initializeAndVerifyAuth();
+      }
+    };
+
+    document.addEventListener("visibilitychange", handleVisibilityChange);
 
     return () => {
@@ -223,6 +291,7 @@
         authListener.subscription.unsubscribe();
       }
-    };
-  }, [setupTokenExpiryLogout]);
+      document.removeEventListener("visibilitychange", handleVisibilityChange);
+    };
+  }, [logout, setupTokenExpiryLogout]);
 
   useEffect(() => {
@@ -258,4 +327,19 @@
   }, [resetInactivityTimer, user]);
 
+  //Sync actions between tabs
+  useEffect(() => {
+    const handleStorageChange = (event) => {
+      if (event.key === "logout" && event.newValue === "true") {
+        logout();
+      }
+    };
+
+    window.addEventListener("storage", handleStorageChange);
+
+    return () => {
+      window.removeEventListener("storage", handleStorageChange);
+    };
+  }, [logout]);
+
   return (
     <AuthContext.Provider
@@ -263,7 +347,9 @@
         user,
         loading,
+        login,
         logout,
         resetInactivityTimer,
         isLoggingOut,
+        updateUser,
       }}
     >
Index: client/src/main.jsx
===================================================================
--- client/src/main.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/main.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -1,85 +1,13 @@
-import { StrictMode } from "react";
+import React from "react";
 import { createRoot } from "react-dom/client";
+import { BrowserRouter as Router } from "react-router-dom";
+import { AuthProvider } from "./contexts/AuthContext";
+import App from "./App";
 import "./index.css";
-
-import ProtectedRoute from "./routes/ProtectedRoute";
-import LandingPage from "./LandingPage/LandingPage";
-import Register from "./Register/Register";
-import Login from "./LogIn/LogIn";
-import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
-import CreatePost from "./CreatePost/CreatePost";
-import Task from "./Dashboard/components/Task";
-import Forum from "./Dashboard/components/Forum";
-import ForumPostDetail from "./Dashboard/components/ForumPostDetail";
-import Profile from "./Dashboard/components/Profile";
-import LeaderBoardEx from "./LandingPage/components/LeaderBoardEx";
-import ManagePosts from "@/Dashboard/components/ManagePosts.jsx";
-import { AuthProvider } from "./contexts/AuthContext";
 
 createRoot(document.getElementById("root")).render(
   <Router>
     <AuthProvider>
-      <Routes>
-        <Route path="/" element={<LandingPage />} />
-        <Route path="/register" element={<Register />} />
-        <Route path="/login" element={<Login />} />
-
-        <Route
-          path="/dashboard"
-          element={
-            <ProtectedRoute>
-              <Task />
-            </ProtectedRoute>
-          }
-        />
-        <Route
-          path="/dashboard/create-post"
-          element={
-            <ProtectedRoute>
-              <CreatePost />
-            </ProtectedRoute>
-          }
-        />
-        <Route
-          path="/dashboard/forum"
-          element={
-            <ProtectedRoute>
-              <Forum />
-            </ProtectedRoute>
-          }
-        />
-        <Route
-          path="/dashboard/manage-posts"
-          element={
-            <ProtectedRoute>
-              <ManagePosts />
-            </ProtectedRoute>
-          }
-        />
-        <Route
-          path="/dashboard/forum-detail/:postId"
-          element={
-            <ProtectedRoute>
-              <ForumPostDetail />
-            </ProtectedRoute>
-          }
-        />
-        <Route
-          path="/dashboard/profile"
-          element={
-            <ProtectedRoute>
-              <Profile />
-            </ProtectedRoute>
-          }
-        />
-        <Route
-          path="/dashboard/leaderboard"
-          element={
-            <ProtectedRoute>
-              <LeaderBoardEx />
-            </ProtectedRoute>
-          }
-        />
-      </Routes>
+      <App />
     </AuthProvider>
   </Router>
Index: client/src/routes/ProtectedRoute.jsx
===================================================================
--- client/src/routes/ProtectedRoute.jsx	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/routes/ProtectedRoute.jsx	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -1,25 +1,21 @@
-import { Navigate, useLocation } from 'react-router-dom';
-import { useAuth } from '../contexts/AuthContext';
-import React from 'react';
+import { useAuth } from "../contexts/AuthContext";
+import { Navigate, useLocation } from "react-router-dom";
 
 const ProtectedRoute = ({ children }) => {
-  const { user, loading, isLoggingOut } = useAuth();
+  const { user, loading } = useAuth();
   const location = useLocation();
+  // if (loading) {
+  //   return (
+  //     <div
+  //       data-theme="luxury"
+  //       className="h-screen flex items-center justify-center"
+  //     >
+  //       <span className="loading loading-spinner loading-lg"></span>
+  //     </div>
+  //   );
+  // }
 
-  if (loading) {
-    return (
-      <div className="flex h-screen items-center justify-center">
-        <span className="loading loading-spinner loading-lg"></span>
-      </div>
-    );
-  }
-
-  if (!user && !isLoggingOut) {
-    return (
-      <Navigate
-        to={`/login?redirect=${encodeURIComponent(location.pathname)}`}
-        replace
-      />
-    );
+  if (!user && !loading) {
+    return <Navigate to="/login" state={{ from: location }} replace />;
   }
 
Index: client/src/services/registerLoginService.js
===================================================================
--- client/src/services/registerLoginService.js	(revision 75b85d750e2432274289f6cd6f6428233880dc45)
+++ client/src/services/registerLoginService.js	(revision 5b23e0b24ab67d803a8c90a818ac65e5c54b75fb)
@@ -3,5 +3,5 @@
 export const registerUser = async (userData) => {
   try {
-    const response = await apiClient.post("api/register", userData);
+    const response = await apiClient.post("/api/register", userData);
     return response;
   } catch (error) {
@@ -13,5 +13,5 @@
 export const loginUser = async (credentials) => {
   try {
-    const response = await apiClient.post("api/login", credentials);
+    const response = await apiClient.post("/api/login", credentials);
     return response;
   } catch (error) {
