Inspiration
As a frequent study room booker at UofT, there exists a huge problem with the booking system: the libraries each have a completely separate website. Why does a student have to go through 7 Acorn logins on different libraries just to find a place to study? Why does a student have to suffer through multiple Duo pushes just to be disappointed at the lack of available rooms? And who even has time and brain power to spend over 10 minutes looking across the numerous UofT library web interfaces?
What it does
Introducing LibraLink (lie-bra-link), an all-library-encompassing service that allows for a global study room search across the entire campus. It has never been easier to find a place to study. All it takes is one search to go through every available room at the given time and date, and the booking is yours. Maximum efficiency. Minimal overhead.
How we built it
We used Next.js and React to build the frontend and backend, and kept all our study room data in AWS's DynamoDB. Our database partition key is the study room ID, e.g. "RB101" for Robarts room 101. We also used NextAuth in place of the Acorn login, as signing in with a third party provider would give the most authentic UofT experience.
Challenges we ran into
Our backend calls to DynamoDB and frontend pages work perfectly. Unfortunately, the bridge between the backend and frontend is still broken. We ran into egregious issues from Next.js API calling, where the the API endpoints are reached by the frontend code, but results from the endpoints would be completely different from unit tests.
Accomplishments that we're proud of
We're proud of successfully integrating with DynamoDB -- We implemented a whole functional suite of database functions that create, modify, query, and delete entries. The aws-sdk was amazingly simple to work with, and we took minimal time to set up database calls.
What we learned
From the challenges we experienced with API calls, we learned that knowing how a framework uses API endpoints is paramount to the success of the project. We wanted to challenge ourselves with a modern framework like Next.js, but the tradeoff was limited documentation on specific but bottlenecking issues. We also learned that AWS is surprisingly simple to work with despite the daunting reputation!
What's next for Libra-Link
This was originally a very ambitious project: we wanted to add penalizations for booking a room and not going to it, as well as favourited rooms for each user:
- Penalizations: There is no incentive for a student to not take up the maximum amount of contiguous time slots, leading to wasted bookings that can only be found if you happen to walk by. We want to introduce a short term ban on bookings if a student continuously fails to show up to their booking times.
- Favourite study rooms: Don't you have that one room you'd always go for? Or that one library that you always frequent? We want to solve that issue by giving students a favourite list that they can go back to.
Built With
- next.js
- react

Log in or sign up for Devpost to join the conversation.