Smart Scheduler

The problem
Choosing university classes means juggling sections, professors, modalities and time slots, usually by trial and error. I built Smart Scheduler to turn those preferences into a timetable without overlaps.
Key decisions
- Used a greedy optimizer: it goes through each course's sections in professor preference order and keeps the first one that doesn't overlap. It's simple and instant at the size of a student's course load, though it doesn't guarantee the best possible combination.
- Made the preferred time range a soft constraint, so a course outside it is still scheduled instead of being dropped.
- Added drag-and-drop with dnd-kit for ranking professors, since an ordered list is the most direct way to express preference.
- Kept all data in Local Storage, so the app needs no backend or account.
The result
A working app deployed on Netlify: enter your sections, rank your professors, set a time range and get a visual weekly timetable in one click.