A compose multiplatform fitness application. The application utilizes Kotlin Multiplatform to share code and Compose Multiplatform to share user interfaces between different platforms.
You can either use IntelliJ IDEA or Android Studio to develop the project.
The application utilizes Exercise DB Api to display list of workouts. You can obtain an API Key from RapidAPI.
- SqlDelight - Multiplatform Database used for persistence
- Ktor - Network Client
- Voyager - Multiplatform navigation library
Designed Using Material 3 Guidelines
The project contains 3 main modules:
Common - Manages code sharing between platform.
The module contains the following sub-modules
- CommonMain - Contains shared code.
- CommonTest
- AndroidMain
- AndroidTest
- DesktopMain
- DesktopTest
Android - Contains Android code
Desktop - Contains Desktop-specific code
The application is divided into four modules:
- Data Layer
- Domain Layer
- ML Layer
- Presentation Layer
Camera capture is achieved using Camera X on Android and Webcam Capture on desktop JVM's. The use of Webcam Capture, requires the use of Swing Panel, which overlays over Compose Components, thus disabling preview of pose detection results.
The project was aimed at utilizing computer vision techniques, particularly pose estimation and classification to assist in fitness tracking. Pose estimation utilizes Movenet Singlepose Lightning to infer human pose from images captures from the camera. The model was implemented using Kotlin-DL and DeepLearningJava on JVM. The use of different frameworks was due to issues encountered while using one framework to instantiating models on different platforms.