A progressive web application for tracking Upper/Lower body split workouts. Built with vanilla HTML, CSS, and JavaScript with local storage persistence.
- 4-Day Upper/Lower Split - Organized workout rotation (Upper A, Lower A, Upper B, Lower B)
- Exercise Management - Add, edit, delete, and reorder exercises
- Quick Edit Mode - Rapidly update current weight and reps with ⚡ button
- Progress Tracking - Track current weight, reps, sets, rest periods, and weight progression
- Workout Completion - Mark workouts complete and auto-advance to next workout
- Exercise Pairing - Sync common exercises between Upper A/B and Lower A/B automatically
- Local Storage Persistence - All data saved automatically in browser
- Export/Import - Backup and restore workout data, history, and streaks as JSON
- Backward Compatibility - Imports both old (workout data only) and new format (includes history)
- Workout History - Complete calendar view of all completed workouts
- Streak Counter - Track consecutive weeks of completing all 4 workouts
- Monthly Stats - See total workouts completed in current month
- Visual Calendar - Days with workouts highlighted in gold
- Dark Mode - Toggle between light and dark themes (remembers preference)
- Mobile Optimized - Fully responsive design for phone, tablet, and desktop
- Color Syntax - Add colored text in tips/notes with
*red*text*red*,*blue*text*blue*, etc. - Tab Checkmarks - Visual indicators show completed workouts for the week
- Auto-progression - Automatically switches to next incomplete workout
Each exercise tracks:
- Exercise name
- Tips and form cues
- Target muscle
- Machine position
- Starting side (for unilateral exercises)
- Sets, reps, and rest periods
- Weight progression guidelines
- Go to failure flag (with DROP SET support)
- Current weight and rep performance
- HTML5 - Semantic markup with extensive educational comments
- CSS3 - Custom properties, flexbox, grid, responsive design
- Vanilla JavaScript - No frameworks, pure ES6+
- Local Storage API - Client-side data persistence
- Progressive Web App - Can be installed on iOS/Android home screen
- Open
index.htmlin a web browser - Or serve with any local server:
python3 -m http.server 8000
- Open the app in Safari
- Tap the Share button
- Select "Add to Home Screen"
- The app will appear as "Workout Tracker" on your home screen
- Click the gold
+button (bottom right) - Enter exercise name
- Click "Add Exercise"
- Use "Edit" button to fill in all exercise details
- Navigate to your current workout tab
- Update weights/reps as you complete exercises
- Click "✓ Complete [Workout]" button when done
- App auto-advances to next workout in sequence
- Use the purple ⚡ (lightning) button for rapid weight/rep updates
- Regular "Edit" button for full exercise editing
- Up/down arrows to reorder exercises
- Click the 📅 calendar button (bottom left)
- View streak and monthly stats
- Navigate between months with ◄ ► buttons
- Days with workouts are highlighted in gold
- Today's date has a gold border
- Export: Downloads JSON file with all data, history, and streaks
- Import: Restores from JSON backup file
- Files are named
workout-data-YYYY-MM-DD.json
All data is stored in browser localStorage with three main objects:
{
"upperA": [{ exercise objects }],
"lowerA": [{ exercise objects }],
"upperB": [{ exercise objects }],
"lowerB": [{ exercise objects }]
}{
"upperA": "2026-01-12T10:30:00.000Z",
"lowerA": null,
"upperB": null,
"lowerB": null,
"weekStart": "2026-01-06T00:00:00.000Z"
}[
{
"date": "2026-01-12T10:30:00.000Z",
"workout": "upperA"
}
]The app includes extensive mobile-specific styling:
- Responsive button sizing and positioning
- Flexbox reordering (buttons above titles on mobile)
- Text wrapping and overflow prevention
- Touch-friendly button targets
- Optimized calendar grid for small screens
- Scrollable modals with proper viewport handling
- Chrome/Edge (latest)
- Safari (latest)
- Firefox (latest)
- Mobile Safari (iOS 12+)
- Chrome Mobile (Android 6+)
workout-tracker/
├── index.html # Main HTML with teaching comments
├── style.css # Styling with CSS variable system
├── script.js # Core functionality
├── CLAUDE.md # Development guidelines
└── README.md # This file
- Code includes extensive educational comments
- CSS uses custom properties (CSS variables) for theming
- Follows semantic HTML principles
- Mobile-first responsive design approach
- No external dependencies or frameworks
Potential features to add:
- Exercise templates/library
- Rest timer between sets
- Workout duration tracking
- Charts and progress graphs
- Exercise notes/PR tracking
- Exercise video links
- Custom workout templates
Personal project - free to use and modify.