Inspiration
The first unspoken rule at UBC: Never go to ARC from 5-7pm.
As avid gymgoers, we've all been there—motivated to work out, only to face a never-ending line. Long waits not only kill motivation but also waste valuable time for busy students. Imagine a website that displays real-time gym wait times at a glance—schedules would be optimized, and you'd be 10x more jacked.
But why stop there?
We investigated how UBC tracks gym occupancy and were shocked to find no formal system for accurately displaying real-time capacity. That’s right—you’re waiting in line because of an estimate. Our field studies and interviews revealed that most gyms, not just UBC’s, lack transparent capacity tracking.
So, we decided to expand beyond UBC—to all fitness facilities in Vancouver. We envisioned a platform where users can instantly check wait times for gyms, classes, and courts, all in one place. Not only does this help optimize workouts, but it also encourages users to explore new facilities and fitness opportunities.
For businesses, we provide a software solution that accurately tracks real-time capacity, class availability, and peak hours. By integrating all facilities into one hub, we enhance exposure, improve efficiency, and redefine the gym-going experience.
What it does
It offers users a quick overview of the number of people at gyms nearby and a platform to discover new locations and trending facilities.
For businesses, we offer a one-stop platform for tracking metrics and promoting their site.
Call it a win-win.
How we built it
We made a React + Next.js app for the user interface (web app). Used shadcn and tailwind.css for styling. For the company portal, we also used the same stack. We designed the web pages in Figma first. We then deployed the user interface and the company portal individually, both using Vercel.
The backend is Java Maven Springboot. The backend serves as the API for companies to send information and our frontend to receive by putting everything in a document database via Mongodb. We dockerized the backend to be able to deploy our backend on Render.
Challenges we ran into
One of the main challenges was learning an unfamiliar tech stack and not properly testing methods. For the backend specifically, we worked on a SpringBoot application with methods to increment and decrement. They were being overloaded by name and id, so they would not work properly. Since some of the methods did not work properly, our frontend for managers could not have some of the intended functionalities.
Accomplishments that we're proud of
We successfully developed a visually appealing frontend that seamlessly integrates with a deployed remote server on Render. This was our first experience with the deployment process, and we're excited that the server now works flawlessly with the frontend.
Additionally, we've implemented a feature that allows users to find gyms near them by filtering the database and providing accurate wait times, enhancing the overall user experience. We're thrilled that this project has the potential to support gyms, such as the UBC gyms, in improving their services.
What we learned
Creating dynamic web pages for mobile and desktop Implementing CI/CD procedures using Render, Docker, and Vercel Creating RESTful APIs using Springboot Organized schemas in MongoDB Create a b2b solution that prioritizes both businesses and customers to create value in our product
What's next for AtCapacity
First we will implement the system at UBC, then once UBC students can see the capacity of the fitness facilities, we can move it to more active facilities so everyone around can see the wait times and determine new facilities to use. Others include hosptials, nightclubs, libraries, study spaces and more.
Log in or sign up for Devpost to join the conversation.