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
  • Exams from one day before the current date

  • Current and upcoming exams
  • 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
  • A visual grid showing exams by date and time

  • Exam List
  • A list view of all exams in the student’s schedule

  • Search
  • 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