Vitals
Vitals by mariansan — plataforma de inteligencia de salud personal para Galaxy Watch y Fitbit. Los datos del wearable llegan automáticamente desde dos fuentes; Claude Sonnet los sintetiza en un briefing diario, análisis de tendencias y un coach de IA.
Qué hace
- Ingesta métricas diarias desde el **Galaxy Watch** (app Android compañera) y **Fitbit vía Google Health API** — sueño, ritmo cardíaco, HRV, SpO₂, pasos, calorías, entrenamientos, peso y composición corporal
- Ejecuta un análisis con Claude Sonnet sobre cada snapshot y entrega un briefing matutino en lenguaje natural con recomendaciones concretas
- **Tendencias:** gráficos de series temporales de 7 y 30 días en cuatro categorías de métricas, con indicadores de delta y selectores de período
- **Coach IA:** una conversación en streaming con Claude con el contexto de salud completo — pregunta cualquier cosa sobre tus métricas y recibe orientación estructurada en markdown en tiempo real
- La PWA del dashboard puede activar una sincronización inmediata en la app compañera vía FCM — sin necesidad de pulsar "Sincronizar"
- Actualización en vivo mediante Supabase Realtime — el dashboard se actualiza en el momento en que llegan nuevos datos
- Soporta múltiples usuarios — los datos de cada persona aislados a nivel de base de datos mediante Supabase RLS
- Instalable como PWA con notificaciones push — briefing matutino y check-in nocturno en la pantalla de inicio
- Completamente privado, protegido por contraseña, noindex — sin entrada manual de datos
Por qué importa
- Reemplaza 15–20 minutos de revisión matutina con un briefing de 30 segundos que realmente cambia lo que haces
- **Dos fuentes de datos, una sola pipeline:** Galaxy Watch y Fitbit cubiertos — agnóstico al dispositivo desde el primer día
- Captura sin fricción: WorkManager gestiona la sincronización diaria de Samsung Health automáticamente tras la configuración inicial
- La pantalla Coach hace tus datos conversacionales — las métricas se convierten en contexto, no solo en números
- Vercel Cron + `after()` reemplazó una dependencia de n8n — eliminó un orquestador de workflows externo del stack de producción
Arquitectura
- **Ruta Samsung:** Galaxy Watch → Health Connect → app Android compañera (WorkManager, 07:00 diario) → POST `/api/ingest`
- **Ruta Google Health:** OAuth2 → endpoint `list` de Google Health API → ingestión diaria por Vercel Cron — SpO₂, HRV, FC en reposo, frecuencia respiratoria y VO₂ max usan `list`, no `dailyRollUp`
- Claude Sonnet se ejecuta dentro de `/api/generate` vía `after()` — la respuesta se devuelve de inmediato; la generación termina tras la respuesta sin agotar el timeout de Vercel
- La pantalla Coach transmite tokens desde `/api/coach` → ReadableStream → cliente; el snapshot diario completo se incluye en el system prompt
- Supabase Realtime envía actualizaciones de `daily_analysis` en tiempo real — UX sin recarga
- FCM cierra el ciclo: el dashboard activa una sincronización bajo demanda en el companion Android
- SpO₂ agregado como mediana diaria para resistir lecturas erróneas del sensor; totales de actividad filtrados solo para Samsung Health para evitar el doble conteo
Diseño
- Reconstruido desde cero sobre una especificación de Claude Design — 22 componentes auditados, 50 pull requests
- Sistema de tokens dark-first con WCAG AA en los tres temas; logo-mark ring+pulse con SplashScreen personalizado
- MetricTile, PageHeader compartido, banda de referencia SpO₂ y BottomTabBar rediseñados conforme a la especificación
Filosofía
- Los datos del wearable solo tienen valor cuando generan algo que puedes hacer hoy
- Un briefing que cambia lo que haces — no una gráfica que pasas de largo y olvidas
- La pantalla Coach hace los datos conversacionales: las métricas se convierten en contexto, no en decoración
- Next.js
- Supabase
- Claude API
- Firebase
- Android
- Google Health API
- Recharts
- Tailwind CSS