All projects

Platform2026

UKPGM

A web application that lets the University of Kara build the class and exam timetables of all its faculties in one place, flagging room, teacher and student-group clashes automatically before a schedule is published.

Lead developer - full-stack design and development, in a team of three

UKPGM sign-in screen: University of Kara branding with a photo of the Campus Sud entrance, an email and password form, a reCAPTCHA check and a 'Create an account' link for new users.
UKPGM sign-in screen: University of Kara branding with a photo of the Campus Sud entrance, an email and password form, a reCAPTCHA check and a 'Create an account' link for new users.

UKPGM is the scheduling tool used across the University of Kara to plan teaching for its two semesters, Harmattan and Mousson. Each department head submits their teaching plan for every course, schedulers place each session into a room and a time slot, and the application checks that placement against the existing bookings of the room, the teacher and the students. Faculty structure, rooms across both campuses, course credits and academic years are managed in the same place, and a validated timetable is exported as a formatted PDF. It has been in production for the whole university since the 2023-2024 year and currently runs the 2025-2026 year.

The problem

Timetables were put together by hand, partly in shared spreadsheets and partly on paper at the vice-dean's office. Nothing checked that a room was not booked twice, that a teacher was not expected in two places at once, or that two courses for the same students did not overlap, so clashes only surfaced once classes had started. Several versions of the same schedule circulated at the same time, with no certainty about which one was current.

The approach

I designed and built the application as a server-rendered Laravel app around a single model of the university: faculties, departments, teaching units and their credits, rooms per campus, and one active academic year at a time. The core is a conflict engine I designed that runs on every scheduled session and checks five things at once - the same course and its tutorial groups, the department's semester, courses shared between departments, and the teacher's own calendar - on top of a daily teaching-hours limit per teacher. Role-based access gives department heads, faculty heads, schedulers and the academic office each their own view, and DomPDF turns a validated timetable into the printed document the university already used.

The result

  • Room, teacher and student-group clashes are caught when the session is entered, not after classes begin.
  • The whole university plans on one system, with a single current version of each semester's timetable instead of competing spreadsheets and paper copies.
  • A validated timetable is generated as a formatted, print-ready PDF straight from the data, rather than reassembled by hand.
  • In production for every faculty since the 2023-2024 year; currently running 2025-2026.

Concrete usage figures for this project are not published.

Key features

  • Automatic clash detection: every session is checked against the room, the teacher and the students' other courses before it can be saved.
  • Daily teaching-hours limit per teacher, enforced as sessions are placed.
  • Two-semester planning (Harmattan and Mousson) within one active academic year, with a clean switch from one year to the next.
  • Department teaching plans: each department head submits their courses, hours and groups; schedulers turn them into a dated timetable.
  • Room availability search: pick a date range and a time slot, see which rooms are free across both campuses.
  • Room booking with an approval step, kept in sync with the teaching timetable.
  • Teacher workload tracking: planned, used and confirmed hours per teacher.
  • Validated timetables exported as a formatted, print-ready PDF.
  • Role-based access for department heads, faculty heads, schedulers and the academic office, plus an account-request flow for new users.

Stack

  • Laravel 9
  • PHP 8
  • MySQL
  • Blade
  • JavaScript
  • Bootstrap 5
  • spatie/laravel-permission
  • Laravel Sanctum
  • DomPDF
  • TCPDF
  • Google reCAPTCHA
  • Tâches planifiées (cron)

Lead developer - full-stack design and development, in a team of three — University of Kara (Togo) - academic scheduling (2026)

Next projectCape Coast Logbook