Classy

Check Out Classy

Classy is a Discord app for keeping track of college classes and finding classmates. I started developing this a few weeks before my first term of college since I was nervous about meeting people in my classes and wanted a way of easily finding them online. This was my solution, and it also ended up as a huge learning experience in maintaining a larger codebase.

Features

Students start off by uploading their schedules from the school website into the app, which it then parses and organizes into a database. Students can then use the app to find other participating students who are in the same classes, and to find which classes you have in common with a specific student. I later added utilities to enable students to also share which dorm building they are living in, and to export their current schedule as a .ics file compatible with most calendar software.

Design

The bot runs on Cloudflare Workers, which I chose mainly due to the ease of interacting with Discord API using that platform. Data is stored in an SQLite database, a data structure that I had never used before but found quite intuitive to learn. While my version of the app is designed specifically for Worcester Polytechnic Institute and interacts with their APIs, I have tried to make the code flexible enough that it should not be too difficult to modify for other schools. This is my first large-scale TypeScript project, and I do not plan on going back to regular JavaScript unless I absolutely have to. TypeScript catches so many trivial errors and makes maintenance much easier, particularily with a larger codebase. While I have dabbled in Git many times, with this project I also feel that I used version control properly, using it to develop new features in independent branches, and then merging them into the main code once they became stable. This also made allowing outside contributors to add features significantly easier.

Conclusion

With this project I feel as though I found a workflow that allowed me to write code efficiently in a maintainable way. I plan on continuing to structure my projects similarily to how I did with this one since it worked well for me. This is my favorite kind of project since it enables me to expand my programming skills while also creating a useful tool that connects. As for my worries of meeting people in college, that turned out to be no problem.