NUTRISYNCBuilders Hub
🏠 🛠

44 · Actividad 360 — el tracker propio

Idea de Juanjo (24-ago): que ella pueda registrar sus paseos, carreras y pasos dentro de NutriSync — como haría en Strava o Runna, pero sin salir de aquí. Epic O, tramo nuevo O7. Este doc responde a las dos preguntas: qué construiríamos y con qué piezas open-source se puede hacer sin añadir un solo vendor de pago.

La idea, y por qué encaja

NutriSync ya entiende su ciclo, su comida y su descanso. Le falta el movimiento capturado, no tecleado: hoy el checklist pregunta «¿qué entrenaste?», y la respuesta honesta muchas veces es «déjame mirar el otro app». Una aplicación 360 cierra ese hueco: el teléfono es el sensor (GPS + podómetro), el paseo alimenta el anillo del día y la usuaria no necesita otra app si no quiere.

El reloj ya está cubierto — y no por este tramo. Lo que ella grabe con su Apple Watch o Garmin entra en Salud, y O1 (firmado hoy en la UST-06) lo lee de ahí. O7 es para quien no tiene reloj, o quiere el mapa y el directo en nuestra app. Y la app de reloj propia es O6, ya decidida (Juanjo, 24-ago): habrá apps de watchOS/Wear OS con alertas, capturas simples y entreno desde la muñeca — su diseño está por definir y el doc 45 abre esa conversación.

El listón: qué hacen las apps de referencia, y qué es esencial

Instrucción de Juanjo: mirar Strava, Runna, Nike Run Club y las apps de pasos como ejemplos — lo nuestro sería mucho más simple, pero las features esenciales tienen que estar.

De ahí, las esenciales que sí van: registro en vivo con mapa · agregación de actividades (historial, semana/mes, totales, rachas) · objetivos personales · y actividades en compañía (quedar con otra usuaria para salir juntas). Lo que NO va: segmentos, rankings públicos, feed abierto, mapas de calor, planes de coaching — ni comparación pública ni rendimiento contra nadie.

Qué existe ya (por qué esto no parte de cero)

Qué se construiría — cinco tramos, cada uno con su vehículo

O7a · Pasos
El podómetro del teléfono (Pedometer). Sin GPS, sin mapa, sin permiso de ubicación. Los pasos calibran la recomendación de movimiento y suman al anillo. Vehículo: OTA tras la 0.23.0 (la librería ya viaja).
O7b · Tracker GPS
Caminar/correr con pantalla en vivo — tiempo, distancia, ritmo — y la ruta en un mapa. Al guardar: entrenamiento del día + anillo + señal propia. Fase 1 foreground (con la app abierta); el seguimiento con pantalla bloqueada exige permiso «Always» y es fase 2. Vehículo: el mapa es dependencia NATIVA → build posterior (pantallas y lógica, OTA).
O7c · Devolverlo a Salud
El entrenamiento guardado aquí se escribe en HealthKit / Health Connect con su ruta — la misma reciprocidad que el write-back del período (F2 de la UST-06). Quien mire Salud ve el paseo de NutriSync.
O7d · Agregación y objetivos
El historial de actividades con su semana/mes, totales, rachas — y objetivos personales (pasos/día, salidas o minutos/semana) que la app propone conscientes de la fase y ella ajusta. Todo JS + SQL sobre health_signal: vehículo OTA, sin build.
O7e · Actividades en compañía
Invitar a otra usuaria (o a un grupo privado) a salir juntas: proponer día y hora, confirmar, y que la actividad quede en el día de ambas. Social íntimo y por invitación — no un feed. Es la puerta natural de la capa comunidad (item P5 en 💡) y hereda su puerta: la política de moderación (doc 20) antes de encenderse.

El esfuerzo: latidos, calorías y límites (estándares)

Petición de Juanjo (24-ago): que el esfuerzo se mida con estándares, no a ojo.

La recomendación: qué actividad toca hoy (ciclo + alimentación)

Adición de Juanjo (24-ago): el recomendador cruza dos fuentes que ya tenemos — la fase del ciclo (scoring de Constanza, determinista) y lo que ha comido hoy (los macros reales del pipeline nutricional UST-05). Ejemplos del tono: «fase lútea + comida ligera hoy → paseo suave o movilidad, mejor que series»; «folicular + buen desayuno → día para apretar, si te apetece». Reglas deterministas con firma de Constanza (energía disponible + fase → intensidad sugerida), cero LLM, y siempre en sugerencia — ella decide, el anillo cuenta lo que haga. Es el cierre del círculo 360: la comida informa el movimiento y el movimiento vuelve al día.

El stack abierto (la respuesta a «¿hay open source para esto?»)

PiezaQué resuelveLicencia / coste
expo-locationGPS: posición, rutas, precisión, tipo de actividad fitness (ahorra batería). Primera parte de Expo — cero vendor nuevo. MIT · ya embarcada (G1c)
expo-sensors (Pedometer)Pasos del teléfono, iOS y Android, sin ubicación.MIT · ya embarcada (G1c)
MapLibre React NativeEl mapa nativo dentro de la app. Fork comunitario de Mapbox GL anterior a su cambio de licencia (dic-2020): mismo motor, gobernanza abierta, compatible con Expo vía config plugin.BSD · gratis · dependencia nativa (build)
Protomaps (teselas, DIRECTO)Decisión Juanjo (24-ago): sin escala intermedia — el mapa en un fichero .pmtiles (extracto España/Iberia, unos pocos GB) servido desde nuestro R2/Cloudflare. Tres razones: cero dependencia externa desde el día 1, coste ≈ céntimos de almacenamiento, y privacidad — cada tesela que el móvil pide revela por dónde anda la usuaria, y así esa petición llega a NUESTRO dominio, no a un tercero. Mantenimiento: refrescar el extracto (mensual/trimestral, un cron). Open source · coste R2
OpenFreeMap (plan B)Teselas OSM públicas sin clave ni límites — la red de seguridad si el pmtiles se retrasa o R2 diera guerra. No es el camino: es el paracaídas.Gratuito
turf.jsDistancia y geodesia sobre la traza (JS puro, funciones puras → unitarios).MIT
Descartado: react-native-background-geolocation (Transistorsoft) El estándar comercial del tracking en background. No hace falta en fase 1 (foreground) y su licencia Android es de pago.De pago

MapTiler queda descartado: con Protomaps directo no hace falta ningún vendor con API key.

Privacidad — la línea dura antes de escribir una línea de código

Una ruta GPS dibuja tu casa, tu portal y tu rutina. Es de lo más sensible que una app puede guardar, y aquí se trata como tal desde el diseño:

El diferenciador — esto no es otro Strava

Strava mide el rendimiento contra los demás. Aquí el paseo se lee contra su fase: «hoy tu cuerpo pide suave» antes de salir, y al volver el esfuerzo cuenta en el anillo del día que ya conoce su ciclo. La evaluación por fase sigue siendo la consulta determinista contra el scoring de Constanza — el tracker aporta el dato, no el juicio.

Riesgos, con su antídoto

Calendario propuesto y decisión pedida

O7 no toca el camino al 8-oct. La recomendación de ingeniería:

Fuentes

Doc 44 · 24-ago-2026 · origen: idea de Juanjo (chat de ingeniería) · relacionado: Propuesta 33 (wearables), UST-2026-08-24-06 (firmada), doc 42 (decisiones D15-D17). El item O7 vive en 💡 Ideation del hub.