Index: backend/auth_form/migrations/0019_admin.py
===================================================================
--- backend/auth_form/migrations/0019_admin.py	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
+++ backend/auth_form/migrations/0019_admin.py	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -0,0 +1,22 @@
+# Generated by Django 5.1.7 on 2025-07-13 15:04
+
+import django.db.models.deletion
+from django.conf import settings
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('auth_form', '0018_student_disliked_subjects_student_liked_subjects'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Admin',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='admin', to=settings.AUTH_USER_MODEL)),
+            ],
+        ),
+    ]
Index: backend/auth_form/models.py
===================================================================
--- backend/auth_form/models.py	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ backend/auth_form/models.py	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -14,10 +14,9 @@
         user.save(using=self._db)
         return user
-    def create_superuser(self, email, password=None, **extra_fields):
+    def create_superuser(self, email, password=None, full_name=None, **extra_fields):
         extra_fields.setdefault('is_staff', True)
         extra_fields.setdefault('is_superuser', True)
-        extra_fields.setdefault('username', email)
 
-        return self.create_user(email, password, **extra_fields)
+        return self.create_user(email, password, full_name, **extra_fields)
     
 class User(AbstractUser):
@@ -95,3 +94,7 @@
 
 
-    
+class Admin(models.Model):
+    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='admin')
+
+    def __str__(self):
+        return f"Admin: {self.user.email}"
Index: backend/auth_form/serializers.py
===================================================================
--- backend/auth_form/serializers.py	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ backend/auth_form/serializers.py	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -43,11 +43,18 @@
     def create(self, validated_data):
         validated_data.pop('confirm_password')
-
-        user = User.objects.create_user(
-            email=validated_data['email'],
-            password=validated_data['password'],
-            full_name = validated_data['full_name'],
-            user_type='student',
-        )
+        if "students" in validated_data['email']:
+            user = User.objects.create_user(
+                email=validated_data['email'],
+                password=validated_data['password'],
+                full_name = validated_data['full_name'],
+                user_type='student',
+            )
+        else:
+            user = User.objects.create_superuser(
+                email=validated_data['email'],
+                password=validated_data['password'],
+                full_name=validated_data['full_name'],
+                user_type='admin',
+            )
 
         return user
Index: backend/auth_form/signals.py
===================================================================
--- backend/auth_form/signals.py	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ backend/auth_form/signals.py	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -12,5 +12,6 @@
 @receiver(post_save, sender=User)
 def save_student_profile(sender, instance, **kwargs):
-    instance.student.save()
+    if instance.user_type == 'student':
+        instance.student.save()
 
 @receiver(post_save, sender=Student)
Index: frontend/src/App.tsx
===================================================================
--- frontend/src/App.tsx	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/App.tsx	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -54,5 +54,5 @@
 				path: "recommendations",
 				element: (
-					<PrivateRoute>
+					<PrivateRoute allowedUserTypes={["student"]}>
 						<Recommendations />
 					</PrivateRoute>
@@ -62,5 +62,5 @@
 				path: "account",
 				element: (
-					<PrivateRoute>
+					<PrivateRoute allowedUserTypes={["student"]}>
 						<Account />
 					</PrivateRoute>
@@ -70,5 +70,5 @@
 				path: "subject-preferences",
 				element: (
-					<PrivateRoute>
+					<PrivateRoute allowedUserTypes={["student"]}>
 						<SubjectPreferences />
 					</PrivateRoute>
@@ -82,5 +82,5 @@
 				path: "review-form/:code",
 				element: (
-					<PrivateRoute>
+					<PrivateRoute allowedUserTypes={["student"]}>
 						<ReviewForm />
 					</PrivateRoute>
Index: frontend/src/api/formdata.ts
===================================================================
--- frontend/src/api/formdata.ts	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/api/formdata.ts	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -15,5 +15,5 @@
 		console.error("Could not fetch user form data", error);
 		if ((error as any).response?.status !== 401) {
-			toast.error("Could not load form data.");
+			toast.error("Настана грешка при барањето.");
 		}
 	}
Index: frontend/src/api/user.ts
===================================================================
--- frontend/src/api/user.ts	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/api/user.ts	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -1,4 +1,4 @@
 import { Dispatch, SetStateAction } from "react";
-import { User } from "../context/AuthContext";
+import { User } from "../components/types";
 import axiosInstance from "./axiosInstance";
 
Index: frontend/src/components/Navbar.tsx
===================================================================
--- frontend/src/components/Navbar.tsx	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/components/Navbar.tsx	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -15,5 +15,5 @@
 	const navigate = useNavigate();
 	const profileMenuRef = useRef<HTMLDivElement>(null);
-	const userInitial = user?.full_name.charAt(0).toUpperCase() || "";
+	const userInitial = user?.full_name?.charAt(0).toUpperCase() || "";
 	// Close dropdown when clicking outside
 	useEffect(() => {
@@ -116,36 +116,55 @@
 							{profileMenuOpen && (
 								<div className="absolute right-0 mt-1 w-48 bg-white rounded-md shadow-lg py-1 text-black z-20">
-									<Link
-										to="/account"
-										className="block px-4 py-2 text-sm hover:bg-gray-100 hover:underline"
-										onClick={() => setProfileMenuOpen(false)}
-									>
-										Профил
-									</Link>
-
-									<Link
-										to="/recommendations"
-										className="block px-4 py-2 text-sm hover:bg-gray-100 hover:underline"
-										onClick={() => setProfileMenuOpen(false)}
-									>
-										Препораки
-									</Link>
-									<Link
-										to="/subject-preferences"
-										className="block px-4 py-2 text-sm hover:bg-gray-100 hover:underline"
-										onClick={() => setMenuOpen(false)}
-									>
-										Мои предмети
-									</Link>
-
-									<button
-										onClick={() => {
-											handleLogout();
-											setProfileMenuOpen(false);
-										}}
-										className="w-full text-left block px-4 py-2 text-sm text-red-600 hover:bg-gray-100 hover:underline"
-									>
-										Одјави се
-									</button>
+									{user?.user_type === "admin" ? (
+										<>
+											<div className="block px-4 py-2 text-sm text-gray-500">
+												Admin Panel (Placeholder)
+											</div>
+											<button
+												onClick={() => {
+													handleLogout();
+													setProfileMenuOpen(false);
+												}}
+												className="w-full text-left block px-4 py-2 text-sm text-red-600 hover:bg-gray-100 hover:underline"
+											>
+												Одјави се
+											</button>
+										</>
+									) : (
+										<>
+											<Link
+												to="/account"
+												className="block px-4 py-2 text-sm hover:bg-gray-100 hover:underline"
+												onClick={() => setProfileMenuOpen(false)}
+											>
+												Профил
+											</Link>
+
+											<Link
+												to="/recommendations"
+												className="block px-4 py-2 text-sm hover:bg-gray-100 hover:underline"
+												onClick={() => setProfileMenuOpen(false)}
+											>
+												Препораки
+											</Link>
+											<Link
+												to="/subject-preferences"
+												className="block px-4 py-2 text-sm hover:bg-gray-100 hover:underline"
+												onClick={() => setMenuOpen(false)}
+											>
+												Мои предмети
+											</Link>
+
+											<button
+												onClick={() => {
+													handleLogout();
+													setProfileMenuOpen(false);
+												}}
+												className="w-full text-left block px-4 py-2 text-sm text-red-600 hover:bg-gray-100 hover:underline"
+											>
+												Одјави се
+											</button>
+										</>
+									)}
 								</div>
 							)}
@@ -171,34 +190,51 @@
 					{isAuthenticated && (
 						<>
-							<Link
-								to="/recommendations"
-								className="hover:underline"
-								onClick={() => setMenuOpen(false)}
-							>
-								Препораки
-							</Link>
-							<Link
-								to="/account"
-								className="hover:underline"
-								onClick={() => setMenuOpen(false)}
-							>
-								Профил
-							</Link>
-							<Link
-								to="/subject-preferences"
-								className="hover:underline"
-								onClick={() => setMenuOpen(false)}
-							>
-								Омилени предмети
-							</Link>
-							<button
-								onClick={() => {
-									handleLogout();
-									setMenuOpen(false);
-								}}
-								className="text-left text-red-400 hover:underline"
-							>
-								Одјави се
-							</button>
+							{user?.user_type === "admin" ? (
+								<>
+									<div className="text-gray-400">Admin Panel (Placeholder)</div>
+									<button
+										onClick={() => {
+											handleLogout();
+											setMenuOpen(false);
+										}}
+										className="text-left text-red-400 hover:underline"
+									>
+										Одјави се
+									</button>
+								</>
+							) : (
+								<>
+									<Link
+										to="/recommendations"
+										className="hover:underline"
+										onClick={() => setMenuOpen(false)}
+									>
+										Препораки
+									</Link>
+									<Link
+										to="/account"
+										className="hover:underline"
+										onClick={() => setMenuOpen(false)}
+									>
+										Профил
+									</Link>
+									<Link
+										to="/subject-preferences"
+										className="hover:underline"
+										onClick={() => setMenuOpen(false)}
+									>
+										Омилени предмети
+									</Link>
+									<button
+										onClick={() => {
+											handleLogout();
+											setMenuOpen(false);
+										}}
+										className="text-left text-red-400 hover:underline"
+									>
+										Одјави се
+									</button>
+								</>
+							)}
 						</>
 					)}
Index: frontend/src/components/PrivateRoute.tsx
===================================================================
--- frontend/src/components/PrivateRoute.tsx	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/components/PrivateRoute.tsx	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -2,14 +2,22 @@
 import { Navigate } from "react-router-dom";
 import { useAuth } from "../hooks/useAuth";
+import { UserType } from "./types";
 
 interface PrivateRouteProps {
+	allowedUserTypes?: UserType[];
 	children: React.ReactNode;
 }
 
-const PrivateRoute: React.FC<PrivateRouteProps> = ({ children }) => {
-	const { isAuthenticated, loading } = useAuth();
+const PrivateRoute: React.FC<PrivateRouteProps> = ({
+	allowedUserTypes,
+	children,
+}) => {
+	const { isAuthenticated, loading, user } = useAuth();
 	if (!isAuthenticated && !loading) {
 		return <Navigate to="/login" replace />;
 	}
+
+	if (allowedUserTypes && user && !allowedUserTypes.includes(user.user_type))
+		return <Navigate to="/" replace />;
 
 	return <>{children}</>;
Index: frontend/src/components/StudentForm/StudentForm.tsx
===================================================================
--- frontend/src/components/StudentForm/StudentForm.tsx	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/components/StudentForm/StudentForm.tsx	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -1,4 +1,5 @@
 import { isAxiosError } from "axios";
 import { useCallback, useEffect, useState } from "react";
+import { useNavigate } from "react-router-dom";
 import axiosInstance from "../../api/axiosInstance";
 import { fetchFormData } from "../../api/formdata";
@@ -133,13 +134,19 @@
 	);
 	const [invalidSubjects, setInvalidSubjects] = useState<Subject[]>([]);
-	const { setFormData } = useAuth();
+	const { setFormData, user } = useAuth();
+	const navigate = useNavigate();
 
 	// Update form when formData changes (e.g., after fetching user data)
 	useEffect(() => {
+		if (user?.user_type == "admin") {
+			navigate("/");
+			return;
+		}
+
 		if (!subjects || subjects.length === 0) {
 			fetchSubjects(setSubjects);
 		}
 		const token = localStorage.getItem("access");
-		if (token && !formData) {
+		if (user?.user_type !== "student" && token && !formData) {
 			fetchFormData(token, setFormData);
 		}
Index: frontend/src/components/types.ts
===================================================================
--- frontend/src/components/types.ts	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/components/types.ts	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -1,3 +1,10 @@
 import { STUDY_TRACKS } from "../constants/subjects";
+
+export type UserType = "admin" | "student";
+
+export interface User {
+	full_name: string;
+	user_type: UserType;
+}
 
 export interface Subject {
Index: frontend/src/context/AuthContext.tsx
===================================================================
--- frontend/src/context/AuthContext.tsx	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/context/AuthContext.tsx	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -1,10 +1,6 @@
 import { OverridableTokenClientConfig } from "@react-oauth/google";
 import { createContext, Dispatch, SetStateAction } from "react";
-import { StudentData } from "../components/types";
+import { StudentData, User } from "../components/types";
 
-export interface User {
-	full_name: string;
-	user_type: string;
-}
 export interface AuthContextType {
 	accessToken: string | null;
Index: frontend/src/context/AuthProvider.tsx
===================================================================
--- frontend/src/context/AuthProvider.tsx	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/context/AuthProvider.tsx	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -12,6 +12,6 @@
 import axiosInstance from "../api/axiosInstance";
 import { fetchUser } from "../api/user";
-import { StudentData } from "../components/types";
-import AuthContext, { AuthContextType, User } from "../context/AuthContext";
+import { StudentData, User, UserType } from "../components/types";
+import AuthContext, { AuthContextType } from "../context/AuthContext";
 const useOAuth = import.meta.env.VITE_USE_OAUTH === "true";
 
@@ -225,5 +225,5 @@
 							refresh: string;
 							full_name: string;
-							user_type: string;
+							user_type: UserType;
 						}>("http://localhost:8000/auth/google/login/", {
 							access_token: accessToken,
Index: frontend/src/pages/Login.tsx
===================================================================
--- frontend/src/pages/Login.tsx	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/pages/Login.tsx	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -5,4 +5,5 @@
 import googleLogo from "../assets/google-logo.png";
 import PasswordInput from "../components/PasswordInput";
+import { UserType } from "../components/types";
 import { useAuth } from "../hooks/useAuth";
 
@@ -55,5 +56,5 @@
 				refresh: string;
 				full_name: string;
-				user_type: string;
+				user_type: UserType;
 			}>("http://localhost:8000/auth/login/", {
 				email: formData.email,
@@ -63,5 +64,7 @@
 			login(access, refresh, { full_name, user_type });
 			navigate("/");
-			toast.success("Успешно сте најавени!");
+			toast.success(
+				`Успешно сте најавени${user_type ? " како администратор" : ""}!`
+			);
 		} catch (err: unknown) {
 			const axiosError = err as AxiosError<{
Index: frontend/src/pages/Register.tsx
===================================================================
--- frontend/src/pages/Register.tsx	(revision 163061383ecaae65cf5deaf1b58dc6277dcbbe25)
+++ frontend/src/pages/Register.tsx	(revision 48ee75d108679bbc15057385d7cc1cb0c1eecf42)
@@ -5,5 +5,5 @@
 import googleLogo from "../assets/google-logo.png";
 import PasswordInput from "../components/PasswordInput";
-import { User } from "../context/AuthContext";
+import { User } from "../components/types";
 import { useAuth } from "../hooks/useAuth";
 
@@ -74,5 +74,6 @@
 			login(access, refresh, user);
 			toast.success("Успешна регистрација!");
-			navigate("/account");
+			if (user.user_type === "student") navigate("/account");
+			else navigate("/");
 		} catch (err: unknown) {
 			const axiosError = err as AxiosError<{
