The inspiration for this app came from my own experiences as a high school runner during and after the COVID shutdown. Throughout my whole career, I've been accustomed to running with others and always having a group around me to keep me accountable and focused during my training. COVID changed that. No longer being able to run with others, I had to spend months running alone and what had previously been one of my favorite ways to de-stress and take a break from the world had slowly become something I dreaded every morning. So throughout the lockdown, I grew appreciative of my teammates and how great it was to have that support system around me, especially for exercise, which can be incredibly stressful at times. I built this app as a way to forge those connections and build support systems for fitness that follow the same themes that made my high school team so successful: focusing on a common goal to work towards together.

What it does

BurnTeam (I know, the name could be better) is an app that matches you with a team of athletes to participate in a weekly fitness competition against other teams. Each team has their own internal chat room for members to communicate and encourage each other. Fitness data used in the competition currently include step count and move distance, both of which are automatically loaded from Apple HealthKit. Teams are put in direct competition with a small group of other similarly matched teams to see who can get the most steps/distance throughout a week. In order to incentivize positivity within teams, a rating system is established where teammates can rate how supportive each teammate was during the week. Good ratings from teammates, then weighted by actual success in the competition, are then put towards a "reputation score" that represents how good of a teammate you are. Since this score is public, getting it as high (good) as possible is in each athlete's best interest.

How we built it

The app was built using React Native using the Expo Bare Workflow. During development, the app was primarily tested in iOS device simulators using XCode. The backend server was built using Python through Sanic, a Flask-like api server framework for Python. Firebase Auth was used for user authentication and Firebase Realtime Database was used for the main application data (fitness metrics, standings, chat, etc.)

Challenges we ran into

This was my first real experience developing a mobile app, so there was no shortage of errors and mishaps. I began developing the app through React Native because I already had extensive experience with React, so I followed the Native docs and started building an Expo Go app through the managed workflow. Unfortunately, a day in, I realized I needed to access the native HealthKit SDK, which I eventually discovered I could not do within the Expo Go app, meaning I had to eject down to native and build in XCode. It was quite the painful process and I still don't really know what I'm doing, but after a few hours, I was able to get it running and successfully accessed the native HealthKit module I needed. The biggest challenge during this whole project really was just getting situated with the React Native development workflow, which, as it turns out, is a lot more different from web React than I had expected.

Accomplishments that we're proud of

Getting React Native and XCode to work at all was my biggest accomplishment during this project. Once I got things hooked up, it was just a matter of writing some React code to build a UI and a bit of python to handle authentication and database management. Of course somewhere along the way though, hot reload stopped working and I was left manually refreshing the app, which meant going through login every single time I had to update something, but in the end, I'm just happy to have anything presentable at all.

What we learned

Throughout this project, I learned a lot about mobile development and working with native environments other than a web browser. Coming from a mostly web dev background, getting a grasp on the native workflow was a major learning curve, but finally getting things working and running my app in the simulator was a pretty rewarding experience.

What's next for BurnTeam Mobile App

There's many features and ideas I had and wrote about that I didn't have time to implement, but before anything else I'm looking forward to just learning more about mobile development and cleaning up some of the mistakes I definitely made. In the future, actually implementing the matchmaking and reputation system, as well as a friend/choose your own team system are definitely things I would work on before I considering an actual release in an App Store. It's a lot of work to be done, and it might not be done for a while, but I'm excited about where I am right now.

Built With

Share this project: