Index: client/src/contexts/AuthContext.jsx
===================================================================
--- client/src/contexts/AuthContext.jsx	(revision baed897de4f10aee2b403d25d43e3d1fe0d1f17d)
+++ client/src/contexts/AuthContext.jsx	(revision 96067425bb8a701e42c07b698acb6f4581f6ada7)
@@ -7,5 +7,11 @@
 const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY;
 
-export const supabase = createClient(supabaseUrl, supabaseAnonKey);
+export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
+  auth: {
+    persistSession: true,
+    storageKey: 'supabase-auth-token',
+    storage: localStorage,
+  },
+});
 
 // Create the context
@@ -23,5 +29,5 @@
 
   // Inactivity duration in milliseconds (30 minutes)
-  const INACTIVITY_TIMEOUT = 5 * 60 * 1000;
+  const INACTIVITY_TIMEOUT = 20 * 60 * 1000;
 
   // Function to handle logout - use useCallback to prevent recreation on every render
@@ -38,4 +44,37 @@
   }, [navigate]);
 
+  useEffect(() => {
+    const checkStaleSession = () => {
+      // Check for user in localStorage
+      const storedUser = localStorage.getItem('user');
+      const lastActivity = localStorage.getItem('lastActivityTimestamp');
+
+      console.log('Initial session check:', {
+        hasStoredUser: !!storedUser,
+        lastActivity: lastActivity
+          ? new Date(parseInt(lastActivity)).toLocaleString()
+          : null,
+      });
+
+      if (storedUser && lastActivity) {
+        // If we have both user and timestamp, check if session is stale
+        const inactiveTime = Date.now() - parseInt(lastActivity);
+        if (inactiveTime > INACTIVITY_TIMEOUT) {
+          console.log('Found stale session - logging out');
+          // Clear everything without setting user state (will happen in initializeAuth)
+          localStorage.removeItem('user');
+          localStorage.removeItem('lastActivityTimestamp');
+          supabase.auth
+            .signOut()
+            .catch((err) => console.error('Error signing out:', err));
+          navigate('/');
+        }
+      }
+    };
+
+    // Run this check immediately
+    checkStaleSession();
+  }, []);
+
   // Function to reset the inactivity timer - use useCallback
   const resetInactivityTimer = useCallback(() => {
@@ -100,4 +139,6 @@
         if (data?.session?.user) {
           setUser(data.session.user);
+
+          localStorage.setItem('lastActivityTimestamp', Date.now().toString());
         } else {
           // If no Supabase session, check localStorage
@@ -105,4 +146,8 @@
           if (storedUser) {
             setUser(JSON.parse(storedUser));
+            localStorage.setItem(
+              'lastActivityTimestamp',
+              Date.now().toString()
+            );
           }
         }
@@ -137,20 +182,24 @@
     };
   }, []);
-  useEffect(() => {
-    const checkLastActivity = () => {
-      const lastActivity = localStorage.getItem('lastActivityTimestamp');
-      if (lastActivity && user) {
-        const inactiveTime = Date.now() - parseInt(lastActivity);
-        if (inactiveTime > INACTIVITY_TIMEOUT) {
-          console.log('Detected inactivity between sessions');
-          logout();
-        }
-      }
-    };
-
-    if (user) {
-      checkLastActivity();
-    }
-  }, [user, logout, INACTIVITY_TIMEOUT]);
+  // useEffect(() => {
+  //   const checkLastActivity = () => {
+  //     const lastActivity = localStorage.getItem('lastActivityTimestamp');
+  //     if (lastActivity && user) {
+  //       const inactiveTime = Date.now() - parseInt(lastActivity);
+  //       if (inactiveTime > INACTIVITY_TIMEOUT) {
+  //         console.log('Detected inactivity between sessions');
+  //         logout();
+  //       } else {
+  //         localStorage.setItem('lastActivityTimestamp', Date.now().toString());
+  //       }
+  //     } else if (user && !lastActivity) {
+  //       localStorage.setItem('lastActivityTimestamp', Date.now().toString());
+  //     }
+  //   };
+
+  //   if (user) {
+  //     checkLastActivity();
+  //   }
+  // }, [user, logout, INACTIVITY_TIMEOUT]);
 
   // Auth context value
