Skip to content
app 2026

Southpaw

Boxing Round Timer

Round timer for boxing, MMA, Muay Thai and HIIT in SwiftUI: niche picked from ASO data, TDD engine, and an App Store listing built entirely through the API

View on the App Store
Stack
Swift · SwiftUI · StoreKit 2 · XCTest · iOS
Southpaw

A round timer for combat sports. The interesting part is not the timer: it is that everything, from the niche to the App Store listing, was decided with data and automated.

The niche came out of an ASO funnel: utility keywords measured per country with real popularity and difficulty. “Boxing timer” scores 38/17 in Canada and 50/23 in Australia — the same search intent as the US (49/68) at a fraction of the difficulty. The launch strategy is to rank where ranking is cheap.

The engine is a state machine with an injectable clock and date-based math — it never decrements ticks, so it survives backgrounding and missed ticks: one late tick crosses several phases without losing a second. Built with strict TDD (30 unit tests + 3 XCUITest E2E runs covering the full session), it includes variable round patterns: pyramids and ladders with a per-round preview.

The bell rings with the iPhone on silent and the app in the background (AVAudioSession playback mode); the sounds — bell, clacker, air horn — are synthesized in code, no external assets. The UI is a pixel-match of a mock measured by dominant color, with Liquid Glass on iOS 26 and a solid fallback down to iOS 17.

The App Store listing was built entirely against the App Store Connect API: marketing screenshots composed by script, long-tail metadata, a one-time-purchase IAP priced and available in 175 territories, and the archive signed and uploaded headless. Zero clicks in Apple’s web UI except creating the app record, which the API does not allow.

Next project
LiftIQ