|
CI Pipeline / E2E Tests (Playwright) (push) Blocked by required conditions
Details
CI Pipeline / Build Docker Images (push) Blocked by required conditions
Details
CI Pipeline / Quality Gate (push) Blocked by required conditions
Details
CI Pipeline / Backend Tests + Coverage (push) Failing after 15m11s
Details
CI Pipeline / Frontend Tests (push) Failing after 12m54s
Details
- Certificado SSL automático con Let's Encrypt - Redirección HTTP → HTTPS (308 Permanent) - Middleware de redirección para Traefik 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .gitea | ||
| docs | ||
| k8s | ||
| scripts | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| .mcp.json | ||
| CLAUDE.md | ||
| DEPLOYMENT.md | ||
| Dockerfile.backend | ||
| Dockerfile.frontend | ||
| README.md | ||
| build.sh | ||
| coverage.json | ||
| deploy.sh | ||
| logs.sh | ||
| pyproject.toml | ||
| start.mini.sh | ||
| start.sh | ||
| status.sh | ||
README.md
💪 Gym App - Plataforma de Gestión de Entrenamientos
Plataforma web/móvil para conectar entrenadores con clientes y gestionar rutinas personalizadas de entrenamiento.
📋 Descripción
Sistema completo para gestión de entrenamientos que permite:
- Entrenadores: Crear rutinas personalizadas, gestionar clientes, ofrecer servicios
- Clientes: Seguir rutinas, registrar progreso, contratar entrenadores, ver estadísticas
- Administradores: Gestión completa de usuarios, configuración de pagos y notificaciones
🚀 Características Principales
👤 Gestión de Usuarios
- Autenticación JWT con refresh tokens
- 3 roles: Entrenado, Entrenador, Administrador
- Perfiles públicos y privados de entrenadores
- Sistema de verificación de entrenadores
🏋️ Rutinas y Entrenamientos
- Creación de rutinas personalizadas
- Asignación de rutinas a clientes
- Registro de workouts con notas
- Biblioteca de máquinas y ejercicios
📊 Seguimiento de Progreso
- Registro de medidas corporales y peso
- Upload de fotos de progreso
- Estadísticas avanzadas y gráficos
- Sistema de logros y badges
🎯 Marketplace
- Búsqueda y filtrado de entrenadores
- Sistema de reseñas y calificaciones (1-5 estrellas)
- Publicación de servicios con precios
- Contratación directa de entrenadores
💳 Pagos y Suscripciones
- Múltiples gateways: Wompi, PayPal, ePayco, MercadoPago
- Webhooks para confirmación automática
- Fee de 10% en servicios de entrenadores
- Suscripciones anuales
📱 Notificaciones
- Push notifications web/móvil
- Sistema de recordatorios personalizables
- Chat WebSocket entre trainer-cliente
- Email multi-cuenta con balanceo
🎮 Gamificación
- 12 logros desbloqueables
- Badges por objetivos cumplidos
- Niveles de usuario
- Estadísticas competitivas
🏗️ Arquitectura
Stack Tecnológico
Backend:
- FastAPI (Python 3.11)
- SQLAlchemy ORM
- PostgreSQL / SQLite
- Pydantic para validación
- APScheduler para tareas programadas
Frontend:
- React 18 + TypeScript
- Vite para build
- TailwindCSS (futuro)
- Capacitor para móvil (Android/iOS)
Infraestructura:
- k3s (Kubernetes lightweight)
- Gitea para CI/CD
- Docker para imágenes
- Stalwart Mail Server
Arquitectura Limpia
src/
├── domain/ # Modelos SQLAlchemy + Pydantic
├── application/ # Lógica de negocio (services)
├── infrastructure/ # Repositorios + Gateways externos
│ ├── *_repository.py
│ ├── *_gateway.py # email, payment, whatsapp
│ ├── docker/
│ ├── k8s/
│ └── cicd/
├── interface/
│ ├── api/ # Routers FastAPI
│ ├── web/ # Frontend React
│ └── movil/ # App Capacitor
├── config/ # Configuración
└── main.py # Entry point
🚦 Inicio Rápido
Prerrequisitos
- Python 3.11+ instalado en
/opt/python-envs/py - Node.js 18+ y npm
- PostgreSQL 17 (opcional, usa SQLite por defecto)
Instalación
# Clonar repositorio
git clone <repo-url>
cd gym
# Instalar dependencias Python
/opt/python-envs/py/bin/pip install -r src/requirements.txt
# Instalar dependencias frontend
cd src/interface/web
npm install
cd ../../..
# Configurar variables de entorno
cp .env.example .env
# Editar .env con tus credenciales
Ejecución en Desarrollo
# Opción 1: Full stack (backend + frontend)
./start.sh
# Backend: http://localhost:8000
# Frontend: http://localhost:5173
# Opción 2: Solo backend
/opt/python-envs/py/bin/python -m uvicorn src.main:app --reload --port 8000
# Opción 3: Solo frontend
cd src/interface/web && npm run dev
Ejecución en Producción
./start.mini.sh
🧪 Testing
Tests Backend (pytest)
# Todos los tests
TESTING=1 /opt/python-envs/py/bin/python -m pytest tests/ -v
# Con coverage
TESTING=1 /opt/python-envs/py/bin/python -m pytest tests/ --cov=src --cov-report=term
# Solo API tests
TESTING=1 /opt/python-envs/py/bin/python -m pytest tests/interface/api/ -v
Estado: ✅ 618 tests, 89% coverage (Ver reporte)
Tests E2E (Playwright)
cd src/interface/web
# Todos los E2E
npm run test:e2e
# Con UI interactiva
npx playwright test --ui
# Ver reporte
npx playwright show-report
Estado: ✅ 12 archivos, 35 test cases (Ver cobertura)
📦 Deployment
Docker Compose (Desarrollo)
# Build imágenes
./build.sh
# Levantar servicios
docker-compose -f src/infrastructure/docker/docker-compose.yml up -d
Kubernetes (k3s - Producción)
# Deploy en k3s
kubectl apply -f src/infrastructure/k8s/
# Verificar pods
kubectl get pods -n gym
CI/CD (Gitea)
URL: http://192.168.1.16:30300
# Ver estado CI/CD
./src/infrastructure/cicd/scripts/status.sh
# Push para trigger pipeline
git push gitea main
📚 Documentación
Documentación de Usuario
Documentación Técnica
- Arquitectura - Guía completa para desarrolladores
- Testing Report
- Deployment - Guías de infraestructura
- Recovery Plan
API Docs
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
🔐 Variables de Entorno
Crear archivo .env en la raíz (ver .env.example):
# Base de datos
DATABASE_URL=postgresql://gym:gym123@localhost:5432/gym
# Admin inicial
ADMIN_EMAIL=admin@gymapp.com
ADMIN_PASSWORD=Admin123!
# JWT
JWT_SECRET_KEY=<secret_key>
JWT_REFRESH_SECRET_KEY=<refresh_secret_key>
# Email (encriptación obligatoria)
EMAIL_ENCRYPTION_KEY=<fernet_key>
# Pagos
WOMPI_PUBLIC_KEY=pub_...
WOMPI_PRIVATE_KEY=prv_...
PAYPAL_CLIENT_ID=...
PAYPAL_CLIENT_SECRET=...
# Notificaciones
VAPID_PUBLIC_KEY=...
VAPID_PRIVATE_KEY=...
👥 Usuarios de Prueba
Después del primer inicio, se crean usuarios por defecto:
| Password | Rol | |
|---|---|---|
| admin@gymapp.com | Admin123! | Administrador |
| entrenador@test.com | Test123! | Entrenador |
| cliente@test.com | Test123! | Entrenado |
🛠️ Scripts Útiles
# Testing
./scripts/testing/test_email.py # Test email gateway
# Database
python scripts/database/reset_database.py # Reset DB completo
# Development
python scripts/development/analyze_coverage.py # Análisis coverage
# Infrastructure
./src/infrastructure/cicd/scripts/deploy.sh # Deploy Gitea
./src/infrastructure/mailserver/deploy.sh # Deploy mail server
📊 Estado del Proyecto
Completado ✅
- 27 Historias de Usuario implementadas
- 30+ Módulos funcionando
- 89% Coverage backend
- 618 Tests pasando (98.7%)
- 12 Tests E2E críticos
- CI/CD en k3s funcionando
- Aplicación móvil con Capacitor
En Desarrollo 🚧
- Optimización de performance
- Tests adicionales para 90% coverage
- Deployment automatizado
- Monitoreo y observabilidad
🤝 Contribución
- Fork el proyecto
- Crea una rama:
git checkout -b feature/nueva-funcionalidad - Commit cambios:
git commit -m 'feat: agregar nueva funcionalidad' - Push:
git push origin feature/nueva-funcionalidad - Abre un Pull Request
Convenciones:
- Tests antes de merge
- Mantener arquitectura limpia
- Código sin comentarios (usar nombres descriptivos)
- Respetar patrones existentes
📄 Licencia
Proyecto privado - Todos los derechos reservados
📞 Soporte
Para reportar bugs o solicitar features:
- Issues: GitHub Issues
- Documentación: Ver carpeta
docs/
Última actualización: 2025-12-29 Versión: 1.0.0 Estado: ✅ Listo para Producción (89% coverage)
🤖 Generated with Claude Code