← Projects

University department management

React and FastAPI software for course and exam scheduling, conflict checks, approvals, randomized seating and PDF exports.

Role
Development team member · two-person project
Organization
Kocaeli University
Period
2025
Stack
Python · FastAPI · React · SQLAlchemy · SQLite · Tailwind CSS · JWT
A classroom's weekly timetable with course occupancy and capacity in the department management interface.

Problem

One overlapping room booking or instructor assignment can disrupt an entire timetable. Our two-person team built a shared application for course, exam and classroom planning, with distinct workflows for department heads, secretaries and instructors.

Data and application structure

React, Tailwind CSS and Axios connect the frontend to FastAPI services. Context API shares session state; JWT login and role-aware routes control the interface. Pydantic request/response schemas are separate from SQLAlchemy database models.

StudentCourse represents enrollment, ExamClassroom supports exams across multiple rooms and ExamSeating stores each student’s exam, classroom and seat. Defining a course and assigning it to an instructor and timetable are separate operations.

Room codes and capacities feed the scheduling workflow; the management screen provides record editing and deletion.
Classroom inventory Room codes and capacities feed the scheduling workflow; the management screen provides record editing and deletion.

Scheduling rules

Course assignments check overlapping time intervals for rooms and instructors. Exam creation checks dates, times, room use and available capacity. Single-seat exam layouts use capacity // 2 as the usable room capacity.

Instructors can request changes to their exams. A request returns the exam to an awaiting-approval state for the department head to review. Timetables and calendars can be exported as PDFs.

An instructor submits a note, returning the exam to a pending state for another review.
A request returns to review An instructor submits a note, returning the exam to a pending state for another review.

Seating allocation

The algorithm retrieves enrolled students, checks total capacity and shuffles the list with random.shuffle. It partitions students across rooms and saves numbered seats. This is randomized capacity-based allocation, rather than a solver that optimizes the entire exam timetable.

Student, course, exam and classroom relationships support multi-room exams and saved seat assignments.
Data behind the timetable Student, course, exam and classroom relationships support multi-room exams and saved seat assignments.

Limitations

Some operations have backend role checks while others are restricted only in the interface. The next step is endpoint-wide authorization and role-based API tests. Replacing an existing seating plan should also be made atomic within one transaction.

Result

The project combines room management, scheduling conflict checks, exam approval, seating allocation and PDF reporting. Users prepare the timetable and the software validates assignments against business rules.