Kaden MacLean
WorkAboutNowWritingContact
All work

In development · April 1, 2026

Zenith

Native macOS hypertrophy log — local-first, keyboard-first, built for lifters who actually plan their training.

zenith — Upper Day · Week 4
Bench PressPR
100×8100×8105×7
Incline DB
35×1035×1035×9
Pull-up
BW×10BW×10BW×9
Cable Fly
20×1220×12

Zenith is a native macOS workout tracker I built for myself and other serious lifters who want a real desktop tool instead of squinting at a phone between sets. Everything lives on your Mac — no cloud, no account, no sync service reading your training data. The whole thing is SwiftUI on top of SwiftData, built around the idea that planning and reviewing a training block is a desktop activity, not a phone one.

The model is template-first. You define a workout template once (exercises, target sets, rep ranges, RIR), assemble templates into a weekly program, and launch a session from any day of that program with one click. When a session starts, Zenith pre-fills the set scaffolding from the template so the logger loads ready-to-fill instead of empty. PRs are evaluated on every committed set — not recomputed on open — which keeps the logger snappy even with years of history loaded.

I care a lot about the keyboard experience. ⌘K opens a command palette, ⌘⇧N starts a blank session, Return commits a set, Space toggles the rest timer. The rest timer floats as a HUD so you can glance at it from any view in the app. Import/export is plain JSON — your data is yours, and if I ever abandon this thing you can walk away with it.

The current build ships with a seeded "Dragon Build" 4-day upper/lower program, a 100+ exercise library with muscle attribution, and a per-muscle weekly volume view so you can spot imbalances before they become injuries. The next direction I'm pushing on is fatigue estimation — using RIR history, session density, and per-muscle volume to suggest when a deload is actually earned instead of just when the calendar says so.