What
I wanted to develop a tool for both amateur CrossFit athletes and coaches for CrossFit Hakata gym, with a possibility to extend the app usage to other CrossFit gyms.
The app would allow:
- For coaches - create and manage class schedule; create and manage class content (workouts-of-day); athlete’s performance to adjust class programming.
- For athletes - save the results of workout-of-day; track their performance and progress; make (or cancel) a class reservation; share their score on a daily whiteboard and see the other athletes' score.
How
To implement this functionality, I decided to use:
- Dart/Flutter for mobile clients (Android, iOS).
- Kotlin, Ktor, and GraphQL to implement API.
- PostgreSQL as the database.
- Django framework and Vue.js for “administrator’s” site.
- Sentry for error monitoring.
- Docker, Docker Compose, and Docker machine for deployment.
Problems
I seriously underestimated the amount of work that is required to pull off this kind of project. As a result, due to lack of time to work on this project, I decided to reduce the application functionality to a minimal vital product (MVP) which then was released. The MVP allows users to track their one-rep-max (1RM) for different weight-lifting movements (single and complex); create new complex ones if needed; quickly get the value of 40-95% of 1RM.
After the release of MVP, I postponed the work on the project.
Results
- Android application released and available on Google Play (limited to Japan)
- iOS application released and available on App Store (limited to Japan)
- A landing page with application privacy policy and some related videos is created and deployed.
- I got experience in creating and releasing applications using Flutter.
- I contributed to the Flutter project.