Index: backend/controllers/taskController.js
===================================================================
--- backend/controllers/taskController.js	(revision dc9d8b915f2530c83c493c18364aa8a76c7402b5)
+++ backend/controllers/taskController.js	(revision d44298bcbe40fd15d76afbb70c5223744dd24715)
@@ -257,7 +257,7 @@
       const attemptScore = getAttemptScore(attempts + 1);
       const difficultyScore =
-        task.difficulty === 'easy'
+        task.difficulty === 'Easy'
           ? 10
-          : task.difficulty === 'medium'
+          : task.difficulty === 'Medium'
           ? 20
           : 30;
Index: backend/scripts/resetPostCounters.js
===================================================================
--- backend/scripts/resetPostCounters.js	(revision dc9d8b915f2530c83c493c18364aa8a76c7402b5)
+++ backend/scripts/resetPostCounters.js	(revision d44298bcbe40fd15d76afbb70c5223744dd24715)
@@ -26,2 +26,4 @@
   process.exit(0);
 });
+
+resetPostCounters();
Index: client/src/Dashboard/components/Task.jsx
===================================================================
--- client/src/Dashboard/components/Task.jsx	(revision dc9d8b915f2530c83c493c18364aa8a76c7402b5)
+++ client/src/Dashboard/components/Task.jsx	(revision d44298bcbe40fd15d76afbb70c5223744dd24715)
@@ -7,5 +7,7 @@
   const [task, setTask] = useState(null);
   const [testCase, setTestCase] = useState(null);
-  const [effectiveTaskDate, setEffectiveTaskDate] = useState('');
+  const [evalResult, setEvalResult] = useState('');
+  const [isCorrect, setIsCorrect] = useState(null);
+  const [isSubmitting, setIsSubmitting] = useState(false);
 
   const today = new Date().toLocaleDateString();
@@ -129,4 +131,5 @@
       return;
     }
+    setIsSubmitting(true);
 
     try {
@@ -156,21 +159,25 @@
       }
       if (result.success) {
-        alert(
+        setEvalResult(
           `${result.message} You earned ${result.scoreAwarded} points. Your total points are now ${result.newTotalPoints}.`
         );
-        // Optionally, update local user state if needed for immediate UI reflection,
-        // though a full page reload or re-fetch of user data on navigation might be better.
+        setIsCorrect(true);
+
         const updatedUserFromStorage =
           JSON.parse(localStorage.getItem('user')) || {};
         updatedUserFromStorage.points = result.newTotalPoints;
-        updatedUserFromStorage.solvedDailyChallenge = true; // Assuming backend sets this
-        console.log(user.rank);
+        updatedUserFromStorage.solvedDailyChallenge = true;
+        updatedUserFromStorage.pointsAwarded = result.scoreAwarded;
+
         toggleSolvedDailyChallenge(user);
-        updatedUserFromStorage.rank = result.rank; // Assuming backend resets this
+        updatedUserFromStorage.rank = result.rank;
         localStorage.setItem('user', JSON.stringify(updatedUserFromStorage));
 
-        navigate('/dashboard/forum');
+        // navigate('/dashboard/forum');
       } else {
-        alert(`${result.message} This was attempt #${result.attemptsMade}.`);
+        setEvalResult(
+          `${result.message} This was attempt: ${result.attemptsMade}.`
+        );
+        setIsCorrect(false);
 
         const updatedUserFromStorage =
@@ -181,4 +188,6 @@
     } catch (error) {
       console.error('Error evaluating solution:', error);
+    } finally {
+      setIsSubmitting(false);
     }
   }
@@ -187,5 +196,4 @@
     <div data-theme="luxury" className="dashboard h-screen flex bg-base-100">
       <Navbar />
-      {/* Add overflow-y-auto and proper flex constraints */}
       <div className="flex-1 overflow-y-auto">
         <div className="container mx-auto max-w-4xl p-6" data-theme="luxury">
@@ -359,8 +367,39 @@
                           : 'Enter your output here...'
                       }
-                      className="textarea textarea-bordered textarea-lg w-full mb-4"
+                      className={`textarea textarea-bordered textarea-lg w-full mb-4 ${
+                        isCorrect === null
+                          ? ''
+                          : isCorrect
+                          ? 'border-green-500'
+                          : 'border-red-500'
+                      }`}
                       rows="6"
-                      disabled={user.solvedDailyChallenge}
+                      disabled={user.solvedDailyChallenge || isSubmitting}
                     />
+                    {user.solvedDailyChallenge && (
+                      <p className="text-lg text-success">
+                        You earned: {user.pointsAwarded} for today's task
+                      </p>
+                    )}
+
+                    {isSubmitting && (
+                      <div className="flex justify-center items-center my-2">
+                        <span className="loading loading-spinner loading-md mr-2"></span>
+                        <span>Evaluating your solution...</span>
+                      </div>
+                    )}
+
+                    <p
+                      className={`mt-2 mb-10 text-lg ${
+                        isCorrect
+                          ? 'text-success'
+                          : isCorrect === false
+                          ? 'text-error'
+                          : ''
+                      }`}
+                    >
+                      {evalResult}
+                    </p>
+
                     <div className="card-actions justify-end gap-4">
                       <button
@@ -369,4 +408,5 @@
                         }}
                         className="btn border-amber-400 btn-lg"
+                        disabled={isSubmitting}
                       >
                         Go Back
@@ -375,13 +415,17 @@
                         onClick={() => handleSubmitSolution()}
                         className={`btn btn-lg ${
-                          user.solvedDailyChallenge
+                          user.solvedDailyChallenge || isSubmitting
                             ? 'btn-disabled'
                             : 'border-amber-400'
                         }`}
-                        disabled={user.solvedDailyChallenge}
+                        disabled={user.solvedDailyChallenge || isSubmitting}
                       >
-                        {user.solvedDailyChallenge
-                          ? 'Already Completed'
-                          : 'Submit Solution'}
+                        {isSubmitting ? (
+                          <span className="loading loading-spinner"></span>
+                        ) : user.solvedDailyChallenge ? (
+                          'Already Completed'
+                        ) : (
+                          'Submit Solution'
+                        )}
                       </button>
                     </div>
Index: client/src/LandingPage/components/LeaderBoardEx.jsx
===================================================================
--- client/src/LandingPage/components/LeaderBoardEx.jsx	(revision dc9d8b915f2530c83c493c18364aa8a76c7402b5)
+++ client/src/LandingPage/components/LeaderBoardEx.jsx	(revision d44298bcbe40fd15d76afbb70c5223744dd24715)
@@ -141,12 +141,14 @@
 
         {pagination && (
-          <div className="stats shadow">
+          <div className="flex">
             <div className="stat">
               <div className="stat-title">Total Users</div>
-              <div className="stat-value">{pagination.totalUsers}</div>
+
+              <div className=" text-3xl">{pagination.totalUsers}</div>
             </div>
             <div className="stat">
               <div className="stat-title">Showing</div>
-              <div className="stat-value">{leaderboard.length}</div>
+
+              <div className="text-3xl">{leaderboard.length}</div>
             </div>
           </div>
Index: client/src/LogIn/LogIn.jsx
===================================================================
--- client/src/LogIn/LogIn.jsx	(revision dc9d8b915f2530c83c493c18364aa8a76c7402b5)
+++ client/src/LogIn/LogIn.jsx	(revision d44298bcbe40fd15d76afbb70c5223744dd24715)
@@ -2,13 +2,21 @@
 import { Link, useNavigate } from 'react-router-dom';
 import { supabase } from '../contexts/AuthContext';
+
 const Login = () => {
   const [email, setEmail] = useState('');
   const [password, setPassword] = useState('');
+  const [showPassword, setShowPassword] = useState(false);
   const [error, setError] = useState('');
+  const [loading, setLoading] = useState(false);
   const navigate = useNavigate();
+
+  const togglePasswordVisibility = () => {
+    setShowPassword(!showPassword);
+  };
 
   const handleSubmit = async (e) => {
     e.preventDefault();
-    setError(''); // Clear previous errors
+    setError('');
+    setLoading(true);
 
     try {
@@ -24,17 +32,9 @@
 
       if (data.success) {
-        console.log(data);
-
-        // Store user in localStorage
         localStorage.setItem('user', JSON.stringify(data.user));
-
-        // Also sign in with the Supabase client
-        // This is needed to update the AuthContext
         await supabase.auth.signInWithPassword({
           email,
           password,
         });
-
-        // Now navigate - the AuthContext will pick up the session change
         navigate('/dashboard');
       } else {
@@ -42,6 +42,7 @@
       }
     } catch (err) {
-      console.error('Login error:', err);
       setError('An error occurred during login.');
+    } finally {
+      setLoading(false);
     }
   };
@@ -69,4 +70,5 @@
             onChange={(e) => setEmail(e.target.value)}
             required
+            disabled={loading}
           />
           <p className="text-sm mt-1">*Must use your students address</p>
@@ -77,13 +79,60 @@
             Password
           </label>
-          <input
-            id="password"
-            type="password"
-            className="input input-lg w-full"
-            placeholder="Password"
-            value={password}
-            onChange={(e) => setPassword(e.target.value)}
-            required
-          />
+          <div className="relative w-full">
+            <input
+              id="password"
+              type={showPassword ? 'text' : 'password'}
+              className="input input-lg w-full pr-14"
+              placeholder="Password"
+              value={password}
+              onChange={(e) => setPassword(e.target.value)}
+              required
+              disabled={loading}
+            />
+            <button
+              type="button"
+              className="absolute top-0 right-0 h-full px-3 flex items-center z-10"
+              onClick={togglePasswordVisibility}
+              tabIndex="-1"
+              disabled={loading}
+            >
+              {!showPassword ? (
+                <svg
+                  xmlns="http://www.w3.org/2000/svg"
+                  fill="none"
+                  viewBox="0 0 24 24"
+                  strokeWidth={1.5}
+                  stroke="currentColor"
+                  className="w-6 h-6"
+                >
+                  <path
+                    strokeLinecap="round"
+                    strokeLinejoin="round"
+                    d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88"
+                  />
+                </svg>
+              ) : (
+                <svg
+                  xmlns="http://www.w3.org/2000/svg"
+                  fill="none"
+                  viewBox="0 0 24 24"
+                  strokeWidth={1.5}
+                  stroke="currentColor"
+                  className="w-6 h-6"
+                >
+                  <path
+                    strokeLinecap="round"
+                    strokeLinejoin="round"
+                    d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z"
+                  />
+                  <path
+                    strokeLinecap="round"
+                    strokeLinejoin="round"
+                    d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
+                  />
+                </svg>
+              )}
+            </button>
+          </div>
         </div>
         {error && <p className="text-red-500 text-sm mt-1">{error}</p>}
@@ -91,6 +140,14 @@
           type="submit"
           className="btn bg-black btn-xs sm:btn-sm md:btn-md lg:btn-lg xl:btn-xl"
+          disabled={loading}
         >
-          Log in
+          {loading ? (
+            <span className="flex items-center gap-2">
+              <span className="loading loading-spinner loading-xs"></span>
+              Logging in...
+            </span>
+          ) : (
+            'Log in'
+          )}
         </button>
       </form>
@@ -101,3 +158,4 @@
   );
 };
+
 export default Login;
Index: client/src/Register/Register.jsx
===================================================================
--- client/src/Register/Register.jsx	(revision dc9d8b915f2530c83c493c18364aa8a76c7402b5)
+++ client/src/Register/Register.jsx	(revision d44298bcbe40fd15d76afbb70c5223744dd24715)
@@ -6,4 +6,17 @@
   const [error, setError] = React.useState('');
   const nav = useNavigate();
+  const [showPassword, setShowPassword] = useState({
+    password: false,
+    confirmPassword: false,
+  });
+  const [loading, setLoading] = useState(false); // Loader state
+
+  const togglePasswordVisibility = (field) => {
+    setShowPassword((prev) => ({
+      ...prev,
+      [field]: !prev[field],
+    }));
+  };
+
   const [formData, setFormData] = useState({
     username: '',
@@ -25,39 +38,47 @@
   const handleSubmit = async (e) => {
     e.preventDefault();
-    console.log(formData.email);
-
-    if (!validateEmail(formData.email)) {
-      setError('Email must end with @students.finki.ukim.mk');
-      return;
-    }
-    if (formData.username === '') {
-      setError('Must enter username');
-      return;
-    }
-    if (formData.password === '') {
-      setError('Password is required');
-      return;
-    }
-    if (formData.confirmPassword === '') {
-      setError('Please confirm your password');
-      return;
-    }
-    if (formData.password !== formData.confirmPassword) {
-      setError('Passwords do not match');
-      return;
-    }
-    if (formData.password.length < 8) {
-      setError('Password must be at least 8 characters long');
-      return;
-    }
-    if (!/[A-Z]/.test(formData.password)) {
-      setError('Password must contain at least one uppercase letter');
-      return;
-    }
-    if (!/[0-9]/.test(formData.password)) {
-      setError('Password must contain at least one number');
-      return;
-    }
+    setLoading(true); // Start loader
+    setError('');
     try {
+      if (!validateEmail(formData.email)) {
+        setError('Email must end with @students.finki.ukim.mk');
+        setLoading(false);
+        return;
+      }
+      if (formData.username === '') {
+        setError('Must enter username');
+        setLoading(false);
+        return;
+      }
+      if (formData.password === '') {
+        setError('Password is required');
+        setLoading(false);
+        return;
+      }
+      if (formData.confirmPassword === '') {
+        setError('Please confirm your password');
+        setLoading(false);
+        return;
+      }
+      if (formData.password !== formData.confirmPassword) {
+        setError('Passwords do not match');
+        setLoading(false);
+        return;
+      }
+      if (formData.password.length < 8) {
+        setError('Password must be at least 8 characters long');
+        setLoading(false);
+        return;
+      }
+      if (!/[A-Z]/.test(formData.password)) {
+        setError('Password must contain at least one uppercase letter');
+        setLoading(false);
+        return;
+      }
+      if (!/[0-9]/.test(formData.password)) {
+        setError('Password must contain at least one number');
+        setLoading(false);
+        return;
+      }
       const response = await fetch('/api/register', {
         method: 'POST',
@@ -76,9 +97,15 @@
       if (data.success) {
         localStorage.setItem('user', JSON.stringify(data.user));
+        try {
+          await supabase.auth.signInWithPassword({
+            email: formData.email,
+            password: formData.password,
+          });
+        } catch (supabaseError) {
+          console.error('Supabase auth error:', supabaseError);
+        }
         nav('/dashboard');
       } else {
         console.error('Registration failed:', data.message);
-
-        // Handle both username and email duplicate errors
         if (data.message === 'Username already in use') {
           setError('Username already in use');
@@ -89,5 +116,4 @@
           setError('Email already in use');
         } else {
-          // Generic error
           setError(data.message || 'Registration failed');
         }
@@ -95,111 +121,217 @@
     } catch (error) {
       console.error('Registration error:', error);
-      throw error;
+      setError('Registration failed');
+    } finally {
+      setLoading(false); // Stop loader
     }
   };
 
   return (
-    <div
-      data-theme="luxury"
-      className="flex flex-col items-center justify-center h-screen"
-    >
-      <h1 className="text-4xl font-bold mb-6">Create an account</h1>
-      <form
-        onSubmit={handleSubmit}
-        className="fieldset bg-base-200 border-base-300 rounded-box w-96 border p-8 space-y-6"
+    <div className="h-screen bg-base-100">
+      <div
+        data-theme="luxury"
+        className="flex flex-col items-center justify-center h-screen overflow-y-auto"
       >
-        <div>
-          <label className="label text-lg" htmlFor="name">
-            Name
-          </label>
-          <input
-            id="name"
-            name="name"
-            type="text"
-            value={formData.name}
-            onChange={handleInputChange}
-            className="input input-lg w-full"
-            placeholder="John Doe"
-          />
-        </div>
-
-        <div>
-          <label className="label text-lg" htmlFor="username">
-            Username
-          </label>
-          <input
-            id="username"
-            name="username"
-            type="text"
-            value={formData.username}
-            onChange={handleInputChange}
-            className="input input-lg w-full"
-            placeholder="User123"
-          />
-        </div>
-
-        <div>
-          <label className="label text-lg" htmlFor="email">
-            Email
-          </label>
-          <input
-            id="email"
-            type="email"
-            name="email"
-            value={formData.email}
-            onChange={handleInputChange}
-            className="input input-lg w-full"
-            placeholder="user123@students.finki.ukim.mk"
-          />
-        </div>
-
-        <div>
-          <label className="label text-lg" htmlFor="password">
-            Password
-          </label>
-          <input
-            id="password"
-            name="password"
-            type="password"
-            value={formData.password}
-            onChange={handleInputChange}
-            className="input input-lg w-full"
-            placeholder="Password"
-          />
-        </div>
-
-        <div>
-          <label className="label text-lg" htmlFor="confirmPassword">
-            Confirm Password
-          </label>
-          <input
-            id="confirmPassword"
-            type="password"
-            name="confirmPassword"
-            value={formData.confirmPassword}
-            onChange={handleInputChange}
-            className="input input-lg w-full"
-            placeholder="Confirm Password"
-          />
-        </div>
-
-        <button
-          type="submit"
-          className="btn bg-black btn-xs sm:btn-sm md:btn-md lg:btn-lg xl:btn-xl"
+        <h1 className="text-4xl font-bold mb-6">Create an account</h1>
+        <form
+          onSubmit={handleSubmit}
+          className="fieldset bg-base-200 border-base-300 rounded-box w-96 border p-8 space-y-6"
         >
-          Register
-        </button>
-        {error ? (
-          <p className="text-red-500 text-sm mt-1">{error}</p>
-        ) : (
-          <p className="text-sm mt-1">
-            *Must register with your students address
-          </p>
-        )}
-      </form>
-
-      <Link to="/login" className="underline mt-1.5">
-        Already have an account?
-      </Link>
+          <div>
+            <label className="label text-lg" htmlFor="name">
+              Name
+            </label>
+            <input
+              id="name"
+              name="name"
+              type="text"
+              value={formData.name}
+              onChange={handleInputChange}
+              className="input input-lg w-full"
+              placeholder="John Doe"
+              disabled={loading}
+            />
+          </div>
+
+          <div>
+            <label className="label text-lg" htmlFor="username">
+              Username
+            </label>
+            <input
+              id="username"
+              name="username"
+              type="text"
+              value={formData.username}
+              onChange={handleInputChange}
+              className="input input-lg w-full"
+              placeholder="User123"
+              disabled={loading}
+            />
+          </div>
+
+          <div>
+            <label className="label text-lg" htmlFor="email">
+              Email
+            </label>
+            <input
+              id="email"
+              type="email"
+              name="email"
+              value={formData.email}
+              onChange={handleInputChange}
+              className="input input-lg w-full"
+              placeholder="user123@students.finki.ukim.mk"
+              disabled={loading}
+            />
+          </div>
+
+          <div>
+            <label className="label text-lg" htmlFor="password">
+              Password
+            </label>
+            <div className="relative w-full">
+              <input
+                id="password"
+                name="password"
+                type={showPassword.password ? 'text' : 'password'}
+                className="input input-lg w-full pr-14"
+                placeholder="Password"
+                value={formData.password}
+                onChange={handleInputChange}
+                required
+                disabled={loading}
+              />
+              <button
+                type="button"
+                className="absolute top-0 right-0 h-full px-3 flex items-center z-10"
+                onClick={() => togglePasswordVisibility('password')}
+                tabIndex="-1"
+                disabled={loading}
+              >
+                {!showPassword.password ? (
+                  <svg
+                    xmlns="http://www.w3.org/2000/svg"
+                    fill="none"
+                    viewBox="0 0 24 24"
+                    strokeWidth={1.5}
+                    stroke="currentColor"
+                    className="w-6 h-6"
+                  >
+                    <path
+                      strokeLinecap="round"
+                      strokeLinejoin="round"
+                      d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88"
+                    />
+                  </svg>
+                ) : (
+                  <svg
+                    xmlns="http://www.w3.org/2000/svg"
+                    fill="none"
+                    viewBox="0 0 24 24"
+                    strokeWidth={1.5}
+                    stroke="currentColor"
+                    className="w-6 h-6"
+                  >
+                    <path
+                      strokeLinecap="round"
+                      strokeLinejoin="round"
+                      d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z"
+                    />
+                    <path
+                      strokeLinecap="round"
+                      strokeLinejoin="round"
+                      d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
+                    />
+                  </svg>
+                )}
+              </button>
+            </div>
+          </div>
+
+          <div>
+            <label className="label text-lg" htmlFor="password">
+              Confirm Password
+            </label>
+            <div className="relative w-full">
+              <input
+                id="confirmPassword"
+                type={showPassword.confirmPassword ? 'text' : 'password'}
+                name="confirmPassword"
+                value={formData.confirmPassword}
+                onChange={handleInputChange}
+                className="input input-lg w-full"
+                placeholder="Confirm Password"
+                disabled={loading}
+              />
+              <button
+                type="button"
+                className="absolute top-0 right-0 h-full px-3 flex items-center z-10"
+                onClick={() => togglePasswordVisibility('confirmPassword')}
+                tabIndex="-1"
+                disabled={loading}
+              >
+                {!showPassword.confirmPassword ? (
+                  <svg
+                    xmlns="http://www.w3.org/2000/svg"
+                    fill="none"
+                    viewBox="0 0 24 24"
+                    strokeWidth={1.5}
+                    stroke="currentColor"
+                    className="w-6 h-6"
+                  >
+                    <path
+                      strokeLinecap="round"
+                      strokeLinejoin="round"
+                      d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88"
+                    />
+                  </svg>
+                ) : (
+                  <svg
+                    xmlns="http://www.w3.org/2000/svg"
+                    fill="none"
+                    viewBox="0 0 24 24"
+                    strokeWidth={1.5}
+                    stroke="currentColor"
+                    className="w-6 h-6"
+                  >
+                    <path
+                      strokeLinecap="round"
+                      strokeLinejoin="round"
+                      d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z"
+                    />
+                    <path
+                      strokeLinecap="round"
+                      strokeLinejoin="round"
+                      d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
+                    />
+                  </svg>
+                )}
+              </button>
+            </div>
+          </div>
+
+          <button
+            type="submit"
+            className="btn bg-black btn-xs sm:btn-sm md:btn-md lg:btn-lg xl:btn-xl flex items-center justify-center"
+            disabled={loading}
+          >
+            {loading ? (
+              <span className="loading loading-spinner loading-md mr-2"></span>
+            ) : null}
+            Register
+          </button>
+          {error ? (
+            <p className="text-red-500 text-sm mt-1">{error}</p>
+          ) : (
+            <p className="text-sm mt-1">
+              *Must register with your students address
+            </p>
+          )}
+        </form>
+
+        <Link to="/login" className="underline mt-1.5">
+          Already have an account?
+        </Link>
+      </div>
     </div>
   );
Index: client/src/routes/ProtectedRoute.jsx
===================================================================
--- client/src/routes/ProtectedRoute.jsx	(revision dc9d8b915f2530c83c493c18364aa8a76c7402b5)
+++ client/src/routes/ProtectedRoute.jsx	(revision d44298bcbe40fd15d76afbb70c5223744dd24715)
@@ -30,7 +30,8 @@
     );
   }
+  console.log('User from context:', user);
+  console.log('User from localStorage:', localUser);
 
-  // IMPORTANT: This is the key fix - explicitly check if both are null/undefined
-  if (!user || !localUser) {
+  if (!user && !localUser) {
     console.log('Not authenticated, redirecting to login');
     return (
