Hadeed (حديد, "iron") is a gym log that gets out of your way. Tap the muscles you want to train on a body map, and it builds the session — using the weights you actually lifted last time, not a generic template. Log your sets, let the rest timer run, and move on. Built with Flutter for Android, with home-screen widgets and a Wear OS companion.
Hadeed (حديد) is Arabic for iron. The goal: get the logging out of the way of the lifting — pick the muscles, see last week's numbers, and beat them.
Status#
In closed testing on Google Play. Not yet public.
The one thing it does differently#
Hadeed has no INTERNET permission at all. Not "we don't collect much" — the app literally cannot reach the network. It's absent from the manifest, and ACCESS_NETWORK_STATE is explicitly removed on top of it.
That makes the Play Data safety answer — no data collected, no data shared — something you can verify from the APK rather than take on trust. No account, no sign-up, no ads, no tracking, no subscription, nothing to unlock.
What's in it#
- 552 exercises, each with illustrated form steps
- A body map you tap to pick your focus, front and back
- Sets, reps, weight and RPE, with a rest timer between them
- Personal records and an estimated 1RM for every lift
- Progress charts — volume, bodyweight, consistency, time under the bar
- A muscle heat map that shows what you've been skipping
- Medals and levels, if that's what keeps you going
- Home-screen widgets for today and this week
- A Wear OS companion — a second bundle, one Dart binary
- Full backup and restore, plus CSV export
A tour#
Eight screens, covering the areas you actually spend time in.
Your data is yours#
Export a full backup to a single file whenever you want, or a CSV you can open in any spreadsheet. Import a backup on a new phone and pick up exactly where you stopped. Coming from another logger? Hadeed reads common workout exports too.
Under the hood#
| Package | com.mohamedgado.hadeed |
| Min SDK | 24 (Android 7.0) |
| Target SDK | 36 |
| Locales | 16, including full right-to-left Arabic |
| Form factors | Phone and Wear OS, as two bundles from one Dart binary |
Play identifies a Wear app by a single manifest tag, android.hardware.type.watch, and rejects a bundle that declares it required="false" — so a single artifact cannot be both. The Dart side is unchanged: one binary asks whether it's running on a watch and hands off to the watch UI if so. Only the manifest differs.









