Skip to content
Emin Akif Erzurumlu
All work

SmartScheduler

Turning a genetically-generated timetable into an interface a faculty member can look at and actually trust.

Role
Frontend Lead
Scope
Team project · 5 people · Scrum
Year
2025 — 2026
The problem

A university timetable must satisfy room capacity, faculty availability, student cohorts and time constraints all at once. Done by hand, clashes are inevitable. Our team built a genetic-algorithm engine to solve it — but the raw output of an optimisation engine is useless to anyone on its own.

Approach
  • I visualised the solution on a weekly grid: which class sits where, which constraint put it there, which alternatives were eliminated.
  • I added what-if scenarios — when a user tries to move a class, they immediately see which constraint breaks.
  • I built the interface with Next.js 14, TypeScript and Tailwind, pinning the contract with the backend through a typed API layer.
My part in this

I am Frontend Lead in a five-person Scrum team. The genetic-algorithm engine and the .NET services are not my work — that side belongs to another member of the team. My responsibility was making the engine’s solution something a human can read and interrogate.

Outcome

Clash-free generation, scenario comparison and export all work. The project ran on Docker with GitHub Actions continuous integration.

What I learned

The hardest part of an optimisation system is not the optimisation — it is persuasion. If a user cannot see why a class was placed where it was, they will override it by hand no matter how good the algorithm is. The interface’s job is not to show the answer but to show the reasoning.

Built with

Next.js 14 · TypeScript · Tailwind CSS · ASP.NET Core 9 · PostgreSQL 16 · Docker · GitHub Actions