This document outlines the features needed to achieve parity between the Workout Tracker app and RP Hypertrophy's mesocycle configuration and management capabilities.
- Templates page shows WEEKS filter with only: "Any" and "4"
-
- Mesocycle creation is limited to 4 weeks
- Offers: 4, 5, 6, 7, 8 weeks (including deload)
-
- Clear label: "How many weeks will you train (including deload)?"
- Update the WEEKS filter on Templates page to include: 4, 5, 6 options
-
- Update mesocycle creation dialog to allow selecting 4, 5, or 6 weeks
-
- Ensure all templates can specify their default week count (4, 5, or 6)
-
- The deload week should be the final week of the mesocycle
- Database schema may need to support variable week counts per mesocycle
-
- Week generation logic must dynamically create the correct number of weeks
-
- Progress calculations (e.g., "Week 1 of 4" -> "Week 1 of 6") need to use the mesocycle's week count
- Has "Duplicate" option in mesocycle menu
-
- Creates a simple copy without any configuration options
The "Copy mesocycle" feature includes:
-
Source Week Selection
-
- Tabs for: Wk 1, Wk 2, Wk 3, Wk 4 (dynamically based on source mesocycle length)
-
- System recommendation: "RP recommends week 1" -
- Warning messages for data freshness: -
- "We can't prescribe weights and reps for your new mesocycle when the source mesocycle's last accumulation workout is more than 21 days old." -
- "We can't prescribe weights and reps for your new mesocycle because some workouts in the chosen week are incomplete." -
Workout Preview
-
- Day tabs (Mon, Tue, Wed, Thu, Fri) to preview exercises for each day
-
- Exercise list showing muscle group and exercise name -
- Numbered exercises for each day -
Week-Specific Copy
-
- Button text changes: "COPY WEEK 1", "COPY WEEK 2", etc.
-
- Copies weights and target reps from the selected week
- Rename "Duplicate" to "Copy Mesocycle" for consistency
-
- Create a copy configuration dialog with:
-
- Source week selection tabs
-
- Week recommendation logic -
- Warning messages for stale/incomplete data -
- Day-by-day exercise preview -
3. Copy logic should: -
- Transfer exercise selections -
- Transfer weights from selected week -
- Transfer target reps from selected week -
- Allow user to select destination week count (4, 5, or 6)
interface CopyMesocycleConfig {
sourceMesocycleId: string;
sourceWeek: number; // 1-based index
targetWeeks: 4 | 5 | 6;
targetName: string;
copyWeights: boolean;
copyTargetReps: boolean;
}
```
---
## 3. Mesocycle Creation Dialog
### Current State (Workout Tracker)
- Limited configuration options during creation
### RP Hypertrophy Reference
Creation dialog includes:
- **Mesocycle name**: Text input
- **Week selection**: 4, 5, 6, 7, 8 buttons (we'll use 4, 5, 6)
- **Unit selection**: LB / KG toggle
### Required Changes
1. Add mesocycle name input field
2. Add week count selector (4, 5, 6 buttons)
3. Add unit preference selector (LB / KG)
4. Store unit preference per mesocycle (or use global settings)
---
## 4. Mesocycle Menu Options
### Current State (Workout Tracker)
- Rename
- Duplicate
- Save as template
- Archive
- Delete
### RP Hypertrophy Reference
**MESOCYCLE section:**
- View notes
- Rename
- Muscle priorities
- Summary
- End meso
**WORKOUT section (per-day context):**
- New note
- Relabel
- Add exercise
- Bodyweight
- Reset
- Skip workout
### Required Changes (Priority Order)
1. **Copy mesocycle** - Replace "Duplicate" with enhanced copy (see section 2)
2. **View notes** - Add notes viewing capability
3. **Summary** - Add mesocycle summary/stats view
4. **End meso** - Add ability to end mesocycle early
---
## 5. Muscle Priorities Feature - FUTURE ENHANCEMENT
### RP Hypertrophy Reference
Three priority levels per muscle group:
1. **Emphasize** - Adds training volume when responding well, moves from MEV to MRV
2. **Grow** - Promotes growth but only increases volume when needed, stays near MEV
3. **Maintain** - Keeps at MV (Maintenance Volume) to preserve muscle while recovering
### Implementation Notes
- Each muscle group in a template can have a priority setting
- Priorities affect volume progression algorithms
- "Learn about muscle priorities" info modal explains the system
---
## 6. Workout Feedback System - FUTURE ENHANCEMENT
### RP Hypertrophy Reference
Post-workout feedback collection:
1. **Muscle Soreness** - "How sore did you get in your [muscle] AFTER training it LAST TIME?"
2. **Muscle Pump** - "How much of a pump did you get today in your [muscle]?"
- Options: LOW PUMP, MODERATE PUMP, AMAZING PUMP
3. **Workload Rating** - "How would you rate the difficulty of the work you did for your [muscle]?"
- Options: EASY, PRETTY GOOD, PUSHED MY LIMITS, TOO MUCH
### Implementation Notes
- Feedback is collected per muscle group per workout
- Used to adjust future volume recommendations
- SAVE/CANCEL buttons in feedback modal
---
## 7. Templates Page Enhancements
### Current State (Workout Tracker)
- CATEGORY: All, Full Body, Split
- DAYS/WEEK: Any, 3, 4, 5, 6
- WEEKS: Any, 4
### RP Hypertrophy Reference
- Category filters (similar concept)
- Gender filter: MALE / FEMALE
- Days per week shown on each template card
- Templates show: Category, Name, Days/Week, Gender
### Required Changes
1. Update WEEKS filter to: Any, 4, 5, 6
2. Ensure templates display their week count
3. Add ability to create templates with 4, 5, or 6 weeks
---
## Summary of Priority Tasks
### Immediate (P0)
1. Add WEEKS filter options: 4, 5, 6 (remove "Any" or keep for filtering)
2. Update mesocycle creation to support 4, 5, 6 week options
3. Implement "Copy Mesocycle" with source week selection
### Short-term (P1)
4. Add mesocycle notes feature
5. Add mesocycle summary view
6. Add "End meso" functionality
### Future (P2)
7. Muscle priorities system
8. Workout feedback collection
9. Volume progression based on feedback
---
## Technical Considerations
### Database Schema Updates
```sql
-- Mesocycles table needs flexible week count
ALTER TABLE mesocycles ADD COLUMN week_count INTEGER DEFAULT 4 CHECK (week_count IN (4, 5, 6));
-- Copy history for tracking copied mesocycles
CREATE TABLE mesocycle_copies (
id UUID PRIMARY KEY,
source_mesocycle_id UUID REFERENCES mesocycles(id),
target_mesocycle_id UUID REFERENCES mesocycles(id),
source_week INTEGER,
created_at TIMESTAMP DEFAULT NOW()
);
```
### API Endpoints Needed
```
POST /api/mesocycles/copy
Body: { sourceMesocycleId, sourceWeek, targetWeeks, name }
Returns: New mesocycle with copied data
GET /api/mesocycles/:id/weeks/:weekNumber/summary
Returns: Week summary with exercises, weights, reps for preview
```
---
## References
- RP Hypertrophy App: https://training.rpstrength.com
- Current Workout Tracker: localhost:3000