Inspiration
Working out with others and creating positive experiences at the gym is one of the most effective ways to stay consistent in a fitness routine. Many people begin their fitness journey because of a friend’s encouragement, and over time, they develop their own motivation to keep going. However, as friends' schedules change or they pursue different interests, finding new workout partners who share similar goals becomes essential for maintaining consistency. Yet, it can feel awkward or inconvenient to approach acquaintances for future gym plans or exchange social media information. Recognizing this challenge, we saw an opportunity to create a dedicated social network tailored specifically for fitness, making it easier to build meaningful connections and stay motivated.
What it does
FitConnect is the solution to discovering gym partners. Users can share their individual fitness goals and personal bests, fostering an environment of encouragement and accountability. Most importantly, users can connect with others and add them to their friends list.
How we built it
We leveraged SwiftUI to design and develop the front-end of our iOS application. SwiftUI offers a modern, declarative framework enabling us to create dynamic, responsive user interfaces. The integrated dev tools provided by Apple, such as iOS system emulation, significantly streamlined our UI design process and ensured a consistent user experience across different iOS devices. For the backend, we chose Google’s Firebase, specifically the Firestore NoSQL cloud database, to store user data and session posts. Firestore stores data in structured documents and handles real-time data synchronization across devices. By using Firebase’s Swift SDK, we were able to integrate Firestore directly into our SwiftUI-based app, allowing for real-time updates.
Challenges we ran into
Initially, we opted to use MongoDB Atlas, a highly recommended NoSQL cloud database known for its seamless integration with Swift via its SDK. However, we encountered significant challenges early on, particularly with access restrictions when attempting to connect to the database through the University of Michigan’s Wi-Fi network. Despite these setbacks, we successfully built a comprehensive database, incorporating data validation to ensure accuracy and consistency. When it came time to connect to the database using the Swift SDK, we ran into an unresolved error that persisted even after extensive troubleshooting. We explored alternative libraries, including Realm and Vapor, but continued to face the same issue. We decided to transition our backend to Google Firebase, where we rebuilt our database infrastructure. This shift allowed us to overcome the technical barriers and move forward with a more reliable and well-supported solution.
Accomplishments that we're proud of
We are proud of successfully creating an app with the full functionality of the original vision between the frontend and backend. We are also proud of overcoming the major setback of switching databases.
What we learned
As first-time users of Swift and Xcode, developing this app provided us with invaluable hands-on experience with the features of Apple's development ecosystem. We gained a deep understanding of Swift's declarative syntax and the functionality of SwiftUI.
This project also marked our first experience with both NoSQL and cloud databases. Building the backend with a NoSQL structure expanded our understanding of non-relational data models and the flexibility they offer, particularly when working with dynamic and unstructured data. Navigating the complexities of cloud infrastructure—first with MongoDB Atlas and later with Google Firebase—taught us the importance of choosing the right database for scalability, real-time data synchronization, and ease of integration.
What's next for FitConnect
There are several features that we wanted to integrate, but were outside the constraints of this hackathon were profile pictures, integration with your Google login, and in-app messaging.
Log in or sign up for Devpost to join the conversation.