swimstats
Aplicación web para nadadores competitivos que permite registrar tiempos, visualizar mejores personales (PBs), comparar con estándares oficiales y graficar progreso. Usa Go/React, PostgreSQL y Docker Compose.
Ficha actualizada 26 sept 2026, 6:14 · upstream 26 sept 2026, 5:42 · release v9.0.0
Qué es swimstats
Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.
SwimStats es una aplicación web diseñada para nadadores competitivos o sus padres para gestionar el seguimiento del rendimiento en la piscina. Permite registrar tiempos de competición por evento, visualizar mejores personales (PBs) con insignias de estándares logrados y graficar la evolución temporal con referencias a estándares oficiales.
La arquitectura separa backend en Go 1.25+ con Chi router y frontend en React 18 con TypeScript, Vite y TailwindCSS. La base de datos es PostgreSQL gestionada con SQLC para acceso tipo ORM. Soporta autenticación OIDC compatible con Authentik o Keycloak, aunque en modo desarrollo usa tokens mock.
El proyecto incluye importación de estándares de tiempo (ej. Swimming Canada) desde JSON, filtrado por tipo de piscina (25m/50m), género y grupo de edad. También permite exportar/importar datos completos para copias de seguridad o migraciones.
- Nadadores individuales registran sus tiempos post-competición y visualizan su progreso histórico por evento.
- Padres o entrenadores supervisan el rendimiento de varios nadadores en un mismo panel con dashboards comparativos.
- Equipos deportivos importan estándares oficiales (ej. Swim Ontario) para evaluar la consecución de objetivos.
- Analistas deportivos filtran datos por tipo de piscina y comparan PBs contra referencias de grupos de edad.
- Usuarios exportan sus datos en JSON como respaldo antes de migrar a otra plataforma o cambiar de equipo.
- Arquitectura modular con backend en Go y frontend en React, ambos bien documentados y con tests unitarios/integración.
- Soporte nativo para autenticación OIDC (Authentik/Keycloak) y modo desarrollo sin configuración de seguridad.
- Base de datos PostgreSQL con SQLC para tipado fuerte y generación automática de código Go desde consultas SQL.
- Importación de estándares de tiempo desde archivos JSON oficiales, filtrables por curso, género y edad.
- Gráficos interactivos con Recharts que muestran evolución temporal, PBs y líneas de referencia de estándares.
- API RESTful completa documentada en specs/001-swim-progress-tracker/contracts/api.yaml con endpoints para gestión de nadadores, tiempos, competiciones y datos.
- No existe import automático de resultados desde sistemas federativos; los tiempos deben ingresarse manualmente.
- Requiere Go 1.25+ (versión futura no estable en el momento actual) para compilar el backend.
- Sin Dockerfile, el despliegue directo requiere usar docker-compose o construir la imagen manualmente.
- La autenticación OIDC es obligatoria en producción; sin ella, el modo desarrollo usa tokens mock que no son seguros.
- No hay soporte explícito para sincronización bidireccional con federaciones o sistemas externos de resultados.
Capturas del proyecto
Imágenes reales detectadas en la documentación del repositorio.
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
Recomendado usar docker-compose para despliegue rápido. En producción, configurar OIDC_ISSUER, OIDC_CLIENT_ID y OIDC_CLIENT_SECRET. Asegurar que PostgreSQL esté en modo persistente (volumen) y no en el mismo contenedor. Ejecutar migraciones antes de iniciar el backend. El frontend se sirve desde un puerto distinto (5173) al backend (8080); usar reverse proxy o Nginx para enrutar correctamente las peticiones.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Puede sustituir a
Relaciones detectadas por el análisis del repositorio y su categoría.
Experiencia real de la comunidad
Ayuda a contrastar la estimación automática con instalaciones reales.
Todavía no hay datos comunitarios para este proyecto.






