Skip to content

A compose multiplatform application utilizing computer vision models.

License

Notifications You must be signed in to change notification settings

BKMbigo/VisioZoezi

Repository files navigation

VisioZoezi

VisioZoezi

A compose multiplatform fitness application. The application utilizes Kotlin Multiplatform to share code and Compose Multiplatform to share user interfaces between different platforms.

Table of contents

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

VisioZoezi

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.