A progressive web app (PWA) for tracking Madcow 5×5 strength training workouts with intelligent deload recommendations and detailed progress analytics.
Forge is a minimalist, offline-capable workout tracker inspired by the Madcow 5×5 strength training protocol, but designed with flexibility for busy schedules.
Unlike traditional Madcow which requires strict weekly scheduling (Mon/Wed/Fri), Forge lets you train whenever your schedule allows while maintaining the periodized progression structure. It automatically calculates warm-up sets, tracks session progress, detects failed reps, and recommends deloads based on training science.
Built with vanilla JavaScript and hosted on Azure Static Web Apps, Forge works on any device with a web browser - no installation required.
Production: https://happy-pond-003313103.7.azurestaticapps.net
Development: https://agreeable-pond-07ec37b03.7.azurestaticapps.net
Madcow 5×5 is an excellent periodized strength program, but its rigid weekly schedule (Session A on Monday, B on Wednesday, C on Friday) didn't fit a busy lifestyle with irregular training availability.
Forge was built to solve this: take the proven training principles of Madcow (3-week periodization cycles, intelligent progression, strategic deloads) but remove the calendar constraint. Train whenever you can - Forge tracks your cycle progress, not the day of the week.
The result is a flexible, schedule-agnostic training tracker that maintains training integrity while adapting to real life.
- Automated Warm-up Calculation - Generates sets at 40%, 50%, 60%, 80% based on your working weight
- Madcow 5×5 Protocol - Three-week cycles (Session A/B/C) with automatic progression
- Intelligent Deload System - Recommends deloads after 2 consecutive session failures OR every 9 weeks (3 cycles)
- Progressive Set Unlock - Sets 2-5 are greyed out until previous sets are marked
- Auto-Progression - +2.5kg added to all lifts after each C session cycle
- Session Tracking - Mark sets as done (✓), failed (✗), or reset
- Rest Timer - Customizable rest periods between sets (default: 3 minutes)
- Plate Calculator - Instantly see plate combinations needed for your target weight
- Progress Indicators - Visual progress bar showing completion percentage
- Compact Layout - Exercise detail fits on one screen without scrolling
- Progress Charts - Track max working weight over time for each lift
- Session History - Calendar view of all completed workouts
- Volume Tracking - Total volume per session
- Missed Reps Counter - Auto-detect when sets aren't fully completed
- Stall Detection - Track consecutive failures for each lift
- Progressive Web App (PWA) - Works offline, installable on home screen
- Google Sheets Integration - Sync all session data to your own Google Sheet
- Local Storage - All data stored locally, synced to Sheets on demand
- Responsive Design - Works on phones, tablets, and desktops
- Dark/Light Mode - System preference detection with manual toggle
Forge implements a periodized strength training system inspired by Madcow 5×5, but with flexible scheduling. Train whenever your schedule allows - the app tracks your cycle progress, not calendar days.
The program cycles through three session types (A, B, C) repeated over three weeks. You can train these in any order based on your availability.
Session A (3x per week)
- Squat: Warm-ups → 4×5 + 1×5+ (AMRAP)
- Bench: Warm-ups → 4×5 + 1×5+ (AMRAP)
- Row: Warm-ups → 4×5 + 1×5+ (AMRAP)
Session B (Light squat focus)
- Squat Light (80%): Warm-ups → 1×5
- OHP: Warm-ups → 4×5 + 1×5+ (AMRAP)
- Deadlift: Warm-ups → 1×5
Session C (Heavy - highest intensity)
- Squat Heavy: Warm-ups → 4×5 + 1×5+ + 1×3 + 1×8
- Bench Heavy: Warm-ups → 4×5 + 1×5+ + 1×3 + 1×8
- Row Heavy: Warm-ups → 4×5 + 1×5+ + 1×3 + 1×8
- After each C session: All working weights +2.5kg
- Deload (every 9 weeks): All weights -10% for one full session, then resume normal progression
- If failing on C session: Auto-deload that specific lift by 10%, reset missed reps counter
No installation needed! Visit the production URL in your browser:
https://happy-pond-003313103.7.azurestaticapps.net
- Open Forge in your browser
- iOS: Tap Share → Add to Home Screen
- Android: Tap Menu → Install app (or Add to Home Screen)
- Enter your current working weights for each lift
- Choose your bar weight (default: 20kg)
- Set your preferred rounding (default: 2.5kg)
- Customize rest period (default: 180s = 3 min)
- Go to "Workout" tab
- Tap an exercise to open detail view
- Complete warm-up sets, then working sets
- Mark each set: ✓ (done), ✗ (failed), or leave blank
- Sets 2-5 unlock only after previous set is marked
- When all sets marked, "Log Session" button appears
- Review summary and confirm
Forge recommends deloads based on two triggers:
1. Failure-Based Deload
- Triggered when a single lift fails 2 consecutive sessions
- Reduces that lift by 10% for the next session
- Resets missed reps counter when accepted
- User can accept or decline (skips for 2 weeks if declined)
2. Scheduled Deload
- Triggered every 9 weeks (after 3 complete A-B-C cycles)
- Reduces all lifts by 10% for one full session
- User can accept or decline
The Progress tab shows:
- Weight Progression - Line chart of max working weight over time
- Per-Lift Analytics - Separate charts for each major lift
- Missed Reps - Counter showing consecutive failures
- Session Count - Total workouts logged
- Current Cycle - Which week of the 3-week cycle you're in
Sync your workouts to a personal Google Sheet:
- Settings → Connect to Google Sheets
- Authenticate with your Google account
- App creates/uses existing sheet named "Forge"
- Every logged session automatically syncs
- Separate sheets for dev/production versions
- Full session data: date, session type, lifts, weights, reps, volume
Workout Settings
- Bar Weight - Loaded bar weight (default: 20kg)
- Rounding - Weight increment for plates (default: 2.5kg)
- Rest Timer - Rest between sets in seconds (default: 180s)
Data
- Reset All Data - Clears local storage (use with caution!)
- Google Sheets - Connect/disconnect account
The app automatically tracks when you don't complete all reps:
- If any working set isn't marked as done OR failed → counts as missed
- Two consecutive missed sessions on same lift → triggers deload recommendation
- Successfully completing all reps → resets missed counter to 0
- Tracked per-lift, not per-session
- Frontend: HTML5, CSS3, Vanilla JavaScript
- Storage: LocalStorage (browser) + Google Sheets (cloud sync)
- Hosting: Azure Static Web Apps
- Authentication: Google OAuth 2.0
- APIs: Google Sheets API v4, Google Drive API
- Modern browser with ES6 support
- LocalStorage enabled
- For sync: Google account (optional)
Forge works completely offline:
- All data stored locally in browser
- Workouts can be logged without internet
- Google Sheets sync happens when online
- No data loss if offline
git clone https://github.com/pajeffery/531-tracker.git
cd 531-tracker- main - Production (deployed to happy-pond-*.azurestaticapps.net)
- dev - Development (deployed to agreeable-pond-*.azurestaticapps.net)
- Open
index.htmlin a modern browser - All features work locally with LocalStorage
- Google Sheets sync requires OAuth setup (see below)
- Create Google Cloud project
- Enable Google Sheets API & Google Drive API
- Create OAuth 2.0 Client ID (Web application)
- Add authorized JavaScript origins:
https://happy-pond-003313103.7.azurestaticapps.nethttps://agreeable-pond-07ec37b03.7.azurestaticapps.nethttp://localhost:8000(for local testing)
- Update
GOOGLE_CLIENT_IDin index.html
- Push to
main→ Automatically deploys to production - Push to
dev→ Automatically deploys to dev environment - Uses Azure Static Web Apps CI/CD
Possible future enhancements (not implemented):
- Full-screen workout mode
- Multiple training programs (Stronglifts 5x5, 5/3/1, etc.)
- Voice commands for marking reps
- Social features (share progress)
- Advanced analytics and body weight tracking
- Mobile app versions
- Strength standards/leaderboards
MIT License - See LICENSE file for details
Found a bug or have a feature request?
- Check existing Issues
- Create a new issue with details
- Pull requests welcome!
- Issues: GitHub Issues tab
- Questions: Open a Discussion (coming soon)
Built with the Madcow 5×5 protocol and designed for strength athletes focused on functional fitness and lean gains.
Powered by vanilla JavaScript, Azure Static Web Apps, and Google Sheets.