I was inspired to build this because schedule adjustment period is coming up at my school, but there's no good way to be notified if a class you want opens up. This forces students to sit at their computers refreshing desperately in the hopes of getting into a good class. But, no longer!

What it does

Spot Check scrapes the course directory of Wesleyan and creates google datstore entries for each class with the number of seats open, and if one opens up it emails everyone who has subscribed to the class on the Spot Check website.

How I built it

I used BeautifulSoup and requests to scrape the text from Wesleyan, and then created a datastore entity for each course with the number of seats open. Then, I used cron to schedule that scraping job every few minutes so that if there is a change in the number of seats open everyone who has signed up to be notified for that class will automatically receive an email using yagmail. I used flask to create the python webapp and hosted it on google's app engine.

Challenges I ran into

Oh boy... I had a ton of trouble with the google tools. The google app engine standard environment does't allow for multiprocessing, but the flexible environment is very finnicky and hard to work with, so I had to give up on parallel processing altogether, which was a shame. I also had to switch from selenium, which I usually use to do scraping, to BeautifulSoup and requests, because I couldn't host google chrome on the web engine. This actually sped things up quite a bit though!.

Accomplishments that I'm proud of

Everything! I had never created a webapp or used any of the google tools before this, and this was also my first time using HTML and CSS, as well as doing a whole CS project by myself!

What I learned

HTML, CSS, Flask, google app engine, how to sit in one spot for 12 hours at a time.

What's next for SpotCheck

I'm going to add some more functionality and then release it to my school when our adjustment period starts so everyone can use it!

Share this project: