Index: backend/auth_form/migrations/0014_student_level_credits.py
===================================================================
--- backend/auth_form/migrations/0014_student_level_credits.py	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
+++ backend/auth_form/migrations/0014_student_level_credits.py	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
@@ -0,0 +1,19 @@
+# Generated by Django 5.1.7 on 2025-06-04 15:56
+
+import django.contrib.postgres.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('auth_form', '0013_student_total_credits'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='student',
+            name='level_credits',
+            field=django.contrib.postgres.fields.ArrayField(base_field=models.PositiveIntegerField(null=True), blank=True, null=True, size=None),
+        ),
+    ]
Index: backend/auth_form/models.py
===================================================================
--- backend/auth_form/models.py	(revision 6f24e2e8ea2104cd785ee0b11f8a64f93b7cb91c)
+++ backend/auth_form/models.py	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
@@ -66,5 +66,5 @@
     has_extracurricular = models.BooleanField(default=False, null=True)
     total_credits = models.PositiveIntegerField(null=True)
-    # level_credits = ArrayField(models.PositiveIntegerField(null=True), null=True, blank=True)
+    level_credits = ArrayField(models.PositiveIntegerField(null=True), null=True, blank=True)
     
     # {1: [s1, s2, s3...], 2: [....], ...}
Index: frontend/src/components/StudentForm/StudentForm.tsx
===================================================================
--- frontend/src/components/StudentForm/StudentForm.tsx	(revision 6f24e2e8ea2104cd785ee0b11f8a64f93b7cb91c)
+++ frontend/src/components/StudentForm/StudentForm.tsx	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
@@ -91,4 +91,5 @@
 	const [invalidSubjects, setInvalidSubjects] = useState<Subject[]>([]);
 	const [totalCredits, setTotalCredits] = useState(-1);
+	const [creditsByLevel, setCreditsByLevel] = useState([0, 0, 0]);
 
 	// Update form when formData changes (e.g., after fetching user data)
@@ -201,4 +202,5 @@
 			setInvalidSubjects,
 			setTotalCredits,
+			setCreditsByLevel,
 		});
 		if (Object.keys(errors).length > 0) {
@@ -241,6 +243,8 @@
 			has_extracurricular: hasExtracurricular,
 			total_credits: totalCredits,
+			level_credits: creditsByLevel,
 		};
 		try {
+			console.log(payload);
 			// For updating existing form data use PATCH instead of PUT for partial updates
 			const method = formData?.current_year || isSubmitted ? "PATCH" : "POST";
Index: frontend/src/components/StudentForm/utils.ts
===================================================================
--- frontend/src/components/StudentForm/utils.ts	(revision 6f24e2e8ea2104cd785ee0b11f8a64f93b7cb91c)
+++ frontend/src/components/StudentForm/utils.ts	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
@@ -1,3 +1,4 @@
 import { Dispatch, SetStateAction } from "react";
+import { L1_LIMIT, L2_LIMIT } from "../../constants/subjects";
 import { StudyTrack, Subject, SubjectID } from "../types";
 
@@ -71,4 +72,5 @@
 	setInvalidSubjects,
 	setTotalCredits,
+	setCreditsByLevel,
 }: {
 	index: string;
@@ -80,4 +82,5 @@
 	setInvalidSubjects: Dispatch<SetStateAction<Subject[]>>;
 	setTotalCredits: Dispatch<SetStateAction<number>>;
+	setCreditsByLevel: Dispatch<SetStateAction<number[]>>;
 }) => {
 	const errors: { [key: string]: string } = {};
@@ -100,5 +103,7 @@
 		passedSubjects,
 		hasExtracurricular,
-		setTotalCredits
+		setTotalCredits,
+		studyTrack,
+		setCreditsByLevel
 	);
 	if (invalid.length != 0) {
@@ -106,5 +111,7 @@
 		errors.invalidSubjects =
 			"За еден или повеќе предмети не се исполнети условите";
-	} else setInvalidSubjects([]);
+	} else {
+		setInvalidSubjects([]);
+	}
 
 	return errors;
@@ -136,5 +143,7 @@
 	passedSubjects: Subject[],
 	hasExtracurricular: boolean,
-	setTotalCredits: Dispatch<SetStateAction<number>>
+	setTotalCredits: Dispatch<SetStateAction<number>>,
+	studyTrack: StudyTrack | "",
+	setCreditsByLevel: Dispatch<SetStateAction<number[]>>
 ) => {
 	passedSubjects.sort(
@@ -157,5 +166,5 @@
 	}
 
-	let totalCredits = passedSubjectIds.size * 6 + (hasExtracurricular ? 1 : 0);
+	let totalCredits = (passedSubjectIds.size + Number(hasExtracurricular)) * 6;
 	if (
 		passedSubjects.some((s) => s.name === "Професионални вештини") &&
@@ -176,6 +185,36 @@
 	}
 
-	if (invalidSubjects.length == 0) setTotalCredits(totalCredits);
+	if (invalidSubjects.length == 0) {
+		setTotalCredits(totalCredits);
+		const newPassedSubjects = passedSubjects.filter((subject) =>
+			passedSubjectIds.has(subject.id)
+		);
+		setCreditsByLevel(getCreditsByLevel(newPassedSubjects, studyTrack));
+	}
 
 	return invalidSubjects;
 };
+
+const getCreditsByLevel = (
+	passedSubjects: Subject[],
+	studyTrack: StudyTrack | ""
+) => {
+	return passedSubjects
+		.reduce(
+			(acc, subject) => {
+				const level = subject.subject_info.level;
+				if (
+					studyTrack &&
+					!subject.subject_info.mandatory_for.includes(studyTrack) &&
+					((level == 1 && acc[0] < L1_LIMIT) ||
+						(level == 2 && acc[1] < L2_LIMIT) ||
+						level == 3)
+				) {
+					acc[level - 1]++;
+				}
+				return acc;
+			},
+			[0, 0, 0]
+		)
+		.map((i) => i * 6);
+};
Index: frontend/src/components/SubjectCatalog/SubjectCatalog.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SubjectCatalog.tsx	(revision 6f24e2e8ea2104cd785ee0b11f8a64f93b7cb91c)
+++ frontend/src/components/SubjectCatalog/SubjectCatalog.tsx	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
@@ -8,5 +8,5 @@
 import { filterSubjects, getRandomStaff, resetFilters } from "./utils";
 const SubjectCatalog = () => {
-	const [visibleCourses, setVisibleCourses] = useState<number>(10);
+	const [visibleCourses, setVisibleCourses] = useState<number>(12);
 	const [searchTerm, setSearchTerm] = useState<string>("");
 	const [professorSearchTerm, setProfessorSearchTerm] = useState<string>("");
@@ -55,15 +55,8 @@
 			)
 		);
-		// console.log(
-		// 	Array.from(
-		// 		new Set(
-		// 			filteredSubjects.flatMap((sub) => sub.subject_info.technologies)
-		// 		)
-		// 	)
-		// );
 	}, [subjectData]);
 
 	const loadMore = () => {
-		setVisibleCourses((prev) => prev + 10);
+		setVisibleCourses((prev) => prev + 12);
 	};
 
@@ -120,7 +113,6 @@
 					/>
 				</div>
-				{/* Main content */}
+
 				<div className="flex-1">
-					{/* Search bar */}
 					<div className="mb-6 relative">
 						<input
@@ -133,6 +125,4 @@
 						/>
 					</div>
-
-					{/* Course grid */}
 
 					{!isLoaded ? (
@@ -150,5 +140,4 @@
 					)}
 
-					{/* Load more button */}
 					{isLoaded && filteredSubjects.length > visibleCourses && (
 						<div className="mt-5 text-center">
@@ -162,5 +151,4 @@
 					)}
 
-					{/* No results message */}
 					{isLoaded && filteredSubjects.length === 0 && (
 						<div className="text-center py-12">
Index: frontend/src/components/SubjectCatalog/SubjectModal.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SubjectModal.tsx	(revision 6f24e2e8ea2104cd785ee0b11f8a64f93b7cb91c)
+++ frontend/src/components/SubjectCatalog/SubjectModal.tsx	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
@@ -194,5 +194,5 @@
 							<button
 								onClick={closeModal}
-								className="px-4 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50"
+								className="w-full md:w-auto px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white font-normal rounded-md shadow focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors"
 							>
 								Затвори
@@ -202,5 +202,5 @@
 									className="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700"
 								>
-									Погледни детали
+									Погледни
 								</button> */}
 						</div>
Index: frontend/src/constants/subjects.ts
===================================================================
--- frontend/src/constants/subjects.ts	(revision 6f24e2e8ea2104cd785ee0b11f8a64f93b7cb91c)
+++ frontend/src/constants/subjects.ts	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
@@ -7,4 +7,7 @@
 	"KN23",
 ] as const;
+
+export const L1_LIMIT = 1;
+export const L2_LIMIT = 6;
 
 export const STUDY_EFFORT = [1, 2, 3, 4, 5] as const;
Index: frontend/src/pages/Register.tsx
===================================================================
--- frontend/src/pages/Register.tsx	(revision 6f24e2e8ea2104cd785ee0b11f8a64f93b7cb91c)
+++ frontend/src/pages/Register.tsx	(revision 07c30414880fd018d6b5437caf49b6cc5989100a)
@@ -56,5 +56,5 @@
 			const { access, refresh } = response.data;
 			login(access, refresh);
-			navigate("/");
+			navigate("/account");
 		} catch (err: unknown) {
 			const axiosError = err as AxiosError<{
