← projectsAgendaU
// project — AgendaU

AgendaU

Because no student should build their semester schedule by hand.

AgendaU — captura
01// historia

A Thousand Schedules in Second Semester

My first course registration was in my second semester, back when there were still a ton of options. I remember sitting down and realizing that, to be sure I wasn't missing the right combination, I'd have to build hundreds of schedules by hand. And then: how do you mix professors? How do you keep everything in one place?

02// historia

A Python Script in One Afternoon

The first version came from a nudge by my girlfriend at the time. I wanted to make someone else's life easier, so with the Python I knew I wrote a script that read the options from one spreadsheet and generated every possible combination in another. It even colored the cells that shared a course. All in one afternoon, and honestly it worked great.

03// decision

My Dad Said Java

A semester later I wanted to turn it into a website. I didn't have much experience, so I asked my dad how you build one. He told me I needed a more robust language than Python and recommended Java. I believed him and didn't ask many questions.

Six months after the first version, the whole prototype was rewritten in Java. I tried mixing in other things, but it ended up 100% Java. I never got it into production.

04// resultado

20 People and a Server I Couldn't Afford

Six months later I tried again, this time knowing what an API and a web app were. I built a simple React interface with a Spring Boot backend, since coming from Java it needed the least migration. The API ran on Heroku and the frontend on Vercel.

That was the semester I got the furthest, and I think two things lined up: I finally had a server handling real users, and I was still at a point in the degree with lots of courses to choose from. The further you go, the fewer options you have and the less the tool is worth. I helped about 20 people. Not a huge number, but seeing them use it made me really happy. The downside: I spent 10 dollars or more on a single month of server and database, with money I didn't have.

05// decision

Moving to FastAPI

Another six months later, with the AI agent boom, migrating was much easier. I moved the backend to FastAPI and the frontend to Next.js. Part of me feels the effort I put into the previous version got lost, but this one is faster, more efficient, deploys entirely on Vercel, and finds better schedule options.

06// arquitectura

O(1) Conflict Detection with NumPy

Rather than running deeply nested loops over time ranges, I modeled the academic week as a binary matrix of 12 hours × 6 days. Schedule conflicts are computed via bitwise AND in NumPy, dropping conflict detection down to O(1) per course pair and filtering thousands of invalid permutations in milliseconds.

O(1) matrix AND
detection
12 hours × 6 days
grid
FastAPI + Next.js
stack
Valid course schedule options

↳ Visual grid of conflict-free schedules generated by the algorithm.

07// decision

Interactive Grid & Excel Export

The frontend lets students browse generated options, pin desired professors, and export their chosen schedule to Excel with a single click.

Course and section management

↳ Course catalog and time constraint selection interface.

08// aprendizaje

The Version I No Longer Have

To be honest, the version I remember most is the first one, and I don't have it anymore: it got lost somewhere between computer changes. I still count it among my best projects. It was a one-afternoon script, and I was only in my second semester.

Built with:Next.js, FastAPI, Python, NumPy, MySQL, and Docker Compose.
next project
CoworkSpot→

Because nobody should pick a coworking space blind or work alongside peers unnoticed.