Manual Planning
- Lifters rely on spreadsheets to calculate training maxes and percentages
- Planning multi-week periodized blocks is tedious and error-prone
Production iOS workout planner with offline-first architecture and automated App Store delivery

Live on App Store
27 migrations
5 training methods
LiftRoute is a production iOS app I designed, built, and operate end to end. The problem: lifters running structured strength programs plan multi-week cycles in spreadsheets. The engineering: an offline-first data architecture, a rule-based program-generation engine, and a fully automated release pipeline — every layer owned by one person, live on the App Store.
Structured strength training programs require precise calculations and multi-week periodization — but lifters were stuck managing it all in spreadsheets.
Design an offline-first SQLite schema to persist user profiles, exercise catalogs (100+ exercises), generated training programs, and workout session history — all on-device with no backend dependency. Implement a versioned migration system (27 migrations) with auto-generation from raw SQL files.
Architect a rule-based program generator that takes user preferences (goals, equipment, experience level) and applies goal-specific rulesets (Strength, Hypertrophy, Fat Loss, 5/3/1, APRE) to produce multi-week periodized training plans with exercise selection, set/rep prescriptions, and percentage-based loading.
Build an automated deployment pipeline using GitHub Actions (macOS 14 runner) and Fastlane to handle Ruby/Node setup, CocoaPods install, app icon generation, versioning, and TestFlight upload — triggered on push to main or manual dispatch.
Implement real-time workout logging with set/rep/weight tracking, session persistence via SQLite transactions, and cross-tab navigation so users can access active workouts from multiple entry points in the app.