Caso · App Android publicada
ARX: la app que decide cuánto peso poner hoy
App Android de gimnasio, cardio y nutrición publicada en Google Play. Registra cada serie, detecta récords en directo y propone la carga de la siguiente sesión. La he desarrollado en solitario con asistentes de IA durante 13 meses, y la usan 14 personas.
La app real, en 80 segundos
El problema
Quien entrena fuerza con constancia apunta pesos y repeticiones en una libreta, una hoja de cálculo o una app genérica. Las tres fallan en lo mismo: no te dicen qué hacer hoy. Saber si toca subir peso exige recordar la última sesión, cuántas repeticiones te sobraron y si aquello fue un récord.
Qué hace
- Rellena cada ejercicio con la carga propuesta. Al marcar el RIR (repeticiones en reserva) la serie se completa y arranca el descanso.
- Compara cada serie con tu historial y avisa del récord en ese momento, no al final.
- Con el RIR de la última serie propone subir la carga (+1,25 kg en tren superior, +2,5 kg en inferior) o mantenerla.
- Racha semanal, media móvil del peso corporal y previsión por regresión de cuándo llegarás a tu objetivo.
Los datos del usuario, a salvo
Si falla la sincronización incremental, se hace una completa. Es preferible gastar lecturas a perder datos.
- Room es la fuente de verdad y Firestore el espejo. La app funciona sin cobertura, algo habitual en un gimnasio en un sótano.
- El camino incremental nunca borra. Solo la sincronización completa reconcilia ausencias, y solo en local.
- Upsert, nunca REPLACE, en el catálogo de alimentos: un borrado más inserción dispararía el borrado en cascada del diario de comidas.
- Sin migraciones destructivas: si falta una migración, la app falla en lugar de borrar la base del usuario.
- Reglas fuera de Android. Récords, progresión, racha y previsión viven en objetos puros probados en milisegundos. Por eso se pudieron portar tal cual a JavaScript para la demo.
Coste bajo control
La app funciona en el plan gratuito de Firebase. Una auditoría de cuota detectó 234.000 lecturas al mes con 14 usuarios activos: había margen, pero el consumo crecía con cada usuario. Añadí un contador de lecturas por dominio y un cursor incremental para las sesiones. Una pasada de sincronización pasó de unas 2.800 lecturas a 52.
La IA dentro del producto (analizar la foto de un plato, resumir un entrenamiento) usa Gemini mediante Firebase AI Logic, con un modelo de respaldo si el principal falla.
Qué es real y qué es demo
| Parte | En la demo | Detalle |
|---|---|---|
| Reglas de récords, progresión, racha y previsión | Real | Portadas a JavaScript con las mismas constantes que la app. |
| Historial, perfil y pesadas | Sintético | Perfil «Alex Demo» generado con semilla fija. |
| Interfaz | Sintético | Recreación inspirada en la app; no es la app Android. |
| Sincronización, cuentas, IA, GPS, nutrición y Health Connect | No incluido | Existen en la app, fuera del flujo de dos minutos. |
Resultados
Limitaciones y siguientes pasos
- Sin tests de interfaz: lo visual se valida en el móvil. Siguiente paso, tests instrumentados de los flujos críticos.
- Aún no hay un modo 100 % local sin cuenta.
- Deuda heredada de colores y textos sin centralizar, que se va sustituyendo.
Capturas de la app real
Grabación real de la app en un Pixel 8.







