// Workshop · LAB-12

MotionBridge.

Una app para iPhone, iPad y Apple Watch que se conecta a mi bicicleta estática por Bluetooth, muestra la sesión en vivo y la registra en Apple Health y Strava cuando termino.

También es mi primera app nativa en Swift y mi primer proyecto construido con OpenAI Codex. Codex escribió el código. Yo escribí la especificación y puse los pedales.

El ícono de MotionBridge, una rueda cuya línea termina en un punto verde de señal, sobre grafito

En algún momento entre el invierno pasado y este, la app que usaba con mi bicicleta dejó de funcionar.

Uso la bicicleta estática casi solo en invierno. Cuando volví a subirme este año, la app de siempre todavía abría, pero el servicio detrás ya no existía, y sin él la app no hacía nada. Miré las alternativas gratuitas y ninguna me convenció.

Lo que necesitaba era pequeño. Un puente que tome los números de la bicicleta y los lleve adonde ya vive mi entrenamiento, a Apple Health y a Strava, que a su vez los pasa a los otros servicios que uso. Hace unos años, ese hueco significaba conformarse con la app que hubiera. El mundo ha cambiado lo suficiente desde entonces como para que construir la mía pareciera lo obvio.

Es solo para mí, así que no hay planes de publicarla en la App Store. La instalo directamente en mi iPhone y mi Watch. También fue mi oportunidad de construir por primera vez una app totalmente nativa en Swift.

MotionBridge en iPad en modo claro, grabando una sesión con 186 vatios, cadencia de 84 rpm, 17,6 mph, 0,30 millas, un minuto grabado, frecuencia cardíaca de 138 y un gráfico de potencia reciente
iPad · Claro · Sesión en vivo con el gráfico de potencia reciente
MotionBridge en iPhone en modo oscuro, grabando una sesión con 186 vatios, cadencia de 84 rpm, 17,6 mph, 0,02 millas, cinco segundos grabados y frecuencia cardíaca de 138
iPhone · Oscuro · La misma sesión, la misma jerarquía

La potencia primero

En la bicicleta, la potencia es el número que importa, así que lleva la tipografía más grande de la pantalla. Todos los dígitos tienen el mismo ancho, así que pasar de 99 a 100 no mueve el diseño.

La frecuencia cardíaca desde la muñeca

Una app complementaria para Apple Watch se abre con la sesión y envía mi frecuencia cardíaca directamente a ella.

Cada sesión llega a su lugar

Al terminar, la sesión se guarda en Apple Health y Strava, y Strava la pasa a todo lo demás que uso.

Sigue grabando en segundo plano

Puedo cambiar de podcast o responder un mensaje en plena sesión y la grabación continúa.

Honesta con los datos viejos

Si la bicicleta deja de enviar, los valores se atenúan a los tres segundos y se borran a los treinta. Diez segundos de silencio pausan la grabación por sí solos.

Esta sesión, no la vida de la consola

Las consolas suelen acumular distancia. MotionBridge cuenta solo esta sesión y muestra el total de la consola aparte, con su propia etiqueta.

Grafito y Señal, donde un solo color significa en vivo y todo lo demás se aparta.

Las superficies de grafito llevan los números. El verde señal significa conectado y en vivo, el rojo se reserva para la grabación y el ámbar indica pausa o datos viejos. Ningún otro color compite con los datos.

La tipografía es la del sistema, con dígitos de ancho fijo y sin fuentes con licencia. La marca es una rueda cuya línea termina en un solo punto de señal, y los íconos oscuro, claro y teñido salen todos del mismo dibujo.

  • Background
  • Surface
  • Accent
  • Recording
  • Warning

Ya he construido bastante con Claude, pero no había probado Codex, y quería ver la diferencia en un proyecto real.

Volví de inmediato a mi antiguo papel de product manager. Escribí una especificación y un diseño de la solución, e investigué la marca y el modelo de la bicicleta y lo que su consola podía reportar, para sacarle el máximo provecho. Codex escribió todo el código. Disfruté leyéndolo y encontrando los huecos, como las optimizaciones que Xcode señaló y que Codex no había previsto.

También fui el banco de pruebas. Cada cambio significaba volver a la bicicleta y pedalear para ver si funcionaba.

Lo que más me impresionó fue la facilidad con la que aceptaba ideas nuevas una vez que lo básico funcionaba. Primero vino la versión para iPad, luego la grabación en segundo plano, para que la sesión siga mientras cambio de podcast o respondo un mensaje. Después, una pequeña app para Apple Watch que se abre sola y agrega mi frecuencia cardíaca a la sesión, algo que las otras apps nunca hicieron bien.

Ya funciona en mis dispositivos, y sigo ajustándola.

Lo siguiente es mi máquina de remo de agua. La estoy agregando para que una sola app sencilla cubra todos mis entrenamientos en casa. Sin anuncios ni suscripciones nuevas, solo mi tiempo de entrenamiento registrado.

← Volver al Workshop