Workouts and sessions
The weekly plan, the exercise library, each workout's page, and the live session that logs sets, reps, weight and effort.
For the Full Stack package
The week's plan
Workouts (/en/dashboard/workouts) is a member's training home:
- The month's completed sessions and training time, and today's recovery.
- Today's workout from the weekly split, with each movement's progress, and the next session.
- The week's training volume (weight times reps) against the week before, the muscles worked, and the last six sessions.
- What the coach assigned, and this week's check-in.
The exercise library
/en/dashboard/workouts/exerciseslists every movement, filtered by muscle, equipment and difficulty, with a featured one on top, the member's saved ones and the last ones viewed.- Each movement's page has its muscles, the how-to steps, common mistakes with their fix, a tip, set and rep ranges for strength, hypertrophy, endurance and power, alternatives, and the member's own logged history with an estimated one-rep max.
- Movements with a clip play it in a real video player; a movement without one shows its picture. The clips ship in
public/assets/video/exercises. - A member saves a movement, or logs sets, reps and weight on its page.
The seed ships 23 movements, 16 of them with written steps, mistakes, tips and alternatives, and 6 workouts.
A workout's page
/en/dashboard/workouts/<slug> shows the workout's movements with their sets and reps, the equipment, a warm-up checklist, the muscles it trains, its level, length and calories, and an optional coach note. A member can save it.
The live session
/en/dashboard/workouts/session is the logger a member keeps open while training. It opens today's planned workout as a session, or the one already open.
- Each set logs weight, reps and effort (RPE). The next set becomes current, then the next movement, and a 90-second rest clock starts, which can be skipped.
- Beside each set, the member sees what they did on the same movement last time.
- Movements can be added from the catalogue (with their last logged weight), removed (never the last one), or jumped to. The session takes a note.
- Finish closes it: its minutes come from the clock and its calories are minutes times 8. It joins the recent sessions, the month's figures and the progress page, and marks the coach's assigned work done. Restart discards it and opens today's plan afresh.
Building the catalogue
Staff with fitness.manage edit movements and workouts under Content (/en/dashboard/content/exercises and /en/dashboard/content/workouts). Members read the same rows, so an edit shows in the library, the plan and the session at once.
- A movement has names and texts in English and Arabic, a muscle group, equipment, difficulty, a picture, an optional clip and poster, steps, mistakes, a tip, alternatives and set ranges. One movement at a time is the featured one.
- A workout lists its movements in order with sets and reps, its equipment, warm-up and muscles, level, focus, minutes and calories.
- A movement a workout still uses, or a workout a program day still schedules, cannot be deleted (
409 exercise_in_use,409 workout_in_use).
The workout routes
Reads need fitness.view and writes fitness.edit; each write answers with the whole refreshed screen. The catalogue routes under /api/fitness/manage need fitness.manage.
| Routes | What they do |
|---|---|
GET /api/fitness/workouts, GET /api/fitness/workouts/:slug, POST /api/fitness/workouts/:slug/save | The plan page, one workout, saving it |
GET /api/fitness/exercises, GET /api/fitness/exercises/:slug, POST …/:slug/save, POST …/:slug/log-set | The library (muscle, equipment, difficulty), one movement, saving, logging sets ({ sets, reps, weightKg }) |
GET /api/fitness/workouts/session | The open session, created from today's plan when none is open |
POST /api/fitness/workouts/session/sets/:set | Logs a set ({ weightKg, reps, rpe }) |
POST …/session/rest/skip, PATCH …/session/notes | Skips the rest, saves the note |
POST …/session/exercises, POST …/session/exercises/:slug/select, DELETE …/session/exercises/:slug | Adds, jumps to, removes a movement |
POST …/session/finish, POST …/session/restart | Finishes, or discards and starts again |
/api/fitness/manage/exercises, /api/fitness/manage/workouts | List, read, create, change and delete; POST /api/fitness/manage/exercises/:id/feature sets the featured movement |