A focused iOS and Android 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, run them live, log sessions, hit protein targets, track bodyweight, and count down to show day. It grew into a full training companion for iPhone, Apple Watch, and the home screen — and we still train together on the weekends, which keeps the feedback loop short and honest.
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 12 languages and four iOS product variants (LiftCortex, LiftCortex No Ads, CountdownCortex, and CountdownCortex No Ads — a focused spin-off for users who only want the countdown features).
The Android version is now on Google Play — Kotlin 2.0, Jetpack Compose, Material 3 expressive, Room + DataStore, Wear Compose, Glance widgets, Hilt. Same product, native idioms (predictive back, dynamic color, Quick Settings tiles), same on-device privacy story — built to parity with the iOS app.
Build templated routines and run them as guided live sessions — progress pinned to the top, skip or swap exercises mid-workout, and each machine remembers its own setting. Multi-set logging with weight, reps, notes, rest timers, plate calculator, and a 1RM estimator.
Daily intake against calorie/protein/carb/fat targets, streaks, and a calorie-ring widget. Search a 2,000+ food library that works offline and in every supported language. Built for cuts, bulks, and contest prep.
Bodyweight logged and charted over time, alongside macro history and workout trends. Read the direction the numbers are heading, not just today's figure.
Anatomical front and back figures show what each exercise trains, with common or Latin names. Tap a muscle to see what's working it.
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.
Tap plates onto a side-on bar silhouette and watch it fill in real time. Pairs toggle for asymmetric loads. Available inline on the workout screen, as a standalone utility, and as its own Home Screen widget.
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.
@MainActor isolationTab(); iOS 26 readyRunning a routine became a guided live session — current progress pinned to the top, skip/swap mid-workout, per-machine settings remembered. Added an anatomical muscle map (common or Latin names), a bodyweight log with trend charts, and a searchable 2,000+ food library that works fully offline.
Multi-module Gradle layout, Kotlin 2.0 / Jetpack Compose / Material 3 expressive, Room ↔ SwiftData parity, Wear Compose, Glance widgets — now live on the Play Store, built to feature-parity with the iOS app and native idioms throughout.
Tap plates onto a side-on bar silhouette, watch it fill in real time, long-press to remove. Pairs toggle for asymmetric loads. Surfaces inline on the workout run screen, as a standalone utility with its own Home Screen widget and deep-link scheme, and in Settings.
Multi-select starter-routines picker on the final page (Push / Pull / Legs / Upper / Full Body) — selections clone into WorkoutRoutine rows on completion. New background-mode and weight-units pickers with sensible system defaults.
String Catalogs auto-extraction, RTL/CJK polish, pluralization rules across en + ar, bn, de, es, fr, hi, id, pt-BR, ru, ur, zh-Hans. Translator pass on every UI string added between 1.2.0 and the latest cut — zero state=new, zero missing translations. App Store metadata refreshed across all 10 storefronts via fastlane.
Launch-crash fix when the App Store update checker's await resumed off-main and mutated @Published state — marked the relevant TatzelAppUtils protocols and coordinators @MainActor.
Extension surfaces the next countdown event in Apple's Smart Stack with battery-friendlier AlwaysOn timeline refresh.
Polite, non-blocking version check at launch (extracted to reusable TatzelAppUtils Swift package) and a contextual review prompt on positive moments. Send-Feedback entry in Settings → About.