GuruPrepCoach is an application for coaches in the health and fitness industry. Their goal is to ensure that coaches are given the necessary tools to provide the highest quality of coaching for each of their clients.
With GPC, coaches can customize meal plans, create detailed workouts, and schedule weekly check-ins with their clients. To track improvements easily, clients can upload their progress pictures and send them directly to their coach right from the GPC app. Coaches also can engage in real-time communication with their clients and track metrics to make certain that specific goals are being accomplished.
The client came to us with a ready design and asked for help implementing the app.
- Delightful interface for coaches and their competitive athletes.
- Body measurement tracker to document height, weight, body fat percentage, and other metrics.
- Data visualization to easily track progress with metrics and access to check-in history.
- Real-time messaging for both coach and client.
- Scheduled alerts (reminders) so that clients will not miss any meals, training sessions, or check-ins.
- Ability to submit progress pictures at check-ins.
- Coaches can receive push notifications when their clients send check-in updates and messages.
- Clients can receive push notifications if there are any updates or modifications to diet or workout programs.
- High customizability to enable coaches to guide their clients to success.
Since the project had a limited budget, there were no funds to hire two teams for both iOS and Android. We proposed to use React Native — a technology that enables development in both platforms at once.
The flexibility of React Native comes with its limitations. We had to navigate the development process well to ensure that the application is integrated with both iOS and Android and that all features work on both of these platforms. In our case, push notifications and paid subscriptions were somewhat challenging.
In total, eight people worked on the project (including five developers).
The main feature of this project is the calendar with events like meal, workout, and check-in. We implemented the calendar’s functionality from scratch with the ability to create recurring events, edit events while taking into account repetitions, and create scheduled reminders. For the calendar, we did not use any third-party API like Google Calendar.
For authentication, we used Amazon Cognito with its Amplify wrapper. Despite the complexity of the setup and some bugs in the library itself, Amazon Cognito helped implement many features like login, registration, the refresh token, password changes and resets, authorization with social networks.
From a UI perspective, the application had a rather tricky client registration process, with different screens and complex transitions. The application had to serve both coaches and clients, with a different registration process for each. The users could change roles: we needed to give users that register as clients the opportunity to register as coaches later, and vice versa.
We solved that by using MobX, a library for state management, and React Navigation. We designed a specific state machine with a set of flows: coach, client, coach as a client, client as a coach. Depending on the current state, the application knew how to adjust its state and which screen should it display next.
The most difficult feature in this project was paid subscriptions. This is because the APIs of Google and Apple differ significantly for this, and it is not easy to bring them to a common denominator. The react-native-iap library helped us develop this feature — it was the only third-party solution that met our requirements. Otherwise, we would need to implement some native parts for iOS and Android.
On the mobile development side, we used React Native, TypeScript, MobX. React-Native allowed us to implement an application for both platforms at the same time.
On the backend, we used the NestJS framework. This technology made it possible to find a balance between development speed, the quality of the production-ready backend, and the need to write all the necessary utilities. NestJS provides a lot out of the box. For example: an ORM layer, work with databases, database migrations, dependency injection, modular architecture.
Communication with the client was organized via Slack, Zoom, Jira, and GitHub.
For the client, we developed a real multi-platform application that is stable and quite easy to support.
Because of React Native, the app works on two platforms for the same cost as developing something for only one platform.
«The team’s commitment and exceptional work ethic result in a valuable partnership. Following a detailed project overview, Exyte has not only remained on schedule and budget but also communicated challenges to ensure transparent collaboration. Their accessibility leads to effective engagement.»Read more on Clutch