Interactive muscle map for browsing exercises and building a weekly gym schedule.
- Weekly schedule editor opened in a dialog to keep the main screen uncluttered.
- Per-day planning with
workout,rest,cardio,mobility, andcustomday types. - Exercise planning for each day, including quick-add from the exercise panel and manual custom exercises.
- A
Preview today's planaction placed beside the session timer inside the exercise panel. - Local storage persistence using the
muscle-map.weekly-schedulekey.
- Use the muscle map to browse exercises by muscle group.
- Click
Add to planon any exercise card to open the weekly schedule dialog with that exercise ready to place on a day. - Use
Weekly schedulebeside the session timer to edit the whole week, add notes, mark rest/cardio days, or clear a day. - Use
Preview today's planbeside the session timer to quickly check what is scheduled for the current day.
src/composables/useWeeklySchedule.ts: local-storage backed weekly schedule model and helpers.src/components/ScheduleDialog.vue: weekly schedule editor dialog.src/components/TodayScheduleDialog.vue: compact preview of today's saved plan.src/components/ExercisePanelToolbar.vue: session timer toolbar with schedule actions.src/components/ExercisePanel.vue: quick-add action for exercises.src/components/MuscleMap.vue: schedule state and dialog wiring.
src/__tests__/useWeeklySchedule.test.ts: verifies local storage save/load behavior and invalid-storage fallback.src/__tests__/MuscleMap.test.ts: verifies schedule dialog flows, today's preview, and persistence through remounts.
vp check
vp test- GA is enabled only when
VITE_GA_MEASUREMENT_IDis set at build time. - Leave it unset to keep analytics disabled.
- Because this is a static Vite build, changing the GA ID requires a rebuild and redeploy.
VITE_GA_MEASUREMENT_ID=G-XXXXXXXXXX vp builddocker build \
--build-arg VITE_GA_MEASUREMENT_ID=G-XXXXXXXXXX \
-t muscle-map .- Add
VITE_GA_MEASUREMENT_IDas a build variable in Coolify. - Redeploy after saving it so the static bundle is rebuilt with the GA snippet enabled.
- If you do not want analytics, leave that build variable empty or unset.
- Add
VITE_GA_MEASUREMENT_IDas an environment variable in thegithub-pagesenvironment. - The Pages workflow must expose that variable to the build job so Vite can inject it into
index.htmlduringvp build. - Redeploy after saving the environment variable.