Fitness
Fitness is a training log with an exercise guide, a weekly plan, body stats, and a food log. Workouts, schedule, body records, food, and goals sync when Cloud Sync is on. Units and the current view stay on this device.
Overview
The window has five areas: Exercises, Workouts, Schedule, Body, and Food. Details for the selected exercise, day, or meal open in a side sheet, the same drawer Calendar uses for an event. On a narrow window that sheet sits at the bottom. The toolbar sidebar button opens and closes it.
The exercise list is the pinned free-exercise-db library (commit f00c92c7, 876 exercises). Photos, steps, muscles, equipment, level, and type come from that library. The detail view credits the source.
Features
- Exercise guide: filter by muscle, equipment, or type, and search by the localized name or the English name. The detail shows photos, steps, primary and secondary muscles, and equipment.
- Localized names and instructions: in a non-English UI, the exercise view uses the translated name as the title and the English name as secondary text. Instructions are translated only. Workout log, records, suggestions, and the schedule show the localized name only. Saved workouts still store the English name. Catalogs cover en, zh-TW, zh-CN, ja, ko, fr, de, es, pt, it, and ru. zh-TW is Traditional Chinese. English UI keeps the library text.
- Workout log: add exercises to a day and record sets, reps, and weight. The last session is shown as a hint. A chart tracks estimated one-rep max (Epley), or reps for a bodyweight exercise. The chart, best set, and recent sessions live in the side sheet.
- Weekly schedule: a focus per weekday (upper, lower, push, pull, legs, core, cardio, full body, or rest), with templates for Upper/Lower, Push/Pull/Legs, Full Body ×3, and Balanced. Recommended exercises can start a workout. The sheet includes a Monday-start mini calendar. Planning a future day stores that date and leaves the repeating template alone. A weekly workout target and streak sit with the plan.
- Body and goals: weight, body fat, and measurements, plus a target weight and a weekly workout target. The body view charts weight.
- Food log: snap or upload a meal photo, or type the meal, and AI estimates items, calories, and macros. Review and edit before saving, or add food by hand. Estimates can be wrong. On iOS the photo button opens the system sheet (Photo Library, Take Photo, Choose File). Desktop opens the file picker. Removing a photo is the corner control on the thumbnail.
- Shared meals: a split menu sits next to the meal type (breakfast, lunch, dinner, snack) on an AI draft, a manual entry, and an existing row. Choices are no split, ÷2, ÷3, ÷4, and custom (1–20). Calories, protein, carbs, fat, and numeric amounts in the portion are divided by that count. Percentages such as
2%stay as written. The full meal is kept so a later change divides the original again. Daily totals use your share. The log labels the split (÷2, or a count for 3, 4, and custom).
User Guide
Open Fitness and pick a page from the toolbar. On Exercises, filter the list and open a row for photos and steps. Add it to today from Workouts, then log sets.
On Schedule, set each day's focus or start from a template. Start Workout fills that day with the recommended exercises.
On Food, add a photo or a manual entry, pick the meal type, and set the split if the meal was shared. Edit the estimate before saving.
Switch metric and imperial from the Units menu.
Data sources and licenses
| Source | Used for | License |
|---|---|---|
free-exercise-db at f00c92c7 | Exercise names, instructions, photos, muscles, equipment, level, and type. Served from jsDelivr, with GitHub raw as the fallback | Unlicense (public domain) |
src/apps/fitness/locales/{locale}.json | Translated exercise names and instructions, keyed by exercise id. Loaded when Fitness opens in a non-English language | ryOS translations of the library text |
AI (POST /api/fitness/food-analyze) | Meal photo or text estimate | Generated. May be inaccurate |
The exercise detail footer links the library and states the public-domain license.
Technical Details
Window configuration
- Default size: 840 × 600 px
- Minimum size: 400 × 420 px
- Maximum width: 660 px
Endpoints
| Method | Path | Role |
|---|---|---|
| GET | /api/fitness/exercises | Compact list (instructions omitted). Cached in memory for 24 hours |
| GET | /api/fitness/exercises?id= | One exercise, including instructions |
| POST | /api/fitness/food-analyze | { image?: { mediaType, data }, text?, locale? }. Returns an editable estimate. Auth is optional. Anonymous and signed-in callers have separate burst and daily limits |
Photos load from https://cdn.jsdelivr.net/gh/yuhonas/free-exercise-db@f00c92c7dcf1216a928a52c3706c7ce8e2f71ed5/exercises/.
Components
src/apps/fitness/components/FitnessAppComponent.tsx– window shell and side sheet
src/apps/fitness/components/FitnessMenuBar.tsx– menussrc/apps/fitness/components/FitnessToolbar.tsx– page switch and sidebar togglesrc/apps/fitness/components/FitnessExercisesView.tsx– guide, filters, and attributionsrc/apps/fitness/components/FitnessWorkoutsView.tsx– day logsrc/apps/fitness/components/FitnessScheduleView.tsx– week plansrc/apps/fitness/components/FitnessBodyView.tsx– measurements and weight chartsrc/apps/fitness/components/FitnessFoodView.tsx– food logsrc/apps/fitness/components/FoodSplitControl.tsx– ÷2 / ÷3 / ÷4 / custom selectsrc/apps/fitness/hooks/useFitnessLogic.ts– page state, catalog, and library fetchsrc/apps/fitness/utils/exerciseI18n.ts– localized name, instructions, and dual-language searchsrc/apps/fitness/utils/foodSplit.ts– share math. Youritemsare the logged share.baseItemsis the full mealsrc/shared/fitness.ts– library pin, license, and shared typesapi/fitness/exercises.ts,api/fitness/food-analyze.ts– HTTP handlers
Related Apps
- Calendar – the Fitness side sheet uses the same drawer
- Control Panels – language selects the exercise catalog. Cloud Sync copies workouts, body stats, food, schedule, and goals