Inspiration
My father and many of my older friends have gone to William & Mary, and one complaint they all have in common is how annoying early morning classes are. (I don't think this is a W&M specific problem, rather a problem at all schools that I have just heard about at W&M) Because of this, when I learned about the W&M Open course data API, I knew I had to create a tools to solve this.
What it does
LetMeSleep helps you generate a valid schedule of open classes that let you sleep in.
How we built it
LetMeSleep is powered by a PHP backend that generates a PDF using FPDF based on data retrieved from William & Mary IT's Open Data API using cURL. The Frontend Is Built In Bootstrap 3 (Javascript/CSS/HTML). LetMeSleep is also designed to match the William & Mary Branding Guidelines.
Challenges we ran into
Interacting with the API was a constant struggle, whether I was getting bad gateway errors, or the request was so large that the program execution would time out before we got the response back. Ultimately however, I was able to fix all these problems in the end.
Accomplishments that we're proud of
I'm really proud of two things in this project: 1) The UI: I wanted the UI/UX to be very professional and simple in this project, and I feel like I did a really good job at that, especially in designing LetMeSleep to match the W&M branding guidelines. 2) The Algorithms: The algorithms were really the important thing here and there are two that I am really proud of in particular. The first one sorts through all possible courses to find ones that are still open and meet the criteria set by the user, and the second one figures out which combination of those courses, found by the first algorithm, can be used to make a full, valid schedule.
What we learned
Surprisingly, this was really my first time interacting with an API directly, so I learned a ton about using token authentication and making requests. Beyond that, I learned a good bit about simplifying my UX designs, and parsing data properly. This is also the first time I have dealt with long execution times, and even my first time having a program time out from taking too long to execute, and although a lot of that was caused by the time spent waiting for a response from the API, this forced me to actually learn how to optimize LetMeSleep to run as quickly as possible, as well as learning how execution time outs work to send the program keep alive commands to stop it from timing out on particularly large responses.
What's next for Let Me Sleep
Apparently, a fair few other colleges also have course data APIs, so I'm probably going to write versions of LetMeSleep for as many other colleges as I have time for, because its a pretty neat little tool.
For more information, Visit my github repo here Or view the example outputs here
Log in or sign up for Devpost to join the conversation.