LogEZ: Offline Fitness Logger
Your personal proof of change. LogEZ is a fitness logger for every kind of training: lifting, running, riding, rowing, hiking and more. There is no account, no ads and no cloud sync. Everything you log stays on your phone.
🌐 Website & early-tester waitlist: https://logezapp.com
📱 Android (Google Play): coming soon · iOS: planned
Why I'm building it
Most fitness apps want an account, a subscription or your data. I wanted a fast, private logger that treats strength training and outdoor activity as one record, and that still works when you have no signal at the gym or on the trail. LogEZ is a one-time purchase with no subscription.
What it does
- Logging: start from a routine, a past workout or a blank one. Previous numbers sit beside every set. Supports warm-up, failure and drop sets, supersets, RPE or RIR, rest timers, and plate and warm-up calculators. A Save Workout screen shows your figures, records and routine changes before you commit.
- Routines and plans: unlimited routines and folders, eight starter programs, and a 405-exercise library with custom exercises.
- Timed workouts: AMRAP, EMOM, intervals, for time and self-paced rounds, with a clock, a score, tones and optional spoken cues.
- Outdoors: run, walk, hike, trek, trail run, cycling, skating and rowing tracked with GPS. You get a route map, pace or speed, splits, elevation and records.
- Progress: statistics, a muscle chart and body diagram, a calendar with streaks, achievements, nine kinds of record, a monthly report, body measurements and progress photos.
- Share and look: twenty share layouts for a workout or a run, five colours in light and dark, and home-screen widgets (Weekly progress, Quick start).
- Your data: CSV export, full backup and restore, and delete-everything. Optional read-only Health Connect for steps, calories and heart rate. A Wear OS companion app is in progress.
Privacy
No account, no ads, no analytics-driven tracking and no cloud sync. Logging, stats, streaks and GPS route recording all work offline. The one network use is the map background, which loads from OpenFreeMap when you're online. Offline, the map is blank but your route is still recorded.
Tech stack
| Layer |
Choice |
| Language |
Kotlin |
| UI |
Jetpack Compose (Material 3) |
| Persistence |
Room (offline-first) |
| DI |
Hilt |
| Architecture |
MVVM + repository pattern |
| Modules |
:app (phone), :wear (Wear OS companion), :wear-protocol (shared wire format) |
| Targets |
Android, min SDK 26 · target SDK 36 |
| Maps |
OpenFreeMap tiles (no API key, no account) |
Engineering notes
- Roughly 8,000+ automated tests (JUnit4 + Robolectric), using hand-written in-memory fakes rather than a mocking framework.
- Architecture tests pin the layering, and a guard test fails any raw colour literal outside the palette files.
- Text colours are contrast-tested against WCAG 4.5:1, not eyeballed.
- Architecture decisions are recorded as ADRs.
Status
In active development. The first internal build is on Google Play and I'm recruiting early testers through the waitlist at logezapp.com.
Feedback
Bugs, ideas and feature requests are welcome. Comment on this project or use the feedback page on the website.