Inspiration
As students we're always looking for reserving study rooms all over UBC campus. We have noticed that each building has a separate portal for booking information and availability which can be overwhelming when you're trying to book a space last minute. With this website you can do an initial search to find room availability from all the buildings in one place.
What it does
Similar to how google flights gathers all the information from different airlines based on anticipated travel dates, this website gathers all the available study rooms from different libraries based on selected dates and times. A user will simply input their desired date and start time, and a list of available study rooms at that time will be displayed, along with the associated links for the user to complete their booking.
How we built it
To build this project, we used Python and Flask for backend. For the frontend, we used React and Vite. We utilized Selenium for web scraping the UBC Library pages and performing the necessary inputs and button clicks to search for available rooms.
Challenges we ran into
Because we cannot modify or directly access UBC databases, we had to design a system that aggregates information from various different booking pages. It required us to scrape UBC websites and forward that data to our website, and learn Selenium which was an unfamiliar tool to us. We also faced inconsistent source behavior from the source websites that altered our inputs for time. We had to address this by changing our platform to compute end time based on the provided start time rather than getting both values directly from the user.
Accomplishments that we're proud of
We are proud that we built a working frontend interface that displays available study rooms in one place. Additionally, we designed a unified data structure that can represent room availability from different booking platforms, and created a simple search experience where students can quickly find rooms and navigate to the official booking page. We are glad our platform is functional, easy to use, and has the potential to help out fellow UBC students.
What we learned
We learned the importance of designing around system limitations when working with external platforms. A major technical skill we developed was in how to structure scraped or aggregated data into a consistent schema. We also learned how to prioritize and efficiently divide our time when faced with roadblocks on the way to our end product.
What's next for StudyRoomHunt
Currently, StudyRoomHunt redirects students to the booking page of the UBC Library but we would love for students to be able to complete their bookings on our platform. We would also like to add more libraries and potentially expand to other bookable buildings, as well as allow users to pick their own end times for their bookings.
Log in or sign up for Devpost to join the conversation.