Tracky
Un tracker de fitness minimalista que diseñé y construí por mi cuenta. Se queda con lo esencial (comidas, entrenamientos, progreso y metas) y suma un chat con IA que convierte una frase normal en entradas del diario. Es código abierto y está en vivo en tracky.fit, con más de 100 usuarios activos.
- Rol
- Desarrollador único
- Año
- 2024
- Tecnologías
- Next.js 15, Drizzle, OpenAI
- Estado
- Beta en tracky.fit
Sesión iniciada como Frainer Encarnación. La interfaz está recreada a partir del repositorio de Tracky y funciona con datos de ejemplo en tu navegador. No se envía nada.
01
Registrar un desayuno debería ser breve
La mayoría de las apps de fitness esconden lo básico bajo un montón de funciones. Yo quería un tracker que no estorbe: registras lo que comiste o entrenaste, ves tu progreso contra tu meta y sigues con tu día.
Por eso mantuve la app pequeña a propósito. Cada página tiene un solo trabajo.
Panel
Progreso, estadísticas personales y acceso rápido a las acciones principales, con gráficos de tendencia.
Comida
Consumo y macros, con el chat de IA en la misma página.
Ejercicio
Entrenamientos con tipo, duración e intensidad, o deja que el chat los agregue.
Diario
Un registro diario de comidas y entrenamientos que puedes buscar y filtrar.
02
De una frase a una entrada del diario
La idea central es el chat con IA en las páginas de Comida y Ejercicio. Describes lo que hiciste con tus palabras, el modelo lo estructura y la entrada aparece en tu diario.
La animación de abajo escribe un desayuno, lo convierte en entradas del diario y actualiza los totales del día automáticamente.
Chat de comida
Una frase se vuelve entradas del diario
Chat con IA
Dos huevos, una tostada y un café de desayunoDos huevos, una tostada y un café de desayuno
08:12
logHealthAI
generateObject
MultiIntentSchema
intent: consumption
Diario
Huevos
Desayuno · 100 g
155 kcal
Proteína 13g · Carbos 1g · Grasa 11g
Tostada
Desayuno · 40 g
106 kcal
Proteína 4g · Carbos 18g · Grasa 1g
Café
Desayuno · 180 ml
16 kcal
Proteína 1g · Carbos 2g · Grasa 0g
Hoy
Calorías
277 / 2200
13% del objetivo diario
Proteína
18 / 165
11% del objetivo diario
Carbos
21 / 220
10% del objetivo diario
Grasa
12 / 73
16% del objetivo diario
Porciones de ejemplo, no una medición.
Los totales del día suben.
Construí Tracky solo: alcance del producto, interfaz, modelo de datos, integración con IA, autenticación, CI y despliegue.
03
Un solo framework, sin API aparte
Empecé con create-t3-app y migré al App Router de Next.js 15 con React 19. Las mutaciones pasan por acciones de servidor y el Partial Prerendering muestra al instante las partes estáticas mientras llegan los datos del usuario.
App Router
Baja por las capas y vuelve
01 · Cliente
Cliente
React 19 + shadcn/ui
Tailwind y primitivas de Radix para una interfaz mínima y accesible.
Framer Motion
Transiciones pequeñas entre estados.
02 · Servidor
Servidor
Next.js 15 App Router
Rutas, Partial Prerendering y acciones de servidor.
Vercel AI SDK
Envuelve las llamadas a OpenAI detrás del chat.
03 · Servicios
Servicios
Clerk
Autenticación y gestión de usuarios.
Drizzle + Neon Postgres
Esquema y consultas tipadas sobre Postgres sin servidor.
Cloudflare R2
Almacenamiento de archivos y recursos.
Basado en las tecnologías que aparecen en el README del repositorio.
El diario se actualiza.
Decisiones
- 01
Acciones de servidor en vez de una API aparte
Tener las mutaciones junto a la interfaz me ahorró código repetido en un proyecto individual. El costo es que la lógica queda atada a Next.js.
- 02
El chat como atajo, no como única entrada
El chat acelera el registro, pero los formularios siguen ahí cuando quieres valores exactos.
- 03
Menos funciones a propósito
Dejé fuera las redes sociales y la gamificación para que la app se enfoque en registrar y ver progreso.
Míralo en vivo
Tracky está en beta en tracky.fit y el código completo está en GitHub con licencia MIT.