VisioZoezi
A compose multiplatform fitness application. The application utilizes Kotlin Multiplatform to share code and Compose Multiplatform to share user interfaces between different platforms.
Prerequisites
IDE
You can either use IntelliJ IDEA or Android Studio to develop the project.
Exercise DB API
The application utilizes Exercise DB Api to display list of workouts. You can obtain an API Key from RapidAPI.
Libraries Used
Multiplatform Libraries
- SqlDelight – Multiplatform Database used for persistence
- Ktor – Network Client
- Voyager – Multiplatform navigation library
Android Libraries
Desktop Libraries
Designed Using Material 3 Guidelines
Project Structure
Modules
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
Layers
The application is divided into four modules:
- Data Layer
- Domain Layer
- ML Layer
- Presentation Layer
Screenshots
Computer Vision
Camera Capture
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.
Pose Estimation
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.