A focused iOS training companion for lifters, athletes, and gym-goers. Plan splits, log sessions, track macros, countdown to show day — and run it all from your wrist.
LiftCortex started as a family project: my son Jonathan signed up for his first bodybuilding competition and needed better tooling than what existed — something to plan split routines, log sessions, hit protein targets, and count down to show day. It grew into a full training companion for iPhone, Apple Watch, and the home screen.
Everything runs on-device. No account. No subscription. iCloud sync handles backup; AppGroup snapshots feed the watch and widgets; share links let you import a friend's split with one tap. The app ships in 11 languages and four product variants (LiftCortex, LiftCortex No Ads, CountdownCortex, and CountdownCortex No Ads — a focused spin-off for users who only want the countdown features).
Build templated routines, log multi-set sessions with weight, reps, and notes. Rest timers, plate calculator, 1RM estimator, and celebration screens after a PR.
Daily intake against calorie/protein/carb/fat targets, streaks, meal-name history, and a calorie-ring widget. Built for cuts, bulks, and contest prep.
Custom icons, colors, and photos with crop/pan editor (rect/square/circle). Progress bars and percent displays for show day, deadlines, or any milestone.
Native watchOS 10 companion with Workouts, Macros, and Countdowns. Smart Stack widget surfaces your next event automatically. Crown-driven macro entry.
Automatic sync with merge-or-replace import. No account creation, no server-side data. Your training history is yours.
One-tap import for splits sent by link. Session recap cards for messaging or social. Countdown event sharing.
Localized via Swift String Catalogs with auto-extraction. Tested across right-to-left, declension-heavy, and CJK scripts.
Reorder features. Toggle units (lbs/kg). Move the nav top or bottom. Swap accent colors and contrast modes. Bring-your-own logging style.
A multi-target Apple monorepo with the iPhone app as the SwiftData source of truth. The watch and widget extensions
receive read-only snapshots through AppGroup files and WatchConnectivity — no server in the loop, no shared write
surface to fight over. XcodeGen generates the project from a single project.yml
so all four product variants stay in lockstep.
Tab()String Catalogs auto-extraction, RTL/CJK polish, pluralization rules, and translation auditing across the full feature set.
New extension surfaces the next countdown event in Apple's Smart Stack with AlwaysOn timeline throttling.
Migrated the navigation chrome to the new Tab API. Tab bar polish and iPad-width optimizations.
Polite, non-blocking version check at launch and a contextual review prompt on positive moments.
Settings split into per-section subviews; marketing screenshot capture orchestrated end-to-end.