/ home  ›  apps  ›  liftcortex
LiftCortex app icon

LiftCortex

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.

Built for execution, not subscription churn.

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, Android, 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.

Version 2.0 reached both stores in July 2026, on both platforms at once. Logging a meal no longer means typing: point the camera at a nutrition label and on-device text recognition reads the panel, or scan a barcode and the food is looked up for you — either way you review the extraction before it commits. The exercise library grew to 190 movements, each carrying its own short form cues, and every progress chart can now be expanded, scrubbed, and exported to CSV or PDF. Both apps ship under Tatzel Labs LLC, the studio I formed in 2026.

What it does.

📋

Workout Splits + Live Sessions

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.

🥩

Macro Tracking

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.

📷

Label & Barcode Scanning

Point the camera at a nutrition panel and on-device text recognition reads the values straight off it; or scan a barcode and the product is looked up for you. You review what was extracted before anything commits — the camera does the typing, you keep the final say.

📚

190-Exercise Library + Form Cues

A science-based movement library, each entry carrying short coaching cues for the thing people actually get wrong. Cues surface in-session and on long-press, and switch off entirely if you already know what you're doing. Cue text is English today.

📈

Progress, Trends & Export

Bodyweight logged and charted over time, alongside macro history and workout trends. Read the direction the numbers are heading, not just today's figure. Expand any chart to full screen to scrub it, or export your whole log to CSV or PDF — it's your data.

🗺️

Muscle Map

Anatomical front and back figures show what each exercise trains, with common or Latin names. Tap a muscle to see what's working it.

Countdown Events

Custom icons, colors, and photos with crop/pan editor (rect/square/circle). Progress bars and percent displays for show day, deadlines, or any milestone.

Apple Watch + Smart Stack

Native watchOS 10 companion with Workouts, Macros, and Countdowns. Smart Stack widget surfaces your next event automatically. Crown-driven macro entry.

☁️

iCloud Backup & Restore

Automatic sync with merge-or-replace import. No account creation, no server-side data. Your training history is yours.

🔗

Share Imports

One-tap import for splits sent by link. Session recap cards for messaging or social. Countdown event sharing.

🌍

12 Languages

Localized via Swift String Catalogs with auto-extraction. Tested across right-to-left, declension-heavy, and CJK scripts.

🏋️

Plate Calculator

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.

Customizable Everything

Reorder features. Toggle units (lbs/kg). Move the nav top or bottom. Swap accent colors and contrast modes. Bring-your-own logging style.

How it's built.

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.

Targets

  • iPhone app — primary SwiftData container
  • Watch extension — companion via WatchConnectivity
  • Widget extension — Smart Stack + home-screen widgets
  • 4 schemes — Lift / LiftNoAds / Countdown / CountdownNoAds

Data Flow

  • SwiftData on-device persistence
  • AppGroup snapshots feed widgets
  • WatchConnectivity bidirectional sync
  • iCloud backup + restore
  • Share links import flow

Release Pipeline

  • XcodeGen project regeneration
  • Bash preflight + release scripts
  • Automated marketing screenshots (iPhone 5.5/6.5/6.9", iPad 12.9/13", Watch 40–49mm)
  • App Store update check at launch

Tech.

Language & UI

  • Swift with strict-concurrency / @MainActor isolation
  • SwiftUI with custom design system
  • iOS 17+ / watchOS 10+; iOS 18 native Tab(); iOS 26 ready

Android (on Google Play)

  • Kotlin 2.0+, K2 compiler
  • Jetpack Compose + Material 3 expressive
  • Room + DataStore (Preferences + Proto)
  • Wear Compose + Glance widgets
  • Hilt DI · Coroutines + Flow · MVI
  • predictive back · dynamic color · Quick Settings tiles

Apple Frameworks

  • SwiftData
  • WidgetKit
  • WatchConnectivity
  • StoreKit 2 (IAP)
  • String Catalogs (.xcstrings)

Monetization

  • Google Mobile Ads SDK (AdMob + UMP)
  • StoreKit 2 in-app purchase
  • No-ads variants for paid users

Build & Ship

  • XcodeGen (project.yml as source of truth)
  • Bash release pipeline + preflight
  • Automated screenshot orchestration

Localized to

English Spanish French German Portuguese (BR) Russian Arabic Urdu Hindi Bengali Indonesian Simplified Chinese

What's been shipping.

2.0 — scan a label, skip the typing

The 2.0 release went to both stores in July 2026. Macro logging got a camera: on-device text recognition reads a nutrition panel directly, and barcode scanning resolves the product against an open food database — with a review step before anything is written, because an OCR guess should never quietly become your data. Built on VisionKit on iOS and the equivalent native path on Android, so the feature landed on both platforms rather than iOS-first.

Exercise library 73 → 190, with form cues

The movement library nearly tripled, rebuilt around what the training literature actually supports, and every one of the 190 entries carries its own short form cues — the correction that matters for that lift. Cues appear in-session, on long-press, and can be turned off completely. Cue text is English today; the translation pass rides the next localization batch rather than shipping half-translated.

Charts you can open, scrub, and take with you

Every progress chart expands to full screen for scrubbing and landscape reading, and the whole log — workouts and macro history alike — exports to CSV or PDF. The app holds no account and no server-side copy, so export is the honest way to make the data portable: it's yours, take it.

Live sessions, muscle map, and bodyweight trends

Running 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.

Android shipped to Google Play

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.

Plate Calculator (inline, standalone, widget)

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.

Onboarding overhaul

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.

Internationalization to 12 languages

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.

iOS 26 strict-isolation hardening

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.

watchOS Smart Stack countdown widget

Extension surfaces the next countdown event in Apple's Smart Stack with battery-friendlier AlwaysOn timeline refresh.

App Store update check + review prompts

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.