This past quarter, we were all thrown into the hectic world of college life. Without the luxury of guided sports programs that were so generously provided to us in high school, we struggled to maintain a consistent exercise routine, so, we thought, what if we made an app that helps us find workout buddies to motivate us to hit the gym?

What it does

Squat Up connects people in search of a workout buddy. Each user can make an account with which they can log in to edit their profile information and preferences, log out, or see who they’ve been matched with. Matches are based on a compatibility score calculated from a brief questionnaire completed by each user about specific preferences and fitness goals, including workout type and the level of intensity.

How we built it

As beginners who have really only been exposed to programming through our Introduction to C++ class, we first decided to use C++ for the backend and HTML/JS/CSS for the frontend of web development. Originally, the backend consisted of structures and a linked list to account for user input and match up users through comparison, whereas the frontend presented users the login, create account, match, and update account information pages. However, after completing the frontend and backend, we struggled to link them with a web framework and to a server. After speaking to the mentors, we decided to use Node.js and the glitch platform. Not having experience with Javascript, we struggled to convert the logic of our C++ program to Javascript, but were able to establish a connection to the server using GET and POST requests.

Challenges we ran into

One of the challenges we initially faced was deciding what coding language and platform to use. We are most familiar with C++ and wanted to implement this language as we knew it the best. However, we realized that C++ as backend for a website or web app is hard to connect with a frontend, so we had our C++ code for our app running in the terminal of the computer that the code was written on. Additionally, we had HTML and CSS files for the frontend of our program which ran and produced what we wanted our website to look like but had no way to store the user data or run the algorithms for figuring out which user was the best workout buddy for another. The challenge here was trying to find a way to connect the code we had written so that it worked together to run the website. We attempted to use multiple platforms such as firebase, WebSocket, and ultralight. However, these did not prove to work, and we still couldn’t find a way to link our frontend and backend. Finally, we decided to use glitch to connect all our HTML to a server. We then decided to convert our C++ code to Javascript in order to make it accessible by the HTML. This was challenging as we did not have experience with Javascript but had to essentially translate the algorithms we had written. After this process, we struggled to find a way to store and save data that the user inputted and therefore had trouble running our now-Javascript algorithms on input data. We learned a lot from the challenges we faced, especially persistence and patience.

Accomplishments that we're proud of

Before this hackathon, none of us had any experience with web development, so we’re really proud of how far we were able to come in a short amount of time. We only had experience with C++, but we were able to write a functional Javascript program and an HTML/CSS/Javascript webpage. We also gained a much deeper understanding of how servers work and how data entered in a web browser can be stored after the browser is closed. The next time we try to build a website, we’ll have a much better grasp of what steps we should take to stay on track.

What we learned

We began this project knowing only C++, but throughout the process, we had to learn on the fly and adjust to build a viable working product. We had to scrape the web to find resources that we never would have encountered in a classroom setting. We learned to be self-sufficient and persistent, regardless of the obstacles we faced. Our biggest takeaway though? Never try to build a website using C++.

What's next for Squat Up

We hope to continue working on Squat Up in the next few weeks. We’d love to figure out how to use glitch to connect our frontend and backend so that our Javascript program can access data from users across multiple computers. It would also be great to improve our UI and add some extra functionality (for example, showing users multiple matches and allowing them to choose between them, or implementing a messaging feature so that users can communicate/set up times to meet within the app).

Share this project: