MVP Progress
Goal
Build a minimal fitness app that I actually use every workout.
Implementation Phases
Phase 1: Database Schema ✅
- Configure Clerk auth
- Set up Neon database
- Run initial migration
- Add PPL training system tables (13 new tables)
- Add enums (exerciseUse, slotType, dayType, warmupPhaseType, equipmentLevel, sessionStatus)
Phase 2: Seed Data ✅
- Seed exercise library (~500 exercises)
- Seed PPL template (6 days, 36 slots)
- Seed warmup templates (3 templates, 9 phases)
- Seed warmup exercises (30 exercises, 20 phase links)
Phase 3: API Endpoints ✅
- GET /api/ppl/today - Today's workout with rotation
- POST/PATCH /api/ppl/session - Start/complete sessions
- POST/DELETE /api/ppl/session/sets - Log sets
- GET /api/exercises/alternatives - Exercise swaps
- GET/POST /api/recovery - Recovery logging
- GET /api/progression - Progression & fatigue tracking
Phase 4: Frontend Components ✅
- Workout page with two-mode design (overview/focused)
- Exercise swap modal
- Recovery check-in component
- Dashboard with recovery integration
- Progression analytics page
Phase 5: Logic & Auto-Regulation ✅
- Fatigue calculation (0-10 score)
- Progression gates system
- Deload detection & management
- Weight suggestions
- Training status API
Phase 6: Deploy ✅
- Deploy to Vercel
- Use for 2 weeks
- Adjust thresholds based on real usage
Phase 7: Mo Universe Architecture ✅
- Created Mo Universe directory structure (
/lib/mo-*) - MoStreaks - Workout streak tracking
- MoRecords - Personal record detection
- MoSettings - User preferences
- MoWarmup - Warmup tracking
- Auto-hooks for streak updates and PR detection
Tech Stack
| Layer | Choice | Status |
|---|---|---|
| Framework | Next.js 15 (App Router) | ✅ |
| Language | TypeScript | ✅ |
| Styling | Tailwind CSS | ✅ |
| Database | Neon (PostgreSQL) | ✅ |
| ORM | Drizzle | ✅ |
| Auth | Clerk | ✅ |
| Charts | Recharts | ✅ |
| Hosting | Vercel | ✅ |
MVP Features
Must Have (Launched)
- Authentication — Clerk (email/OAuth) ✅
- Program library — PPL template with 6 days ✅
- Today's workout — Show exercises for today ✅
- Quick logging — Enter sets/reps/weight with minimal taps ✅
- Workout history — View past workouts ✅
- Progress charts — Weight lifted over time ✅
- Body weight tracking — Log and chart weight ✅
Deferred
- Custom program builder
- AI coaching
- Exercise video demos
- Social features / sharing
- Nutrition / calorie tracking
- Mobile native app
PPL Template Design
The PPL (Push/Pull/Legs) system uses movement pattern slots instead of fixed exercises:
| Day | Primary | Secondary |
|---|---|---|
| Push A | Horizontal Push | Vertical Push, Triceps, Side Delts |
| Push B | Incline Push | Vertical Push, Triceps, Chest Fly |
| Pull A | Vertical Pull | Horizontal Pull, Biceps, Rear Delts |
| Pull B | Horizontal Pull | Vertical Pull, Biceps, Rear Delts |
| Legs A | Squat | Hinge, Leg Curl, Calves |
| Legs B | Hinge | Squat, Leg Extension, Calves |
Key Features:
- Exercises suggested based on movement pattern, equipment, and history
- Users can swap exercises within the same movement pattern
- RPE targets and rep ranges defined per slot
- Warmup templates specific to each day type
Success Criteria
v0.1 is successful when:
- I use it for every workout for 2 weeks
- Logging a set takes < 5 seconds
- I can see my bench/squat/deadlift progress charted
- The app doesn't confuse me or slow me down