Inspiration
Our inspiration was having our own blend of both online and in-person classes this semester. It can often be tricky to find a quiet place on campus to attend our online classes or just have somewhere to study, so our project solves this issue by making it easy to see available spots and book them.
What it does
This tool has a fully fledged account system, in which you can create or delete accounts, and the tool will remember your login info. Once logged in, you can choose a building on campus and it will tell you if there are any vacant rooms in that building. If there are and you wish to book one, you just tell it the room name and it will book your spot. This makes this specific room appear as 'Occupied' to others and will be unavailable to book until you check out of it.
How we built it
We built this using Python with two scripts, one that generates the databases (which is used only once to initialize the databases, then never again, as the main script will edit these databases using JSON on it's own) and a main script that runs all of the main code.
Challenges we ran into
This website is where we got all of our data for the buildings and rooms. Unfortunately, as you may notice, upon reloading the website, the first table, the one that we need the info from, takes a second to load up. When we tried to scrape this info using Beautiful Soup, it did not work, as when we searched for the table, it gave us the one closer to the bottom of the page. When we sent the scrape request and it loaded the website, it tries to scrape it immediately and thus, when it does this, the table that we want is not there. A possible workaround for this issue was to use Selenium to first load a webpage and then scrape from that new webpage, but we could not get this to work in our time constraints. Thus, the solution that we went with was some good old manual data entry, which is completely accurate, but less sophisticated.
Accomplishments that we're proud of
We are firstly very proud of being able to put this whole thing together within 24 hours, an experience we have never had before, and we're glad that we did it. A specific functionality we are also very proud of is the login and account management system. This is very cool to us and it makes the management system more complex and also, perhaps more importantly, more practically useful. If one user can sign another user out of a room, this creates a big issue, as it basically negates the point of our tool. Someone could simply choose a room they want, then if it's occupied, just sign that person out and book themselves. With an account management system, this problem is completely avoided and users can only manage their own bookings, which is a huge plus for security.
What we learned
One thing we learned was how to use JSON, which is a super helpful thing to know for managing live databases. Another thing we learnt was how to make use of Git branches and just working in Git as a group in general. This is obviously a crucial skill for having a job in software development, so it was great to be introduced to it early in our careers. Finally, we learnt just how much we can accomplish in 24 hours. We believe we made an awesome project with many layers of complexity and we're hugely proud of what we did.
What's next for UofA Study Space Booking Tool
Something that we wished we could have done was implementing our tool on a website or in an app. When we looked into this, we found out that we would need to at least learn HTML, CSS, Javascript, DOM, jQuery, and Django. This was simply impractical given our time constraints and abilities, so we had to go with it just being a Python script that you run by itself. Hopefully, in the future, we can learn how to do all this stuff, as being able to put together our own website or app would first of all be super cool, but second of all, make it much more usable to the public.
Log in or sign up for Devpost to join the conversation.