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 | |
Build IPA | |
Create Release | |
Integration tests | |
Linting |
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.
- On the mobile device (e.g., Samsung), go to Settings > About phone > Software information > Click the
Build number
5 times. Then sayyes
to enable developer mode. - On the mobile device, download the APK from releases.
- Go to Files > Downloads and click the downloaded file. After uncompression click the
*.apk
file. - You should get prompted "Unsafe app blocked". Click on
More details
and pressInstall anyways
.
Then simply use the app as you would with any other Android app.
- Connect the mobile device (e.g., iPhone) to a desktop device (e.g., macbook) with USB cable.
- On the desktop device, download the IPA from releases.
- 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. - On the desktop device, open a new
Finder
window, go toDownloads
and uncompress the downloaded file. Drag-and-drop the.ipa
file over the iPhone Finder window. - 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).
- On the mobile device, to allow the app to be used, go to
General
>VPN & Device Management
and click on the app andAllow
.
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.