Skip to content

Indoor fitness machine (bike, treadmill, rower, kayak / canoe / swim ergometer, elliptical) companion app to record virtual workouts with synthetic GPS track of simply circling on a track shape route

License

Notifications You must be signed in to change notification settings

TrackMyIndoorWorkout/TrackMyIndoorWorkout

Repository files navigation

Track My Indoor Workout

Track My Indoor Workout is an application which supports Bluetooth Low Energy (BLE) enabled smart fitness machines to record stationary workouts. Workouts can have GPS routes - generated based on speed - and upload to numerous fitness portals. Workouts can be exported in common formats and in some cases (ANT+ machines or data migration purposes) there's an option to import saved workouts.

The ultimate mission is to improve people's health by preventing fitness machines from becoming laundry drying racks.

For more details please see the application's website.

Technical Architecture and Design

DeepWiki: https://deepwiki.com/TrackMyIndoorWorkout/TrackMyIndoorWorkout/

Contribution Rules

Extra build quirks

  • Certain plugins which have native parts may require the Java version to be raised from 1.8 to 17
    • There are two types of these variables: JavaVersion.VERSION_17 and 17
    • You may want to raise the Java version in your IDE
    • Some plugins may require you to raise the Java version in the build files in the cache
    • Example of modifying the receive_sharing_intent plugin:
      1. The cache location on Windows is C:\Users\{USERNAME}\AppData\Local\Pub\Cache\hosted\pub.dev\receive_sharing_intent-1.8.1\android\build.gradle or on Linux /home/{USERNAME}/.pub-cache/hosted/pub.dev/receive_sharing_intent-1.8.1/android/build.gradle
      2. Add / modify compileOptions and kotlinOptions to raise the Java version:
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_17
            targetCompatibility JavaVersion.VERSION_17
        }
        kotlinOptions {
            jvmTarget = "17"
        }
        
  • If you don't have you may need to install 28.2.13676358 version of the NDK:
    1. cd ${HOME}/{ANDROID_SDK}/cmdline-tools/latest/bin/ (in my case /home/csaba/Android/Sdk/cmdline-tools/latest/bin/)
    2. Verify that you can install this version of NDK: ./sdkmanager --list | grep "ndk;28.2.13676358"
    3. Install it: ./sdkmanager "ndk;28.2.13676358"
    4. In you local.properties if you have NDK directory, reference that:
      sdk.dir=/home/csaba/Android/Sdk
      ndk.dir=/home/csaba/Android/Sdk/ndk/28.2.13676358
      

Code regeneration

With certain data persistence or testing Mock changes you may need code regeneration. It's always good to regen the persistence code after any isar version change.

  1. dart run build_runner build --delete-conflicting-outputs
  2. Don't forget to re-run dart format . after that.

License

This work is licensed under Apache 2.0. SPDX-License-Identifier: Apache-2.0