Skip to main content
← Building
KB POMO app icon
Product Design · iOS2026In Progress

KB POMO:
Kettlebells Through the Workday

SwiftUIAlarmKitLive ActivitiesWidgetKitwatchOSHealthKitSwift ChartsSwift Testing

The idea

A pomodoro timer breaks work into blocks with short breaks. KB POMO fills the breaks with one kettlebell set. Eight sets over eight hours means one set an hour, and the first rings the moment I open the app.

The header says where I am in the day: "Set 3 of 8 · Next in 42:10." Everything else on the screen is the set in front of me.

Workout screen for set 3 of 8 with a countdown to the next set, a Single-Arm Front-Rack Squat card, a watch-off warning, a demo video button, and empty rep and weight fields.
The current set with demo and log fields.

Setup

Setup asks four things: level, one bell or a pair, how many sets, and over how many hours. The app then shows the exact exercises it will use. I can change any of them or shuffle the list, and what I see is what starts.

Saved routines keep those choices. A routine can replay the same exercises every time or draw a new mix.

Setup screen showing level, one bell or a matched pair, sets, hours, and the list of chosen exercises with Change and Shuffle options.
Workout setup with the exercise list.

How it picks exercises

The library holds 50 exercises across three levels. Each workout opens with a full-body move as a warm-up, then cycles five movement patterns: hinge, push, squat, pull and core. Within a pattern it picks the move I have used least. Favorites come up about twice as often. Short days of four sets or fewer use only full-body moves.

With a pair of bells, it mixes single- and double-bell exercises.

One set

Each card has a demo video under two minutes. Thumbs down on a bad video shows the next of up to three picks, and thumbs up pins a good one.

Logging takes reps (or seconds for a hold) and bell weight, prefilled from last time. A timer runs during the set, and only timed sets go to Apple Health, because Apple rejects estimated workout data.

If an exercise doesn't suit my space or body, Swap lists moves that work the same pattern.

The same exercise card after a 47 second timed set, with 9 reps and 40 lb entered, a Log set button, and Swap exercise and Skip it links.
A timed set, ready to log.
Choose an exercise list filtered to Legs, showing squat, deadlift and lunge variations with level and muscles worked.
Picking a replacement, filtered to legs.

Finding an exercise

Search matches names, muscles, body regions, gym slang like "tris" and "delts," and typos like "tricepts." Any exercise can be logged as a one-off set.

Exercises search for the misspelled word tricepts, returning 19 press exercises that work the triceps.
Search finds triceps despite the typo.

Alarms, lock screen and watch

A reminder I can ignore doesn't work. Sets ring like an alarm through Apple's AlarmKit, with an Open button that jumps to the set. The lock screen shows the next exercise with a countdown. Home and lock screen widgets show the next set and the day's totals.

The watch app shows the current set, logs reps with the Digital Crown, and warns a minute early when the exercise needs the watch off, such as overhead presses and floor presses.

History

History lists each day with the weight I moved: reps × bell weight × sides × bells. A day opens to a stat grid, a timeline I can scrub, and bars by body region that filter the page. Tapping any set opens that exercise's progress chart, with the bell weight marked wherever it changed.

Export saves every set to a spreadsheet, and Apple Health gets one strength workout per day built from the timed sets.

History screen with a bar chart of weight moved per day and a list of logged sets grouped by day.
Weight moved per day, and each logged set.
Day detail for Tuesday, September 29 with a grid of sets, reps, pounds moved, calories, time under load and new bests, and a chart across the day.
One day's totals and a chart across the day.
Progress chart for Single-Arm Swing showing reps over time with labels where the bell weight changed, above a list of past sets.
Reps over time, with bell weight changes marked.

Privacy

Data stays on the phone and watch. There is no account and no server. Privacy policy.

Status

Built in SwiftUI and tested on my iPhone, with 43 automated tests. Next: the App Store listing. The app will be free, with an optional tip jar.