Saltar al contenido
app 2026

Southpaw

Boxing Round Timer

Timer de rondas para boxeo, MMA, muay thai y HIIT en SwiftUI: nicho elegido con datos ASO, motor con TDD y ficha de App Store montada entera por API

Stack
Swift · SwiftUI · StoreKit 2 · XCTest · iOS
Southpaw

Timer de rondas para deportes de contacto. Lo interesante no es el timer: es que todo el proyecto, del nicho a la ficha del App Store, está decidido con datos y automatizado.

El nicho salió de un embudo ASO: keywords de utilities medidas por país con popularidad y dificultad reales. «Boxing timer» puntúa 38/17 en Canadá y 50/23 en Australia — la misma intención de búsqueda que en EE.UU. (49/68) a una fracción de la dificultad. La estrategia de lanzamiento es rankear donde es barato.

El motor es una máquina de estados con reloj inyectable y cálculo por fechas — no decrementa ticks, así que sobrevive al background y a los ticks perdidos: un tick tardío cruza varias fases sin perder un segundo. Escrito con TDD estricto (30 tests unitarios + 3 E2E con XCUITest que recorren la sesión completa), incluye patrones de rondas variables: pirámides y escaleras con preview por ronda.

La campana suena con el iPhone en silencio y con la app en background (AVAudioSession en modo playback); los sonidos —campana, clacker, bocina— están sintetizados por código, sin assets externos. La UI replica píxel a píxel un mock medido por color dominante, con Liquid Glass en iOS 26 y fallback sólido hasta iOS 17.

La ficha del App Store se montó entera contra la API de App Store Connect: screenshots de marketing compuestos por script, metadata long-tail, IAP de compra única con precio y disponibilidad en 175 territorios, y el archive firmado y subido en headless. Cero clicks en la web de Apple salvo crear el app record, que la API no permite.

Siguiente proyecto
LiftIQ