Skip to content

📳 IronFlow: Cross-platform mobile app for strength training progress tracking

License

Notifications You must be signed in to change notification settings

andreped/IronFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IronFlow

Cross-platform mobile app for strength training progress tracking.

License GitHub Downloads CI CI CI

IronFlow was developed to allow free, private, and seemless tracking of training progress and activities.

The app is compatible with both Android and iOS.

  • Ability to save individual exercises with weight and number of reps and sets.
  • All data is stored in a private SQLite database on the device.
  • Ability to add new exercises.
  • Database with all new exercises and sessions are preserved when upgrading app.
  • Tab to see current max weight lifted for each recorded exercise.
  • Summary tab showing exercise details for any given day.
  • Ability to change days in summary tab to see history.
  • Visualize individual weight lifted for each exercise over time.
  • Ability to inspect and edit all exercise runs from a table tab.
  • Notification when new weight record is saved.
  • Defined large set of predefined exercises to avoid needing to add new exercises manually.
  • Set or add new exercise in log tab now only shows 5 items in dropdown and is scrollable.
  • Faster exercise logging using previously stored data for given exercise as prefilled values.
  • Database clear button now has two-step dialog to safeguard data from accidental deletion.
  • Max weight notification takes into account max weight lifted AND number of reps.
Build Type Status
Build APK CI
Build IPA CI
Create Release CI
Integration tests CI
Linting CI

For testing the application, we use Maestro. Integration tests are performed for all pull requests and before releases using GitHub Actions.

To run integration tests, run the command:

maestro test .maestro/integration_tests.yml

A cross-platform mobile app was developed to test the produced solutions. Installers for both Android (.apk) and iOS (.ipa) were developed. To install the app, a different approach is required on Android and iOS.

  1. On the mobile device (e.g., Samsung), go to Settings > About phone > Software information > Click the Build number 5 times. Then say yes to enable developer mode.
  2. On the mobile device, download the APK from releases.
  3. Go to Files > Downloads and click the downloaded file. After uncompression click the *.apk file.
  4. You should get prompted "Unsafe app blocked". Click on More details and press Install anyways.

Then simply use the app as you would with any other Android app.

  1. Connect the mobile device (e.g., iPhone) to a desktop device (e.g., macbook) with USB cable.
  2. On the desktop device, download the IPA from releases.
  3. On the desktop device, go to Finder, and then unlock the mobile device. The phone should then be accessbile from the left-hand side in Finder, and click on it.
  4. On the desktop device, open a new Finder window, go to Downloads and uncompress the downloaded file. Drag-and-drop the .ipa file over the iPhone Finder window.
  5. After a few seconds, the mobile app should then be installed (you can see the progress on both the mobile device and in the Finder mobile app window).
  6. On the mobile device, to allow the app to be used, go to General > VPN & Device Management and click on the app and Allow.

Then simply use the app as you would with any other iOS app.

This project has MIT License.

I want to acknowledge Scarlet for providing me a free service to sign my IPA which allows me to support iOS.

Using Maestro has allowed us to implement integration tests with ease! Especially, Maestro studio which provided a user-friendly, no-code interface to create test flows.

To reduce development time and get experience with Copilots, this Flutter application was heavily assisted by OpenAI's ChatGPT, primarily using GPT-4o-mini.

For visualizations, I have used freepik.