Exam Schedule
About:
The Exam Scheduler is a web-based application designed to manage university exam schedules efficiently. It allows administrators to create and manage exams while ensuring scheduling conflicts are detected and prevented. Students can log in to view and build their personal exam schedules in a clear and structured way.
This project was developed as a two-person academic project and focuses on correctness, clarity, and practical system design.
System Architecture
The application follows a hybrid full-stack architecture:
- Next.js (App Router) for the frontend and routing
- A custom backend layer for business logic, validation, and database access
- A shared API layer connecting the frontend and backend
This structure improves maintainability and reflects real-world system design practices.
Admin Interface
The admin interface is divided into three main sections.
Dashboard (Exam Overview)
The admin dashboard provides a time-based overview of exams:
- Past exams
- Current and upcoming exams
Exams from one day before the current date
Exams scheduled for today and the next two days
This allows administrators to quickly review recent exams and prepare for upcoming ones.
Upload Page (Bulk Exam Upload)
Admins can upload exam data in bulk using spreadsheet files.
Supported file types
- CSV (.csv)
- Excel (.xls, .xlsx)
Uploaded files typically contain:
- Class code
- Date
- Start time
- End time
- Classroom
Clash handling during upload
- Each exam is validated before being added
- If an uploaded exam clashes with an existing exam, it will not be added
- A warning is shown identifying the class code that caused the conflict
Rejected exams can later be added manually using the Create Exam page.
Student Dashboard
The student dashboard provides multiple synchronized views of the exam schedule.
Views
- Schedule Grid
- Exam List
- Search
A visual grid showing exams by date and time
A list view of all exams in the student’s schedule
Allows students to search for exams using class codes
When an exam is added through search:
- It appears both in the grid and the list
- All views remain synchronized
Clash Handling for Students
- Clashes are detected based on time only
- If an exam overlaps with another exam:
- The student cannot add it
- No manual override is allowed
This prevents students from creating invalid schedules.
Schedule Download
Students can download their exam schedule:
- Generated based on the current student schedule
- Displayed as 5 days per page
- Additional pages are created automatically if needed
User Roles & Access Control
The system supports two roles:
- admin
- student
Access control is enforced using middleware:
- Admin-only routes are protected
- Students can only access their own data