Aplicación web de seguimiento de entrenamiento construida con Next.js 14, TypeScript, Tailwind CSS y Prisma sobre PostgreSQL.
Gym Tracker permite gestionar ejercicios, rutinas y sesiones de entrenamiento. El proyecto sigue una arquitectura de módulos y un patrón de feature-based structure con una capa de datos centralizada usando Prisma.
- Next.js 14 (App Router)
- React 18
- TypeScript 5
- Tailwind CSS v4
- Prisma + PostgreSQL
- Playwright para pruebas E2E
- Docker Compose para base de datos local
- Node.js 20+ (recomendado)
- pnpm
- Docker y Docker Compose (para la base de datos local)
- Clona el repositorio:
git clone https://github.com/<tu-org>/gym-tracker.git
cd gym-tracker- Instala dependencias:
pnpm install- Inicia la base de datos local con Docker Compose:
docker compose -f docker/docker-compose.yml up -d- Crea un archivo
.enven la raíz del proyecto con la siguiente variable:
DATABASE_URL="postgresql://user:password@localhost:5438/gym_tracker_db?schema=public"El contenedor de PostgreSQL se levanta con el usuario
user, contraseñapasswordy base de datosgym_tracker_db.
- Aplica las migraciones existentes y ejecuta el seed inicial:
pnpx prisma migrate deploy
pnpx prisma db seed- Ejecuta la app en modo desarrollo:
pnpm devAbre http://localhost:3000 en tu navegador.
pnpm dev— Levanta el servidor de desarrollopnpm build— Compila la aplicación para producciónpnpm start— Inicia el servidor Next.js en modo producciónpnpm lint— Corre ESLintpnpm lint:fix— Arregla problemas de lint automáticamentepnpm format— Formatea el código con Prettierpnpm check-types— Comprueba tipos TypeScriptpnpm test:e2e— Ejecuta pruebas E2E con Playwrightpnpm test:e2e:ui— Abre la interfaz de Playwright
El proyecto incluye un archivo de Docker Compose en docker/docker-compose.yml que levanta:
- PostgreSQL en
localhost:5438 - pgAdmin en
localhost:5050
- URL:
http://localhost:5050 - Usuario:
admin@admin.com - Contraseña:
admin
src/app/— Rutas y páginas del App Routersrc/core/— Componentes UI compartidos, hooks globales, utilidades y cliente Prismasrc/modules/— Dominios del negocio organizados por módulos (exercises,routines,log-workout)
Para más detalles internos revisa AGENTS.md y la documentación en docs/.
- Esquema:
prisma/schema.prisma - Seed:
prisma/seed.ts - Cliente Prisma generado automáticamente con
pnpm installgracias al scriptpostinstall
AGENTS.md— Guía del codebase y convenciones de arquitecturadocs/— Documentación de arquitectura, especificaciones y tareas
- La UI está en español.
- El proyecto usa aliases de rutas definidos en
tsconfig.json:@app/*@core/*@modules/*
- Usa siempre
pnpmpara instalar y ejecutar scripts.
Si necesitas un entorno limpio, ejecuta:
docker compose -f docker/docker-compose.yml down -vy vuelve a levantar los contenedores.