Workoutmanager Plus — Development Roadmap
This roadmap structures development in clear phases. Manual input is treated as a platform adapter, not as a special case. Each phase builds on a stable and reusable data foundation.
Phase 0 — Canonical Data Engine (Foundation)
Goal: keep the core model stable and scalable: Identity → Representation → Occurrence → Execution, with governance on aliases and repository-based consistency.
- Remove mapping layer; workouts reference
alias_iddirectly. [DONE] - Alias n→1 canonical; snapshot principle implemented in
workout_exercises. [DONE] - Defaults on alias-level (
equipment,variations). [DONE] - Execution modes: Set-level vs Rep-detail mode with aggregation strategy. [DONE]
- Repository split:
WorkoutRepositoryvsAliasRepository. [DONE] - Audit logging v2 (append-only, JSON old/new values). [DONE]
- Time stored as seconds (
`time`) in sets and reps; autosave support. [DONE]
Phase 1 — Manual Input as Adapter (Stabilisation)
Goal: complete and harden manual input so it behaves like any other platform adapter. Focus on consistency, autosave, and canonical storage.
- Refactor
update_manual_workout_exercise.phpto autosave-only behavior. [DONE] - Universal workout model (platform-independent workout storage). [DONE]
- Workout editor UI: stable set/rep structure, rep-mode toggle, single
reps-<set_id>container. [DONE] - Mobile: rep notes modal using hidden autosave input (no backend change). [DONE]
- Finalize manual workout creation flow end-to-end (create workout → add exercises → sets/reps → complete). [IN WORK]
- Workout lifecycle handling: ensure status transitions and end-time behavior are consistent across UI + repository. [TODO]
- Improve validation/guardrails (negative values, empty fields, safe deletes) across all autosave endpoints. [TODO]
- Implement universal models for:
- Body weight, height, and BMI [TODO]
- BIA measurements [TODO]
- Body measurements (circumferences) [TODO]
- Add manual entry UI for all body & measurement data using the universal models. [TODO]
Phase 2 — Speediance Deepening (Adapter + Governance)
Goal: import higher-resolution Speediance data and guarantee parity with manual entry. Speediance and manual should be interchangeable at the canonical model level.
- Import repetitions / per-set details from Speediance. [TODO]
- Align Speediance load/time fields with canonical set/rep schema. [TODO]
- Alias governance pipeline for Speediance imports (unverified → review → approve). [TODO]
- Validate parity: manual workout vs Speediance workout results (counts, totals, averages, durations). [TODO]
Phase 3 — Export, Reporting & Insight
Goal: move from data collection to reuse: export, reporting, and analysis layers. Advice is derived from normalized historical data.
- Export workouts to CSV/JSON (filter by date range, exercise, platform). [TODO]
- Define stable analytical views (aggregated sets/reps, volumes, durations). [TODO]
- Explore progress & trend reporting (R scripts / external pipeline). [TODO]
- Lay groundwork for future training advice and recommendations. [TODO]
Parallel / Supporting Tracks
These items can be developed alongside the main phases where appropriate.
- Email-based 2FA + “Trust this device for 24 hours” (split-token). [DONE]
- Device management page (list + revoke trusted devices). [TODO]
- Logout should optionally revoke current trusted device. [TODO]
- OTP rate limiting + attempt throttling. [TODO]
- Security headers review (CSP, HSTS, etc.). [TODO]
- Move menu structure to the database with multilingual support. [TODO]
- Implement multilingual support for the website. [TODO]
- Optimize layout for mobile and phone-sized screens (site-wide). [IN WORK]
- Workout templates. [TODO]
- Enable workout creation based on templates. [TODO]
- Redesign workout overview with left/right structure and total summary. [TODO]
- Analytics scalability options (materialized analytics, archiving strategy for >10M reps). [TODO]
- Canonical similarity scoring / governance confidence dashboard. [TODO]