App web para seguimiento de entrenamientos en gimnasio. Esta version es el frontend (React + Vite + TypeScript), con autenticacion en Clerk y datos consumidos desde una API externa.
- Inicio de sesion con Clerk (Google como flujo principal y opciones extra de Clerk).
- Gestion de rutinas propias y rutinas publicas.
- Registro de sesiones de entrenamiento (series, repeticiones, pesos, notas y progreso).
- Dashboard con historial, calendario y paneles de progreso.
- Panel de administracion para revisar usuarios, rutinas y sesiones.
- Soporte PWA en produccion con service worker (
vite-plugin-pwa). - UI mobile-first con Tailwind CSS y sistema visual propio (
app-*,btn-*,input,chip).
- React 18
- TypeScript
- Vite
- Tailwind CSS
- Vitest
- ESLint
- Clerk
- Node.js 20+
- pnpm
- Clona el repositorio y entra al proyecto:
git clone <url-del-repo>
cd herculito- Instala dependencias:
pnpm install- Crea el archivo de entorno:
cp .env.example .env- Completa estos valores en
.env:
VITE_CLERK_PUBLISHABLE_KEYVITE_CLERK_JWT_TEMPLATE(ejemplo:herculito_api)VITE_PUSH_API_ORIGIN(URL base de la API)
- Inicia en desarrollo:
pnpm devLa app corre por defecto en http://localhost:5173.
pnpm dev: servidor de desarrollo.pnpm build: build de produccion.pnpm preview: preview local del build.pnpm lint: lint del proyecto.pnpm test: ejecuta Vitest en modo run.pnpm exec tsc -b: typecheck con TypeScript.
src/
app/ # shell de aplicacion, providers, navegacion
features/ # dominios: auth, dashboard, routines, workouts, admin
shared/ # tipos, api client, utilidades y UI compartida
public/ # assets estaticos e iconos PWA
- Navegacion por estado/pathname (
usePageNavigation) en lugar de React Router completo. - Capa de API centralizada en
src/shared/api/apiClient.ts(fetchJson,ApiError, token Clerk). - En desarrollo se desregistran service workers para evitar caches stale.
- En produccion se habilita auto-update del service worker.
- Verifica que exista
.enven la raiz. - Reinicia
pnpm devdespues de cambiar variables. - Confirma que
VITE_CLERK_PUBLISHABLE_KEYno este vacia.
- Revisa configuracion de Google OAuth/SSO en Clerk.
- Valida que
VITE_CLERK_JWT_TEMPLATEexista en Clerk. - Verifica que
VITE_PUSH_API_ORIGINapunte al backend correcto.
- En DevTools: Application -> Service Workers -> Unregister.
- Limpia datos del sitio y recarga fuerte (
Cmd+Shift+R). - Si persiste:
pnpm dev -- --force.
AGENTS.md: guia tecnica de trabajo en este repo..github/copilot-instructions.md: convenciones adicionales del proyecto.