Skip to content

ibaifernandez/gymtracker

Repository files navigation

Gym Tracker

Aplicacion local (Flask + SQLite + HTML/CSS/JS) para registrar check-ins diarios, sesiones de entrenamiento y plan diario (vista Planes).

El manifiesto del proyecto

Mientras el mercado regala sus métricas biométricas y hábitos de vida a corporaciones SaaS a cambio de dashboards coloridos, Gym Tracker nace de una premisa innegociable: la soberanía absoluta de los datos. Mi salud, mi base de datos (SQLite local). Cero trackers de terceros, cero latencia de red, control total.

Métrica de impacto operativo

Arquitectura desplegada y certificada bajo estrés real: release v1.0.0.0 cerrada superando 97/97 casos de prueba QA, con cobertura completa E2E automatizada.

Stack tecnológico core

Orquestado mediante Python (Flask) en el backend y SQLite para persistencia inquebrantable. Front-end desprovisto de dependencias tóxicas (Vanilla JS + CSS centralizado), testeado milimétricamente con Playwright. Preparado para interacciones con LLMs mediante directrices para agentes autónomos (AGENTS.md).

Que hace

  • Check-in diario: sueno, calidad, pasos, peso, cintura, cadera, creatina, alcohol y foto opcional.
  • Rutina por sesiones: varias sesiones el mismo dia, tipo (clase/pesas), RPE, ejercicios y notas.
  • Plan diario (separado del registro real): dieta del dia + sesiones/ejercicios sugeridos, importados por CSV.
  • Adherencia del plan por fecha (escala 1 / 0.5 / 0) sin sobrescribir tus logs reales, con histórico rápido 7/15/30 y resumen semanal.
  • KPIs por rango libre y modo automatico de 7 dias naturales.
  • Grafica simple de rendimiento (peso, WHR, sueno, pasos) + informe rapido en PNG.
  • Lightbox de fotos con miniaturas y comparador antes/despues.
  • CTA rapidos Ver todo para abrir bloques completos y flujo Reportar bug con diagnostico copiable.
  • Importacion CSV de check-ins con preview (valid/conflict/invalid).
  • Exportacion CSV de registros (check-ins.csv), entrenos (workout.csv) y suplementos (supplements.csv).
  • Backup/restore local (tracker.db + uploads/).
  • Auth local opcional por clave unica (sin usuario).

Requisitos

  • Python 3.9+ (recomendado: 3.13).
  • pip.
  • Node.js 20+ (solo para Playwright/E2E).

Arranque rapido

git clone https://github.com/ibaifernandez/gymtracker.git
cd gymtracker
python3 -m venv .venv
source .venv/bin/activate
pip install flask werkzeug
npm install
python app.py

Abre: http://127.0.0.1:5050

Configuracion por entorno (opcional)

Archivo sugerido: .env.local (cargado automáticamente por la app al arrancar).

Variables principales:

  • TRACKER_HOST (default: 127.0.0.1)
  • TRACKER_PORT (default: 5050)
  • TRACKER_DB_PATH (default: tracker.db)
  • TRACKER_UPLOAD_ROOT (default: static/uploads)
  • TRACKER_SECRET_KEY
  • TRACKER_AUTH_ENABLED=1 para exigir login
  • TRACKER_AUTH_PASSWORD_HASH hash Werkzeug (scrypt:...)
  • TRACKER_PHOTO_COMPRESSION_ENABLED (default 1)
  • TRACKER_PHOTO_MAX_SIDE (default 1600)
  • TRACKER_PHOTO_QUALITY (default 82)
  • TRACKER_PHOTO_PREFER_WEBP (default 1)

Nota: para compresion real de imagenes, instala Pillow:

source .venv/bin/activate
pip install Pillow

Scripts utiles

# QA completo de release
npm run release:check

# Solo E2E
npm run test:e2e

# Limpiar datos locales
npm run data:clear

# Poblar demo aleatoria
npm run data:seed

Plan diario por CSV (plantillas oficiales)

El modulo Planes usa 2 CSV:

  • plan_diet_template.csv
  • plan_workout_template.csv (sesiones + ejercicios en un unico archivo)

Puedes descargarlos desde la GUI (modal de importacion de plan) o por endpoint:

  • /export/template/plan-diet.csv
  • /export/template/plan-workout.csv

Reglas clave del CSV de entreno:

  1. No se escribe session_id: la app lo deriva por fecha segun orden de filas.
  2. Se permiten varias filas con la misma fecha (varias sesiones el mismo dia).
  3. Si session_type=clase, las columnas de ejercicios se ignoran con aviso.
  4. Si session_type=pesas, los ejercicios son opcionales.

Compatibilidad legacy: siguen disponibles /export/template/plan-workout-sessions.csv y /export/template/plan-workout-exercises.csv.

Testing

Backend:

source .venv/bin/activate
python -m unittest tests/test_backend.py

E2E (Playwright):

npm install
npx playwright install --with-deps
npm run test:e2e

Documentacion

Nota para contribuidores con IA

AGENTS.md es un archivo local/no versionado por diseño. Cada persona debe crear su propio archivo si quiere usar su propio flujo con agentes.

Archivos locales opcionales (no versionados)

Si quieres tener atajos personales de arranque en tu máquina, puedes crear archivos locales como:

  • run.command
  • start_tracker.zsh

No forman parte del repositorio público por diseño.

Licencia

Este proyecto se publica bajo The Unlicense (dominio público). Puedes usarlo, copiarlo, modificarlo y redistribuirlo sin restricciones.

About

Local-first health ecosystem & data architecture. Zero-latency tracking, 100% data sovereignty, and AI-agent ready. Engineered with Python, Flask, and SQLite.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors