General
Is it free?
Yes, and it is open source under the MIT licence. There is no paid tier, no subscription and no advertising.
Do I need an account?
No. There is nothing to sign up for, because there is no server to sign up to. Your journal lives on the device.
Does it work offline?
Yes, for everything that matters. Only three features need connectivity: map tiles while running, product lookups when adding an unknown food, and the AI Coach. Details in Data, backup & privacy.
Which platforms are supported?
It is a Flutter app, and Android is the most complete target. Background GPS tracking, sleep monitoring, alarms, barcode scanning and native voice coaching need Android foreground services. Everything else is portable. The full matrix is in Data, backup & privacy.
Is there an iOS build?
The project targets Flutter's platforms and the shared code is portable, but the Android-only features listed above have no iOS counterpart today. Treat iOS as unsupported for now rather than as feature-complete.
What languages does the app speak?
English and Brazilian Portuguese. The layout is identical in both; only the strings change. Run voice coaching can independently follow the app language or be pinned to one of the two.
Kilograms or pounds?
Either. The unit system setting switches weight and length together (kg with centimetres, or lbs with inches), and distance has its own kilometre or mile setting.
Tracking
Do I have to use every feature?
No, and none of them require another. Log only strength work and the rest of the app just stays empty. The Plan tab can even be hidden entirely.
Will a run keep recording if I lock the screen or leave the app?
Yes. Recording runs in an Android foreground service that owns the GPS and writes its own durable copy. Even killing the app mid-run leaves the session recoverable; it is imported into your history when you reopen. See Running & cycling.
Does the sleep monitor record audio?
No recording is kept, and the analysis never reads raw audio. The Android service reduces each window to numeric features on the device (energies, spectral flatness, breathing regularity, motion), and the stage engine sees only those numbers. See Sleep & alarms.
How accurate are the sleep stages?
They are estimates from acoustic and motion aggregates, produced by a heuristic scorer with smoothing, and every session reports a confidence figure. Read the trend across weeks rather than treating one night's minutes as measurement.
Where do calorie numbers come from?
They are estimates that need a logged body weight. Workouts use a MET-based formula, running uses roughly 1 kcal per kilogram per kilometre, and stationary cycling uses a MET estimate. Without a weight on file, no calorie figure is shown rather than a guessed one.
Why is my estimated 1RM different from another app's?
Because the formula is different. This app uses Epley, weight × (1 + reps ÷ 30), applied to the heaviest set of the
session. Other apps use Brzycki, Lombardi or an average of several. All of
them are estimates; comparing your own trend over time is meaningful,
comparing across apps is not.
Are warm-up sets counted?
Never in volume, personal records or goal totals. They are still stored and still shown in the session, because knowing you did them is useful.
Can the app plan my training for me?
For running, yes: pick a template and the plan wizard generates weeks of sessions with pace targets. For strength, you build routines yourself and can wrap them in a periodization phase that tracks adherence.
Data
How do I move to a new phone?
- On the old device, Settings → Backup and save or share the JSON file.
- Install the app on the new device.
- Restore from that file, from picked bytes, or by pasting the JSON.
- Grant the permissions you use again; permissions are device state, not data.
Does a restore merge with what is already there?
No. It replaces. Take a backup of the current device first if it has anything you want to keep.
What is not in a backup?
AI tokens, AI conversations and proposals, per-epoch sleep-stage detail, the disposable remote food-search cache, and device permissions. Your foods, variants, servings, meal history and saved meals are all kept. Full list in Data, backup & privacy.
Is any of my data sent anywhere?
Only if you use the AI Coach, and then only to the provider you configured yourself. There is no analytics, no telemetry and no background sync.
Do I need an API key?
Only for the AI Coach, and only if you want it. Nothing is bundled, and the rest of the app never asks. See AI Coach.
Can the AI change my data?
Not on its own. Read tools run directly, but routine changes and new foods are proposals you review; a routine proposal is revalidated against current data before being applied in a transaction, and an approved food only opens a pre-filled form you still have to save.
Troubleshooting
My run has no route, or the distance looks wrong
- Check that precise location is granted, not just approximate.
- Give the fix time before starting; the first points after a cold start are the least accurate ones.
- Look at the mean GPS accuracy on the run detail screen. A poor value there explains a jagged route better than anything else.
- Exclude the app from battery optimisation if the system is aggressively suspending it.
The rest timer or session notification does not appear
Grant the notification permission (Android 13 and later) and make sure the app's notification channels are not muted in system settings. Timing itself is unaffected; the countdown is anchored to wall-clock time, so it stays correct even without a visible notification.
My alarm did not ring, or rang late
- Grant the exact alarm permission so the system does not batch it.
- Grant the full-screen intent permission if you want the alarm screen over the lock screen.
- Exclude the app from battery optimisation.
- Reopen the app once. It reconciles the database against the native schedule and reschedules anything missing.
A mission alarm will not let me set it up
Mission modes need a barcode configured in advance, and refuse to start without one, deliberately, so you never discover the problem at wake-up time. Configure a mission code first, and grant camera access.
A food search returns nothing
The remote lookup needs connectivity, and rate limiting is reported as its own distinct error. Products without a code or a name are discarded. When in doubt, create the food manually; it becomes part of your library and works offline forever after.
The AI Coach errors out
- Confirm the base URL and that the token is still valid.
- Re-fetch the model list; a model that has been removed by the provider will fail every request.
- Some providers reject parameters like temperature or reasoning effort. The app already drops or downgrades those automatically and retries, so a persistent failure usually points at the URL, the token or the model name.
- If an answer is slow, note that there is no streaming; responses arrive complete.
A screen looks empty even though I have data
Most analytics are scoped by the exercise category's energy system: anaerobic for strength, aerobic for cardio. An exercise filed under the wrong category will be missing from the charts you expect and present in ones you do not. Check the category on the exercise itself.
Something else is wrong
Open an issue with what you did, what you expected and what happened:
github.com/RafaelGoulartB/workout-notes/issues.
Pull requests are welcome too; the contribution conventions live in
AGENTS.md in the repository.