Planificar
Organizar mesociclos, semanas y días. Relacionar una rutina con un bloque o registrar un día libre.
Ver la estructura · parte 05Project: Better · Aplicación de entrenamiento
Cada serie,
un paso más.
Del plan a la última repetición. Una app que conecta la planificación por ciclos, el registro del entrenamiento y la revisión del progreso.
Proyecto personal · Desarrollo móvil y backend · React Native + NestJS
Project: Better
01 / Contexto
Project: Better · Aplicación de entrenamiento
Del plan a la última repetición. Una app que conecta la planificación por ciclos, el registro del entrenamiento y la revisión del progreso.
Empezar: ProductoDesarrollo móvil y backend · React Native + NestJS
Tipo
Proyecto personal
Ámbito
Frontend móvil + API + datos
Estado
En desarrollo
Tecnologías
Expo · NestJS · Prisma · PostgreSQL
02 / El producto
Empieza con un plan. Continúa al registrar lo que hiciste. Y cobra sentido cuando puedes volver a consultarlo.
Project: Better organiza esa continuidad: bloques y semanas de entrenamiento, ejercicios con sus series y un historial para revisar las sesiones y los récords personales.
Organizar mesociclos, semanas y días. Relacionar una rutina con un bloque o registrar un día libre.
Ver la estructura · parte 05Añadir ejercicios y series. Introducir peso, repeticiones y RIR con un teclado integrado en la pantalla.
Ver el flujo · parte 04Volver a un día en la bitácora y consultar vistas de récords y evolución de los levantamientos.
Ver la revisión · parte 0603 / Un recorrido real
Estas capturas vienen de una grabación real de uso de la app, revisada fotograma a fotograma. Muestran las áreas principales antes de entrar en el detalle de planificar un bloque y preparar un día.
Estrategia también organiza los mesociclos en planificados y completados —se ve en detalle en Planificar un bloque (parte 05)— y el menú de Historial aparece completo en La memoria (parte 06).
Capturas reales de la app, no maquetas ni ilustraciones, tomadas de una grabación de uso revisada fotograma a fotograma. Fecha de grabación y versión de la app todavía sin confirmar.
El acceso reúne correo, contraseña y una alternativa con Google. La captura no demuestra cómo se validan ni protegen las credenciales.
Inicio resume el total SBD y las marcas por levantamiento.
El catálogo de ejercicios, con buscador y opción para crear uno nuevo.
Ficha técnica de un ejercicio (parte superior): datos anatómicos y de planificación.
Ficha técnica (parte inferior): tipo de ejercicio, carga lumbar y prioridad sugerida.
Entrenar ofrece ejecutar el bloque planificado o iniciar una rutina en blanco. La grabación muestra estas opciones: no llega a ejecutar un entrenamiento.
Paso 01 de 06
La rutina parte vacía: el siguiente paso nace dentro del planificador mediante «Añadir ejercicio».
«Añadir ejercicio» abre un selector contextual dentro de la planificación; no corresponde al catálogo general.
El selector muestra la opción escogida antes de cerrar y añadirla al contenido de la rutina.
El selector se cierra y la app crea la tarjeta de «Aperturas de pecho en máquina» con sus filas todavía vacías.
Cada fila recibe un tipo —aproximación, efectiva ligera, efectiva— antes de ingresar los valores.
Carga, repeticiones y RIR completos para las tres series del primer ejercicio.
La rutina queda completa —dos ejercicios, cinco series— antes de guardar el día.
La app confirma «Día planificado guardado» y vuelve al detalle del Mesociclo #2. El video no vuelve a abrir el día: no demuestra que la rutina exacta se haya recuperado completa.
Paso 01 de 08
04 / La interacción
Preparar un día de entrenamiento parte con una rutina en blanco: «Añadir ejercicio» abre un selector contextual, la opción escogida se confirma dentro de ese menú y recién entonces aparece como una tarjeta editable. No es un salto al catálogo general.
Un teclado numérico propio, controles para añadir y reordenar series y el guardado del día convierten este flujo en una buena muestra del trabajo de frontend móvil. Todavía no hay evidencia en video del mismo registro durante una sesión en curso.
Decisión y detalle: revisión de código, no del video.
05 / La estructura
El modelo conecta cinco niveles. La API incluye reglas para ordenar semanas, ajustar fechas y mantener relaciones entre los elementos del plan. Estas tres capturas muestran el tramo Mesociclo → Microciclo → Semana, ya con evidencia real.
Confirma la creación del bloque: Mesociclo #2 queda planificado junto al Mesociclo #1 ya completado.
Dentro del bloque, configura la fase y la duración antes de crear el primer microciclo.
El microciclo queda creado: Semana 1 de Introducción, del 17 al 23 de septiembre.
Paso 01 de 03
06 / La memoria
La grabación permite consultar evolución por ejercicio y abrir el detalle de sesiones anteriores. Muestra valores visibles; no comprueba su persistencia ni la exactitud de las estimaciones.

Historial separa récords, bitácora, progreso y estadísticas.

Evolución alterna ejercicio, métrica y rango; aquí muestra peso real de Squat entre dos bloques visibles.

Una sesión expandida deja ver carga, repeticiones y RIR de tres series de remo.

Otra sesión conserva el mismo desglose para tres series de press banca.
Paso 01 de 04
07 / Una capa más abajo
La misma acción atraviesa interfaz, estado local, API y base de datos. Aquí se puede leer cómo está resuelto el guardado actual.
Ruta A / Envío directo
Ruta B / Cola pendiente
El aislamiento por cuenta y la consistencia del guardado requieren mejoras antes de prometer funcionamiento offline completo.
Diagrama basado en el código. No ejecuta la app ni realiza peticiones a su backend.
El frontend separa pantallas, componentes, hooks y servicios. El backend organiza autenticación, ciclos, días, sesiones, series, récords y dashboard en módulos. Los ajustes de calendario usan transacciones; el reemplazo del día necesita todavía agrupar su borrado y creación en una transacción.
Hay JWT, almacenamiento de credenciales en SecureStore y refresh tokens opacos cuyo hash se persiste en el servidor. Los refresh tokens rotan y se revocan por familia ante reutilización. El access token actual dura 30 días: revocar la familia de refresh tokens no invalida de inmediato un JWT ya emitido.
Reforzar el guardado: asociar los pendientes a su cuenta, propagar los errores de escritura local y hacer atómica la sustitución del día. Después, comprobar el recorrido completo de pérdida y recuperación de conexión en el teléfono.
08 / Evidencia y estado
Una revisión local del 7 de septiembre de 2026 permite separar el código comprobado de lo que muestran las grabaciones y de lo que aún falta comprobar en una sesión real y sin conexión.
21 suites unitarias pasan en la revisión local.
3 suites pasan con dependencias y hooks simulados.
Frontend y backend sin errores de TypeScript.
Estas cifras describen una ejecución local, no un porcentaje de cobertura ni una prueba de rendimiento en un teléfono. Las pruebas E2E no se ejecutaron en esta revisión.
Selección editorial completa del lote. Las capturas y los tres montajes vienen de los cuatro videos de uso disponibles (0001–0004), analizados fotograma a fotograma el 16 de septiembre de 2026. Esa es la fecha del análisis, no la fecha de grabación, que sigue sin confirmar, igual que la versión instalada. Los montajes son derivados mudos y editados: conservan las cargas cuando forman parte de la transición mostrada y no convierten los valores visibles en prueba de persistencia, exactitud o rendimiento.
Crear el mesociclo, configurar su semana, preparar dos ejercicios y guardar el día.
Inicio, bloques, catálogo, ficha técnica, opciones para entrenar e Historial.
Récords, seis estados de progreso y dos sesiones abiertas en la bitácora.
Este proyecto permite conversar sobre diseño de interacción, desarrollo móvil, contratos de API y consistencia de datos: distintas partes de una misma solución de software.