When code comes alive
Back in high school we used to write compositions as part of learning English. Coming up with a title was my favorite part because you can never really go wrong with a catchy title that sounds deep and interesting, even if the actual story is simple. This project is a bit like that. The name sounds fancy, but really it's just a timetabling program that helps schools schedule their classes.
The Beginning: When I Thought I Knew Everything
When I started this project, I was so excited. I had grand visions of building the most optimized timetable (it would have no clashes, take into consideration user preferences and available school resources). After getting my first freelancing job, which gave me a bit of morale boost, I felt like I could take on the world. I wanted to do everything right, properly, beautifully, with perfect architecture. So I created classes for everything. There was a class for `Day`, a class for `Time`, a class for `DayTime`, classes for `Static` variables, `Dynamic` variables, `Assignment`, `Domain`, `Value`... I was so proud of myself. Look at all this beautiful object-oriented design! Look how organized everything is! I felt like a real software engineer.
The Reality Check
Then something funny happened, a couple months in and it started passing my tests consistently. Every timetable I threw at it worked, and it did it in record time too. I remember the first time I ran it and got a complete timetable with zero clashes (supposedly). It was marvelous, a little anti-climactic cause there was no matching band for a successful implementation, but i was ecstatic, Then it was pointed out to me, its a python script, as far as consumer products are concerned i had essentially built nothing. The output was just JSON that would be gibberish to a school administrator. I was frustrated because I didn't know where to go from there. Then the other shoe fell, changing one part of the codebase rendered the entire thing useless. Add support for Room preferences means touching the Data Encoder, the Room Class, the Priorities list, the Node consistency method, the backtracking function, the Preference Reduction class..., all that for a single algo
The breakthrough
This is where I'm actually proud of what I built. Not the over-engineered classes (though they taught me a lot), but the features that came after, lesson merges and subgroups. I realized that sometimes you want multiple groups taking the same lesson together. It seems obvious now, but back then it felt like a huge "eureka!" moment. Why schedule the same instructor to teach the same unit to different groups separately when you could just merge them? And subgroups - that was another game changer. Being able to split large groups into smaller units opened up so many possibilities. Suddenly the timetabling wasn't just about fitting pieces together; it was about being smart about how you fit them. These weren't born from some grand architectural plan. They came from actually thinking about how timetables work in the real world. After which i went shopping for JavaScript frameworks, came to react, then Tauri and the pieces just started falling and by the time i knew what i was doing i was in too deep to remember what instigated this entire path.
Where i am now
Now, close to three years later i have built an entire application from the ground up, with cloud collaboration, ai integration, auto clash checker, constraint analysis and a myriad other features that felt important enough to wake up early or sleep late or priorities my time for, if your next question is whether any of this will pan out, i have no fucking idea, but it was fun while it lasted, now i got to go and seek approval from people of the internet.