OpenWorkoutTracker

OpenWorkoutTracker

OpenWorkoutTracker is a privacy-oriented, open source workout tracker. It was initially written as a bike computer, but now supports numerous other activity types. This includes strength exercises, such as pull-ups and push-ups, as well as aerobic sports like running, walking, and hiking.

Rationale

Why develop a workout tracker when there are so many closed-source options available?

Major Features

Major Todos

User Documentation

The User Documentation is stored on this wiki page. There you will be able to find an explanation on how to use the app.

Cycling Screen

Architecture

The software architecture uses a model-view philosophy. The view is separate from the model and enables porting the application to different platforms without the need to rewrite everything.

As much as possible, the model layer is written in C/C++. This is so it can be compiled for a variety of platforms and be called from almost any other programming language. For example, the iOS and Watch OS apps utilize SwiftUI for the view layer and call C functions for model functionality. Likewise, an Android app could be written in Java, all while retaining the same backend (i.e. model) code.

Architecture Diagram

Building

This app is built using Apple XCode. Every attempt is made to stay up-to-date with the latest version of XCode and the latest versions of iOS and watchOS. In theory, if you have cloned the source code and initialized the submodules, then you should be able to open the project in XCode, build, and deploy.

git clone https://github.com/msimms/OpenWorkoutTracker
cd OpenWorkoutTracker
git submodule update --init --recursive

Open OpenWorkoutTracker-Swift.xcodeproj with XCode and build.

Version History

2019-06-13 Version 1.0.0 - Initial Release

Tech

This app uses these source projects to work properly:

The app is written in a combination of Swift/SwiftUI (though previously used Objective-C) as well as C/C++ and targets the Apple iPhone and Apple Watch.

License

MPL 2.0 (Mozilla Public License) - There are no restrictions for non-commercial use (i.e. personal or academic). Commercial use of the code in this repository is prohibited by the MPL 2.0 license; however, I still posses the original, unlicensed version of the repository, for whatever that is worth.