Index: backend/backend/settings.py
===================================================================
--- backend/backend/settings.py	(revision b7c1505a84d7891a5e6963196e221bc19a37be2c)
+++ backend/backend/settings.py	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
@@ -56,5 +56,5 @@
 
 SIMPLE_JWT = {
-    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=30),
+    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=1),
     'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
     'ROTATE_REFRESH_TOKENS': True,
Index: frontend/src/App.tsx
===================================================================
--- frontend/src/App.tsx	(revision b7c1505a84d7891a5e6963196e221bc19a37be2c)
+++ frontend/src/App.tsx	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
@@ -8,4 +8,5 @@
 import Navbar from "./components/Navbar";
 import Footer from "./components/Footer";
+import useAxiosAuth from "./hooks/useAxiosAuth";
 import "./index.css";
 
@@ -41,4 +42,5 @@
 
 function App() {
+  useAxiosAuth();
   return <RouterProvider router={router} />;
 }
Index: frontend/src/api/axiosInstance.ts
===================================================================
--- frontend/src/api/axiosInstance.ts	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
+++ frontend/src/api/axiosInstance.ts	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
@@ -0,0 +1,10 @@
+import axios from 'axios';
+
+const axiosInstance = axios.create({
+    baseURL: 'http://localhost:8000',
+    headers: {
+        "Content-Type": "application/json",
+      },
+});
+
+export default axiosInstance;
Index: frontend/src/components/StudentForm.tsx
===================================================================
--- frontend/src/components/StudentForm.tsx	(revision b7c1505a84d7891a5e6963196e221bc19a37be2c)
+++ frontend/src/components/StudentForm.tsx	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
@@ -208,5 +208,4 @@
           }`}
         >
-          {formStatus.message}
         </div>
       )}
@@ -554,5 +553,5 @@
           {formStatus.isSubmitting
             ? "Се зачувува..."
-            : formData
+            : formData?.current_year
             ? "Ажурирај"
             : "Зачувај"}
Index: frontend/src/context/AuthProvider.tsx
===================================================================
--- frontend/src/context/AuthProvider.tsx	(revision b7c1505a84d7891a5e6963196e221bc19a37be2c)
+++ frontend/src/context/AuthProvider.tsx	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
@@ -10,13 +10,19 @@
   }
   try {
-    const response = await axios.post<{ access: string }>(
+    const response = await axios.post<{ access: string; refresh?: string }>(
       "http://localhost:8000/auth/refresh/",
-      {
-        refresh: refreshToken,
-      }
+      { refresh: refreshToken }
     );
     console.log(response);
+
     const newAccessToken = response.data.access;
+
     localStorage.setItem("access_token", newAccessToken);
+
+    if (response.data.refresh) {
+      const newRefreshToken = response.data.refresh;
+      localStorage.setItem("refresh_token", newRefreshToken);
+    }
+
     return newAccessToken;
   } catch (error) {
@@ -45,5 +51,4 @@
       setAccessToken(storedRefreshToken);
     }
-
   }, [accessToken, refreshToken]);
   const login = (newAccessToken: string, newRefreshToken: string) => {
Index: frontend/src/hooks/useAxiosAuth.ts
===================================================================
--- frontend/src/hooks/useAxiosAuth.ts	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
+++ frontend/src/hooks/useAxiosAuth.ts	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
@@ -0,0 +1,42 @@
+import { useEffect } from "react";
+import { useAuth } from "../hooks/useAuth";
+import axiosInstance from "../api/axiosInstance";
+
+const useAxiosAuth = () => {
+  const { accessToken, refreshAccessToken, logout } = useAuth();
+
+  useEffect(() => {
+    const requestInterceptor = axiosInstance.interceptors.request.use(
+      (config) => {
+        if (accessToken) {
+          config.headers.Authorization = `Bearer ${accessToken}`;
+        }
+        return config;
+      },
+      (error) => Promise.reject(error)
+    );
+    const responseInterceptor = axiosInstance.interceptors.response.use(
+      (response) => response,
+      async (error) => {
+        const originalRequest = error.config;
+        if (error.response?.status === 401 && !originalRequest._retry) {
+          originalRequest._retry = true;
+          const newToken = await refreshAccessToken();
+
+          if (newToken) {
+            originalRequest.headers["Authorization"] = `Bearer ${newToken}`;
+            return axiosInstance(originalRequest);
+          } else {
+            logout();
+          }
+        }
+        return Promise.reject(error);
+      }
+    );
+    return () => {
+      axiosInstance.interceptors.request.eject(requestInterceptor);
+      axiosInstance.interceptors.response.eject(responseInterceptor);
+    };
+  }, [accessToken, refreshAccessToken, logout]);
+};
+export default useAxiosAuth;
Index: frontend/src/pages/Account.tsx
===================================================================
--- frontend/src/pages/Account.tsx	(revision b7c1505a84d7891a5e6963196e221bc19a37be2c)
+++ frontend/src/pages/Account.tsx	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
@@ -4,7 +4,11 @@
 import { Subject } from "../components/types";
 import { StudentData } from "../components/types";
+import axiosInstance from "../api/axiosInstance";
+import { useNavigate } from "react-router-dom";
 
 const Account = () => {
-  const { accessToken } = useAuth();
+  const navigate = useNavigate();
+  const { accessToken, refreshAccessToken } = useAuth();
+  const [tokenChecked, setTokenChecked] = useState(false);
   const [formData, setFormData] = useState<StudentData | null>(null);
   const [subjects, setSubjects] = useState<Subject[]>([]);
@@ -12,28 +16,52 @@
 
   useEffect(() => {
+    const checkToken = async () => {
+      let accessToken = localStorage.getItem("access_token");
+  
+      if (!accessToken) {
+        accessToken = await refreshAccessToken();
+        if (accessToken) {
+          localStorage.setItem("access_token", accessToken);
+        } else {
+          navigate("/login");
+          return;
+        }
+      }
+      setTokenChecked(true); 
+    };
+    checkToken();
+  }, [refreshAccessToken]);
+
+  useEffect(() => {
     const fetchData = async () => {
-      const resForm = await fetch("http://localhost:8000/auth/form/", {
-        headers: { Authorization: `Bearer ${accessToken}` },
-      });
-      const formJson = await resForm.json();
-      if (resForm.ok) {
-        setFormData(formJson);
+      if (!accessToken) {
+        return;
       }
-      const resSubjects = await fetch("http://localhost:8000/subjects");
-      if (resSubjects.ok) {
-        const subJson: Subject[] = await resSubjects.json();
-        setSubjects(subJson || []);
-        const allProfessors: string[] = subJson
-          .flatMap((subject: Subject) => subject.subject_info.professors)
-          .filter((p): p is string => typeof p === "string");
+      console.log(accessToken);
+      try {
+        const resForm = await axiosInstance.get("/auth/form/");
+        setFormData(resForm.data);
+        const resSubjects = await fetch("http://localhost:8000/subjects");
+        if (resSubjects.ok) {
+          const subJson: Subject[] = await resSubjects.json();
+          setSubjects(subJson || []);
+          const allProfessors: string[] = subJson
+            .flatMap((subject: Subject) => subject.subject_info.professors)
+            .filter((p): p is string => typeof p === "string");
 
-        const uniqueProfessors = Array.from(new Set(allProfessors));
-        const filteredProfessors = uniqueProfessors.filter((prof) => prof.trim().toLowerCase() !== 'сите професори');
-        setProfessors(filteredProfessors);
+          const uniqueProfessors = Array.from(new Set(allProfessors));
+          const filteredProfessors = uniqueProfessors.filter(
+            (prof) => prof.trim().toLowerCase() !== "сите професори"
+          );
+          setProfessors(filteredProfessors);
+        }
+      } catch (error) {
+        console.error("Error fetching data.", error);
       }
     };
-
-    fetchData();
-  }, [accessToken]);
+    if (tokenChecked) {
+      fetchData();
+    }
+  }, [tokenChecked, accessToken]);
 
   return (
Index: frontend/src/pages/Register.tsx
===================================================================
--- frontend/src/pages/Register.tsx	(revision b7c1505a84d7891a5e6963196e221bc19a37be2c)
+++ frontend/src/pages/Register.tsx	(revision 8eaa412c2519ea23247b7a68d8318046bbfa135a)
@@ -21,5 +21,7 @@
   const [loading, setLoading] = useState(false);
   const [errors, setErrors] = useState<
-    Partial<RegisterForm> & { non_field_errors?: string[] }
+    Partial<Record<keyof RegisterForm, string[]>> & {
+      non_field_errors?: string[];
+    }
   >({});
   const navigate = useNavigate();
@@ -36,4 +38,8 @@
     e.preventDefault();
     setErrors({});
+    if (formData.password !== formData.confirmPassword) {
+      setErrors({ confirmPassword: ["Password do not match. "] });
+      return;
+    }
     setLoading(true);
 
@@ -109,4 +115,9 @@
           onChange={handleChange}
         />
+        {errors.confirmPassword && (
+          <p className="text-red-500 text-sm mb-2">
+            {errors.confirmPassword[0]}
+          </p>
+        )}
         <input
           type="text"
@@ -115,5 +126,5 @@
           value={formData.fullName}
           onChange={handleChange}
-          placeholder="Full Name"
+          placeholder="Име презиме"
           className="w-full mb-3 p-2 border rounded"
         />
