App by Joel Groomer and Dillon Petretti.
Anywhere Fitness lets fitness enthusiasts and novices alike find and register for fitness classes of the desired type and skill level in their area. It also allows instructors to publish their classes on the app so that new students and existing clients can find them and attend.
GitHub, iOS app: github.com/BwPT-AnywhereFitness/IOS
GitHub, Firebase backend: github.com/joelgroomer/AnywhereFitness.api
Build Week product demo
The iOS app was built in Swift 5 using UIKit and Core Data. We used Cocoapods to integrate with the Firebase backend.
Challenges faced, lessons learned
The main challenge faced during this project was the complete lack of a functioning back-end. This Build Week project was meant to have a back-end already built and running so that the iOS and web teams who were working on the project would be able to focus on the front-end of their respective app. The one that came with this project simply didn't work.
While the BW leadership told us that they would get a back-end up and running for us, it quickly became apparent that we didn't have time to wait if we wanted to have a satisfactory app by the end of the sprint. Dillon tackled the app design while I whipped up a suitable, if basic, back-end using Firebase. We had been minimally exposed to Firebase in class, but this gave me an opportunity to learn more about it and to set up something a little more complicated than the simple examples used in lecture and class assignments. I also attempted to thoroughly document how the Firebase implementation is set up and how to access the relevant data in GitHub. I used Mockaroo to generate sample data that we used to test and demo the app, and we were off and running.
A benefit of using Firebase was that it has authentication services built in, so we were able to use that instead of creating our own. This was another learning experience, but turned out to not be very difficult at all.
An app called "Anywhere Fitness" obviously implies that location data would be used to help users locate fitness classes in their area. Unfortunately, we had not been exposed to location services in class yet, and, especially because of the challenges with the back-end, didn't have time to learn how to implement them.
We decided to work around this by defining a set list of "metros" to represent metropolitan areas that our app would initially "launch" in. Students and instructors choose their area when they sign up, and then they create or search for classes within that area. This was simple, yet effective, and enabled us to complete the app in the allotted time with a reasonable level of service.
What I would do differently: Now that I have worked with location services, I would design the app to utilize them directly and allow instructors to enter exact locations for their courses, and for users to search for courses happening within a reasonable radius of their current or preferred location.