Index: backend/auth_form/permissions.py
===================================================================
--- backend/auth_form/permissions.py	(revision 73ddd3b4f177c5469bf749a94dcc0b2c24bb5248)
+++ backend/auth_form/permissions.py	(revision 9cfde80ff541664f7de7b15c8d5110e8ff61be91)
@@ -2,5 +2,5 @@
 
 class IsStudent(BasePermission):
-    def has_permssion(self, request, view):
+    def has_perimssion(self, request, view):
         return hasattr(request.user, 'student')
     
Index: backend/auth_form/signals.py
===================================================================
--- backend/auth_form/signals.py	(revision 73ddd3b4f177c5469bf749a94dcc0b2c24bb5248)
+++ backend/auth_form/signals.py	(revision 9cfde80ff541664f7de7b15c8d5110e8ff61be91)
@@ -10,4 +10,4 @@
 @receiver(post_save, sender=User)
 def save_student_profile(sender, instance, **kwargs):
-    instance.student_profile.save()
+    instance.student.save()
     
Index: backend/auth_form/views.py
===================================================================
--- backend/auth_form/views.py	(revision 73ddd3b4f177c5469bf749a94dcc0b2c24bb5248)
+++ backend/auth_form/views.py	(revision 9cfde80ff541664f7de7b15c8d5110e8ff61be91)
@@ -21,7 +21,10 @@
             # Step 3: Save the user
             user = serializer.save()
+            refresh = RefreshToken.for_user(user)
 
             # Step 4: Return a success response
             return Response({
+                'refresh': str(refresh),
+                'access': str(refresh.access_token),
                 'message': 'User registered successfully',
                 'user': serializer.data
@@ -61,4 +64,8 @@
     
     def post(self, request):
+        print(request.data)
+        if hasattr(request.user, 'student') and request.user.student.has_filled_form:
+            return Response({"detail": "Student profile already exists."}, status=status.HTTP_400_BAD_REQUEST)
+        
         serializer = StudentFormSerializer(instance=request.user.student, data=request.data)
         if serializer.is_valid():
@@ -69,5 +76,7 @@
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
     
-    def put(self, request):
+    def patch(self, request):
+        if not hasattr(request.user, 'student'):
+            return Response({"detail": "No student profile found."}, status=status.HTTP_404_NOT_FOUND)
         serializer = StudentFormSerializer(instance=request.user.student, data=request.data)
         if serializer.is_valid():
Index: backend/backend/settings.py
===================================================================
--- backend/backend/settings.py	(revision 73ddd3b4f177c5469bf749a94dcc0b2c24bb5248)
+++ backend/backend/settings.py	(revision 9cfde80ff541664f7de7b15c8d5110e8ff61be91)
@@ -44,5 +44,6 @@
     'rest_framework',
     'rest_framework_simplejwt',
-    'auth_form'
+    'rest_framework_simplejwt.token_blacklist',
+    'auth_form',
 ]
 
Index: frontend/src/components/StudentForm.tsx
===================================================================
--- frontend/src/components/StudentForm.tsx	(revision 73ddd3b4f177c5469bf749a94dcc0b2c24bb5248)
+++ frontend/src/components/StudentForm.tsx	(revision 9cfde80ff541664f7de7b15c8d5110e8ff61be91)
@@ -1,3 +1,3 @@
-import { useState } from "react";
+import { useState, useEffect } from "react";
 import { useAuth } from "../hooks/useAuth";
 import { StudentData } from "./types";
@@ -19,5 +19,5 @@
 
 const StudentForm = ({ formData, subjects, professors }: StudentFormProps) => {
-  const { token } = useAuth();
+  const { accessToken } = useAuth();
   const [validationErrors, setValidationErrors] = useState<{
     [key: string]: string;
@@ -39,9 +39,33 @@
   );
   const [evaluation, setEvaluation] = useState(
-    formData?.preferred_evaluation || ""
+    formData?.preferred_evaluation?.[0] || ""
   );
   const [favoriteProfs, setFavoriteProfs] = useState<string[]>(
     formData?.favorite_professors || []
   );
+  const [formStatus, setFormStatus] = useState<{
+    isSubmitting: boolean;
+    message: string;
+    isError: boolean;
+  }>({
+    isSubmitting: false,
+    message: "",
+    isError: false,
+  });
+
+  // Update form when formData changes (e.g., after fetching user data)
+  useEffect(() => {
+    if (formData) {
+      setIndex(formData.index || "");
+      setStudyTrack((formData.study_track as Programs) || "");
+      setYear(formData.current_year || 1);
+      setPassedSubjects(formData.passed_subjects || []);
+      setStudyEffort(formData.study_effort || "");
+      setDomains(formData.preferred_domains || []);
+      setTechnologies(formData.preferred_technologies || []);
+      setEvaluation(formData.preferred_evaluation?.[0] || "");
+      setFavoriteProfs(formData.favorite_professors || []);
+    }
+  }, [formData]);
 
   const validateForm = () => {
@@ -51,5 +75,4 @@
       errors.index = "Индексот e задолжителен.";
     } else if (!/^\d{6}$/.test(index)) {
-      // Validate if index is exactly 6 digits
       errors.index = "Индексот треба да има точно 6 цифри.";
     }
@@ -96,4 +119,9 @@
     }
     setValidationErrors({});
+    setFormStatus({
+      isSubmitting: true,
+      message: "",
+      isError: false,
+    });
 
     const payload = {
@@ -109,17 +137,40 @@
     };
 
-    const method = formData?.current_year ? "PUT" : "POST";
-    const endpoint = "http://localhost:8000/auth/form/";
-
-    const res = await fetch(endpoint, {
-      method,
-      headers: {
-        "Content-Type": "application/json",
-        Authorization: `Bearer ${token}`,
-      },
-      body: JSON.stringify(payload),
-    });
-    if (res.ok) alert("Form submitted successfully!");
-    else alert("Error submitting form.");
+    try {
+      // For updating existing form data use PATCH instead of PUT for partial updates
+      const method = formData ? "PATCH" : "POST";
+      const endpoint = "http://localhost:8000/auth/form/";
+
+      const res = await fetch(endpoint, {
+        method,
+        headers: {
+          "Content-Type": "application/json",
+          Authorization: `Bearer ${accessToken}`,
+        },
+        body: JSON.stringify(payload),
+      });
+
+      if (res.ok) {
+        setFormStatus({
+          isSubmitting: false,
+          message: "Формата е успешно зачувана!",
+          isError: false,
+        });
+
+        setTimeout(() => {
+          setFormStatus((prev) => ({ ...prev, message: "" }));
+        }, 5000);
+      } else {
+        const errorData = await res.json();
+        throw new Error(errorData.message || "Error submitting form");
+      }
+    } catch (error) {
+      console.error("Form submission error:", error);
+      setFormStatus({
+        isSubmitting: false,
+        message: `Грешка при зачувување: ${(error as Error).message}`,
+        isError: true,
+      });
+    }
   };
 
@@ -139,41 +190,72 @@
     : [];
   return (
-    <form onSubmit={handleSubmit} className="space-y-4">
-      <div>
-        <input
-          type="text"
-          placeholder="Индекс"
-          value={index}
-          onChange={(e) => setIndex(e.target.value)}
-          className="input"
-        />
-        {validationErrors.index && (
-          <span className="text-red-600 text-sm">{validationErrors.index}</span>
-        )}
-      </div>
-      <div>
-        <select
-          value={studyTrack}
-          onChange={(e) => setStudyTrack(e.target.value as Programs | "")}
-          className="input"
+    <form onSubmit={handleSubmit} className="space-y-6 max-w-4xl mx-auto">
+      <h2 className="text-2xl font-bold mb-4">
+        {formData ? "Ажурирај ги податоците" : "Внеси податоци"}
+      </h2>
+
+      {formStatus.message && (
+        <div
+          className={`px-4 py-3 rounded mb-4 ${
+            formStatus.isError
+              ? "bg-red-100 border border-red-400 text-red-700"
+              : "bg-green-100 border border-green-400 text-green-700"
+          }`}
         >
-          <option value="">Смер</option>
-          {STUDY_TRACKS.map((track) => (
-            <option key={track} value={track}>
-              {track}
-            </option>
-          ))}
-        </select>
-        {validationErrors.studyTrack && (
-          <span className="text-red-600 text-sm">
-            {validationErrors.studyTrack}
-          </span>
-        )}
-      </div>
-      <div>
+          {formStatus.message}
+        </div>
+      )}
+
+      <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
+        <div>
+          <label className="block text-sm font-medium text-gray-700 mb-1">
+            Индекс
+          </label>
+          <input
+            type="text"
+            placeholder="Внеси индекс"
+            value={index}
+            onChange={(e) => setIndex(e.target.value)}
+            className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
+          />
+          {validationErrors.index && (
+            <p className="mt-1 text-sm text-red-600">
+              {validationErrors.index}
+            </p>
+          )}
+        </div>
+
+        <div>
+          <label className="block text-sm font-medium text-gray-700 mb-1">
+            Смер
+          </label>
+          <select
+            value={studyTrack}
+            onChange={(e) => setStudyTrack(e.target.value as Programs | "")}
+            className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
+          >
+            <option value="">Избери смер</option>
+            {STUDY_TRACKS.map((track) => (
+              <option key={track} value={track}>
+                {track}
+              </option>
+            ))}
+          </select>
+          {validationErrors.studyTrack && (
+            <p className="mt-1 text-sm text-red-600">
+              {validationErrors.studyTrack}
+            </p>
+          )}
+        </div>
+      </div>
+
+      <div>
+        <label className="block text-sm font-medium text-gray-700 mb-1">
+          Година на студии
+        </label>
         <select
           value={year}
           onChange={(e) => setYear(Number(e.target.value))}
-          className="input"
+          className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
         >
           {YEARS.map((y) => (
@@ -184,34 +266,37 @@
         </select>
         {validationErrors.year && (
-          <span className="text-red-600 text-sm">{validationErrors.year}</span>
-        )}
-      </div>
-      <div>
-        <h3 className="font-semibold mb-1">Положени задолжителни предмети</h3>
-        <div className="flex flex-wrap gap-2">
-          {filteredMandatorySubjects.map((subject) => {
-            const isSelected = passedSubjects.some((s) => s.id === subject.id);
-            return (
-              <button
-                type="button"
-                key={subject.id}
-                onClick={() => toggleSubject(subject)}
-                className={`flex items-center gap-6 px-3 py-2 border rounded-md transition-all duration-200 ease-in-out 
-                  ${
-                    isSelected
-                      ? "bg-green-500 text-white border-green-600 shadow-md transform "
-                      : "bg-white text-gray-800 border-gray-300 hover:bg-gray-100"
-                  }`}
-                // for accessibility
-                aria-pressed={isSelected}
-              >
-                {isSelected && (
-                  <span className="flex items-center justify-center text-white">
+          <p className="mt-1 text-sm text-red-600">{validationErrors.year}</p>
+        )}
+      </div>
+
+      <div>
+        <h3 className="text-lg font-medium text-gray-900 mb-2">
+          Положени задолжителни предмети
+        </h3>
+        {filteredMandatorySubjects.length > 0 ? (
+          <div className="flex flex-wrap gap-2">
+            {filteredMandatorySubjects.map((subject) => {
+              const isSelected = passedSubjects.some(
+                (s) => s.id === subject.id
+              );
+              return (
+                <button
+                  type="button"
+                  key={subject.id}
+                  onClick={() => toggleSubject(subject)}
+                  className={`flex items-center gap-2 px-3 py-2 border rounded-md transition-all duration-200 
+                    ${
+                      isSelected
+                        ? "bg-green-500 text-white border-green-600 shadow-md"
+                        : "bg-white text-gray-800 border-gray-300 hover:bg-gray-100"
+                    }`}
+                  aria-pressed={isSelected}
+                >
+                  {isSelected && (
                     <svg
-                      className="w-6 h-6"
+                      className="w-5 h-5"
                       fill="none"
                       stroke="currentColor"
                       viewBox="0 0 24 24"
-                      xmlns="http://www.w3.org/2000/svg"
                     >
                       <path
@@ -222,44 +307,53 @@
                       ></path>
                     </svg>
-                  </span>
-                )}
-                {subject.name}
-              </button>
-            );
-          })}
-        </div>
-      </div>
-      {validationErrors.passedSubjects && (
-        <span className="text-red-600 text-sm">
-          {validationErrors.passedSubjects}
-        </span>
-      )}
-      <div>
-        <h3 className="font-semibold mb-1">Положени изборни предмети</h3>
-        <div className="flex flex-wrap gap-2">
-          {filteredElectiveSubjects.map((subject) => {
-            const isSelected = passedSubjects.some((s) => s.id === subject.id);
-            return (
-              <button
-                type="button"
-                key={subject.id}
-                onClick={() => toggleSubject(subject)}
-                className={`flex items-center gap-6 px-3 py-2 border rounded-md transition-all duration-200 ease-in-out 
-                  ${
-                    isSelected
-                      ? "bg-green-500 text-white border-green-600 shadow-md transform "
-                      : "bg-white text-gray-800 border-gray-300 hover:bg-gray-100"
-                  }`}
-                // for accessibility
-                aria-pressed={isSelected}
-              >
-                {isSelected && (
-                  <span className="flex items-center justify-center text-white">
+                  )}
+                  <span>{subject.name}</span>
+                </button>
+              );
+            })}
+          </div>
+        ) : (
+          <p className="text-gray-500 italic">
+            {!studyTrack
+              ? "Избери смер и година за да се прикажат предметите"
+              : "Нема задолжителни предмети за избраниот смер и година"}
+          </p>
+        )}
+        {validationErrors.passedSubjects && (
+          <p className="mt-1 text-sm text-red-600">
+            {validationErrors.passedSubjects}
+          </p>
+        )}
+      </div>
+
+      <div>
+        <h3 className="text-lg font-medium text-gray-900 mb-2">
+          Положени изборни предмети
+        </h3>
+        {filteredElectiveSubjects.length > 0 ? (
+          <div className="flex flex-wrap gap-2">
+            {filteredElectiveSubjects.map((subject) => {
+              const isSelected = passedSubjects.some(
+                (s) => s.id === subject.id
+              );
+              return (
+                <button
+                  type="button"
+                  key={subject.id}
+                  onClick={() => toggleSubject(subject)}
+                  className={`flex items-center gap-2 px-3 py-2 border rounded-md transition-all duration-200 
+                    ${
+                      isSelected
+                        ? "bg-green-500 text-white border-green-600 shadow-md"
+                        : "bg-white text-gray-800 border-gray-300 hover:bg-gray-100"
+                    }`}
+                  aria-pressed={isSelected}
+                >
+                  {isSelected && (
                     <svg
-                      className="w-6 h-6"
+                      className="w-5 h-5"
                       fill="none"
                       stroke="currentColor"
                       viewBox="0 0 24 24"
-                      xmlns="http://www.w3.org/2000/svg"
                     >
                       <path
@@ -270,23 +364,27 @@
                       ></path>
                     </svg>
-                  </span>
-                )}
-                {subject.name}
-              </button>
-            );
-          })}
-        </div>
-      </div>
-      {validationErrors.passedSubjects && (
-        <span className="text-red-600 text-sm">
-          {validationErrors.passedSubjects}
-        </span>
-      )}
-      <div>
-        <h3 className="font-semibold mb-1">Вложен труд</h3>
+                  )}
+                  <span>{subject.name}</span>
+                </button>
+              );
+            })}
+          </div>
+        ) : (
+          <p className="text-gray-500 italic">
+            {!studyTrack
+              ? "Избери смер и година за да се прикажат предметите"
+              : "Нема изборни предмети за избраниот смер и година"}
+          </p>
+        )}
+      </div>
+
+      <div>
+        <label className="block text-sm font-medium text-gray-700 mb-1">
+          Вложен труд при учење
+        </label>
         <select
           value={studyEffort}
           onChange={(e) => setStudyEffort(e.target.value)}
-          className="input"
+          className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
         >
           <option value="">Одбери колку труд вложуваш при учење</option>
@@ -297,13 +395,16 @@
           ))}
         </select>
-      </div>
-      {validationErrors.studyEffort && (
-        <span className="text-red-600 text-sm">
-          {validationErrors.studyEffort}
-        </span>
-      )}
-      <div>
-        <h3 className="font-semibold mb-1">Полиња на интерес</h3>
-        <div className="flex gap-2 flex-wrap">
+        {validationErrors.studyEffort && (
+          <p className="mt-1 text-sm text-red-600">
+            {validationErrors.studyEffort}
+          </p>
+        )}
+      </div>
+
+      <div>
+        <h3 className="text-lg font-medium text-gray-900 mb-2">
+          Полиња на интерес
+        </h3>
+        <div className="flex flex-wrap gap-2">
           {DOMAINS.map((d) => (
             <button
@@ -311,6 +412,8 @@
               key={d}
               onClick={() => toggleSelection(d, setDomains, domains)}
-              className={`px-2 py-1 border rounded ${
-                domains.includes(d) ? "bg-green-200" : ""
+              className={`px-3 py-2 border rounded-md transition-colors ${
+                domains.includes(d)
+                  ? "bg-blue-100 border-blue-300 text-blue-800"
+                  : "bg-white hover:bg-gray-50 border-gray-300"
               }`}
             >
@@ -319,11 +422,16 @@
           ))}
         </div>
-      </div>
-      {validationErrors.domains && (
-        <span className="text-red-600 text-sm">{validationErrors.domains}</span>
-      )}
-      <div>
-        <h3 className="font-semibold mb-1">Преферирани технологии</h3>
-        <div className="flex gap-2 flex-wrap">
+        {validationErrors.domains && (
+          <p className="mt-1 text-sm text-red-600">
+            {validationErrors.domains}
+          </p>
+        )}
+      </div>
+
+      <div>
+        <h3 className="text-lg font-medium text-gray-900 mb-2">
+          Преферирани технологии
+        </h3>
+        <div className="flex flex-wrap gap-2">
           {TECHNOLOGIES.map((tech) => (
             <button
@@ -333,6 +441,8 @@
                 toggleSelection(tech, setTechnologies, technologies)
               }
-              className={`px-2 py-1 border rounded ${
-                technologies.includes(tech) ? "bg-yellow-200" : ""
+              className={`px-3 py-2 border rounded-md transition-colors ${
+                technologies.includes(tech)
+                  ? "bg-yellow-100 border-yellow-300 text-yellow-800"
+                  : "bg-white hover:bg-gray-50 border-gray-300"
               }`}
             >
@@ -341,16 +451,19 @@
           ))}
         </div>
-      </div>
-      {validationErrors.technologies && (
-        <span className="text-red-600 text-sm">
-          {validationErrors.technologies}
-        </span>
-      )}
-      <div>
-        <h3 className="font-semibold mb-1">Преферирани начин на оценување</h3>
+        {validationErrors.technologies && (
+          <p className="mt-1 text-sm text-red-600">
+            {validationErrors.technologies}
+          </p>
+        )}
+      </div>
+
+      <div>
+        <label className="block text-sm font-medium text-gray-700 mb-1">
+          Преферирани начин на оценување
+        </label>
         <select
           value={evaluation}
           onChange={(e) => setEvaluation(e.target.value)}
-          className="input"
+          className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
         >
           <option value="">Како сакаш да те оценат</option>
@@ -361,13 +474,16 @@
           ))}
         </select>
-      </div>
-      {validationErrors.evaluation && (
-        <span className="text-red-600 text-sm">
-          {validationErrors.evaluation}
-        </span>
-      )}
-      <div>
-        <h3 className="font-semibold mb-1">Омилени професори</h3>
-        <div className="mt-2 flex flex-wrap gap-2">
+        {validationErrors.evaluation && (
+          <p className="mt-1 text-sm text-red-600">
+            {validationErrors.evaluation}
+          </p>
+        )}
+      </div>
+
+      <div>
+        <h3 className="text-lg font-medium text-gray-900 mb-2">
+          Омилени професори
+        </h3>
+        <div className="flex flex-wrap gap-2">
           {professors.map((prof) => (
             <button
@@ -377,6 +493,8 @@
                 toggleSelection(prof, setFavoriteProfs, favoriteProfs)
               }
-              className={`px-2 py-1 border rounded ${
-                favoriteProfs.includes(prof) ? "bg-pink-200" : ""
+              className={`px-3 py-2 border rounded-md transition-colors ${
+                favoriteProfs.includes(prof)
+                  ? "bg-pink-100 border-pink-300 text-pink-800"
+                  : "bg-white hover:bg-gray-50 border-gray-300"
               }`}
             >
@@ -386,15 +504,18 @@
         </div>
       </div>
-      {validationErrors.favoriteProfessors && (
-        <span className="text-red-600 text-sm">
-          {validationErrors.favoriteProfessors}
-        </span>
-      )}
-      <div>
+
+      <div className="pt-4">
         <button
           type="submit"
-          className="bg-blue-600 text-white px-4 py-2 rounded"
+          disabled={formStatus.isSubmitting}
+          className={`w-full md:w-auto px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-md shadow focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors ${
+            formStatus.isSubmitting ? "opacity-70 cursor-not-allowed" : ""
+          }`}
         >
-          Submit
+          {formStatus.isSubmitting
+            ? "Се зачувува..."
+            : formData
+            ? "Ажурирај"
+            : "Зачувај"}
         </button>
       </div>
Index: frontend/src/context/AuthProvider.tsx
===================================================================
--- frontend/src/context/AuthProvider.tsx	(revision 73ddd3b4f177c5469bf749a94dcc0b2c24bb5248)
+++ frontend/src/context/AuthProvider.tsx	(revision 9cfde80ff541664f7de7b15c8d5110e8ff61be91)
@@ -5,4 +5,5 @@
 const refreshAccessToken = async (): Promise<string | null> => {
   const refreshToken = localStorage.getItem("refresh_token");
+  console.log(refreshToken);
   if (!refreshToken) {
     return null;
@@ -15,4 +16,5 @@
       }
     );
+    console.log(response);
     const newAccessToken = response.data.access;
     localStorage.setItem("access_token", newAccessToken);
Index: frontend/src/pages/Home.tsx
===================================================================
--- frontend/src/pages/Home.tsx	(revision 73ddd3b4f177c5469bf749a94dcc0b2c24bb5248)
+++ frontend/src/pages/Home.tsx	(revision 9cfde80ff541664f7de7b15c8d5110e8ff61be91)
@@ -1,11 +1,6 @@
-import { Link } from "react-router-dom";
-
 const Home = () => {
   return (
-    <div className="text-center absolute top-1/2 left-1/2 text-lg">
-      <p>f home page :( </p>
-      <Link to="/subjects" className="text-blue-700 underline">
-        look at this though
-      </Link>
+    <div className="text-center absolute top-1/2 left-1/2  text-lg">
+      <p> Вие избирате, ние Ве избравме. Welcome. </p>
     </div>
   );
Index: frontend/src/pages/Register.tsx
===================================================================
--- frontend/src/pages/Register.tsx	(revision 73ddd3b4f177c5469bf749a94dcc0b2c24bb5248)
+++ frontend/src/pages/Register.tsx	(revision 9cfde80ff541664f7de7b15c8d5110e8ff61be91)
@@ -49,6 +49,7 @@
         }
       );
-
+      console.log(response);
       const { access, refresh } = response.data;
+      console.log(access, refresh);
       login(access, refresh);
       navigate("/");
