Aplicación web para registrar, validar y gestionar partidas de Mus entre amigos. Incluye sistema de temporadas, estadísticas de jugadores y panel de administración.
MusLog es una aplicación web progresiva (PWA) diseñada para grupos de amigos que juegan Mus regularmente. Permite llevar un registro centralizado de todas las partidas, con validación por parte de los jugadores, organización por temporadas y estadísticas detalladas de rendimiento.
- Registro de partidas: Registra partidas con 4 jugadores, equipos, resultados y fecha/hora
- Sistema de validación: Cada partida requiere validación de los 4 jugadores participantes o de un administrador
- Temporadas: Organiza las partidas en temporadas activas y cerradas
- Estadísticas de jugadores: Ranking, porcentaje de victorias, partidas totales y tendencias
- Panel de administración: Gestión de usuarios, aprobación de solicitudes y validación de partidas
- Búsqueda y filtros: Filtra partidas por estado, temporada, jugador y rango de fechas
- PWA: Instalable en dispositivos móviles y escritorio
- Tema oscuro/claro: Soporte para modo claro y oscuro
- Framework: Next.js 16 con React 19
- Base de datos: Supabase (PostgreSQL)
- Autenticación: Supabase Auth
- UI: Tailwind CSS + Radix UI
- Iconos: Lucide React
- Gráficos: Recharts
- PWA: next-pwa
- Despliegue: Vercel
- Node.js 18+ y npm/pnpm
- Cuenta de Supabase (para base de datos y autenticación)
- Clona el repositorio:
git clone <repository-url>
cd v0-mus-game-tracker- Instala las dependencias:
npm install
# o
pnpm install- Configura las variables de entorno:
Crea un archivo
.env.localcon:
NEXT_PUBLIC_SUPABASE_URL=tu_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=tu_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=tu_supabase_service_role_key
# Alternativa si no usas SUPABASE_SERVICE_ROLE_KEY:
SUPABASE_SECRET_KEY=tu_supabase_secret_key
DATABASE_URL=tu_connection_string_postgres
# Opcional: desactiva migraciones automáticas (por ejemplo en un build donde no quieras tocar la BBDD)
# SKIP_DB_MIGRATIONS=true-
Ejecuta las migraciones SQL: Aplica los scripts SQL en la carpeta
scripts/en orden numérico a tu base de datos Supabase. -
Inicia el servidor de desarrollo:
npm run dev
# o
pnpm devLa aplicación estará disponible en http://localhost:3000
v0-mus-game-tracker/
├── app/ # Rutas de Next.js App Router
│ ├── (app)/ # Rutas protegidas de la aplicación
│ │ ├── admin/ # Panel de administración
│ │ ├── jugadores/ # Estadísticas de jugadores
│ │ ├── nueva-partida/ # Formulario de nueva partida
│ │ ├── partidas/ # Lista de partidas
│ │ ├── perfil/ # Perfil de usuario
│ │ └── temporadas/ # Gestión de temporadas
│ └── auth/ # Rutas de autenticación
├── components/ # Componentes React
│ ├── admin/ # Componentes del panel admin
│ └── ui/ # Componentes UI reutilizables
├── lib/ # Utilidades y helpers
│ └── supabase/ # Clientes de Supabase
├── scripts/ # Scripts SQL de migración
└── public/ # Archivos estáticos
Consulta el Manual de Usuario completo para:
- Guía paso a paso de todas las funcionalidades
- Instrucciones de registro e inicio de sesión
- Cómo registrar y validar partidas
- Uso del panel de administración
- Preguntas frecuentes
- Registro: Crea una cuenta y espera la aprobación de un administrador
- Registrar partida: Ve a "Nueva" y completa el formulario con los 4 jugadores y resultado
- Validar partidas: Valida las partidas en las que participaste desde la lista de partidas
- Ver estadísticas: Consulta tu ranking y estadísticas en "Jugadores"
- Temporadas: Revisa el historial de temporadas y estadísticas por temporada
- Aprobar usuarios: Gestiona solicitudes de registro en el panel de admin
- Validar partidas: Valida o rechaza partidas pendientes
- Gestionar temporadas: Crea nuevas temporadas y cierra las actuales
- Gestionar usuarios: Asigna permisos de administrador a otros usuarios
- Usuario: Puede registrar partidas, validar sus propias partidas y consultar estadísticas
- Administrador: Tiene acceso completo al panel de administración para gestionar usuarios, partidas y temporadas
La aplicación utiliza las siguientes tablas principales:
profiles: Perfiles de usuario con estado (pending/approved/rejected)matches: Partidas registradas con estado (pending/validated/rejected)match_validations: Validaciones individuales de cada jugador por partidaseasons: Temporadas activas y cerradas
Los scripts SQL de migración se encuentran en la carpeta scripts/ y deben ejecutarse en orden numérico.
- Conecta tu repositorio a Vercel
- Configura las variables de entorno
- Vercel detectará automáticamente Next.js y desplegará la aplicación
NEXT_PUBLIC_SUPABASE_URL: URL de tu proyecto Supabase (ej:https://<project-ref>.supabase.co)NEXT_PUBLIC_SUPABASE_ANON_KEY: Clave pública del cliente (en Supabase puede aparecer como anon key o como publishable key)SUPABASE_SERVICE_ROLE_KEY: Clave service role necesaria para borrar usuarios desde el panel de administración (o usaSUPABASE_SECRET_KEYsi no dispones de ella)SUPABASE_SECRET_KEY: Alternativa aSUPABASE_SERVICE_ROLE_KEYpara habilitar el borrado de usuariosDATABASE_URL: Connection string a Postgres (requerida para aplicar automáticamente los SQL descripts/al hacernpm run dev/build/start)
Este proyecto aplica automáticamente los .sql de scripts/ cuando ejecutas:
npm run devnpm run buildnpm start
Guarda cuáles ya se aplicaron en public.schema_migrations y solo ejecuta las pendientes.
Variables relacionadas:
DATABASE_URL: obligatoria para que se apliquenSKIP_DB_MIGRATIONS=true: desactiva la aplicación automática
npm run dev # Servidor de desarrollo
npm run build # Construir para producción
npm run start # Iniciar servidor de producción
npm run lint # Ejecutar ESLint
npm run dev:pwa # Desarrollo con PWA habilitadoEste proyecto está sincronizado automáticamente con v0.app. Para contribuir:
- Realiza cambios en el proyecto
- Los cambios se sincronizarán automáticamente con este repositorio
- Vercel desplegará la última versión automáticamente
Este proyecto es privado y está destinado para uso personal/grupo de amigos.
- Aplicación en vivo: Vercel Deployment
- Desarrollo en v0: v0.app Chat
- Manual de Usuario: MANUAL_USUARIO.md
Desarrollado con ❤️ para grupos de amigos que disfrutan del Mus