OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
Torneos de pádel: zonas, resultados, cuadros, horarios y ranking en tiempo real.
Translation pending
Sports & fitnessTypeScript · CSSGitHub @ximmecOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Plataforma para organizar torneos de pádel: inscripciones, zonas, resultados, posiciones automáticas, cuadros eliminatorios, cronograma de canchas, ranking individual acumulativo, exportación a Excel, auditoría y vista pública para jugadores.
Dominio previsto: padel-match.net
Panel de administración (/admin)
Vista pública (sin cuenta, pensada primero para el celular)
Vas a necesitar:
| Servicio | Para qué | Costo inicial |
|---|---|---|
| GitHub (ya lo tenés) | Guarda el código; Vercel publica desde ahí | Gratis |
| Vercel | Hosting de la aplicación | Plan Hobby gratis*; Pro USD 20/mes |
| Neon (desde Vercel) | Base de datos PostgreSQL con backups | Gratis para empezar; planes pagos con más retención de backups |
| Tu registrador de dominio | Apuntar padel-match.net a Vercel | Ya pagado |
*Revisá las condiciones de uso del plan Hobby de Vercel. Si el uso es comercial (por ejemplo, si cobrás a organizadores), corresponde el plan Pro.
ximmec/padel-match → Import.DATABASE_URL.En Settings → Environment Variables agregá:
| Nombre | Valor |
|---|---|
APP_URL | https://padel-match.net |
SETUP_KEY | Una clave inventada por vos (ej. cancha-azul-2026). Se pide una sola vez para crear el administrador. |
Deployments → Redeploy (o "Deploy" si es la primera vez). El build aplica las migraciones de la base y compila la app. Cuando termine, Vercel te da una dirección https://padel-match-xxxx.vercel.app para probar.
En Vercel: Settings → Domains → Add → escribí padel-match.net y después agregá también www.padel-match.net, que redirige al principal.
Vercel te muestra qué registros DNS crear. Normalmente son:
@, valor 76.76.21.21www, valor cname.vercel-dns.comUsá siempre los valores exactos que te muestre Vercel, porque pueden variar.
Entrá al panel de tu registrador, en la sección DNS de padel-match.net, y creá esos registros. Borrá cualquier registro A o CNAME anterior para @ o www que apunte a otro lado.
La propagación tarda entre minutos y algunas horas. Vercel emite el certificado HTTPS automáticamente cuando el dominio queda verificado.
Hasta que Vercel muestre el dominio como Valid Configuration, no está publicado en padel-match.net.
Cada cambio que se sube a la rama main de GitHub se publica solo. Antes, GitHub Actions corre todas las pruebas automáticas (pestaña Actions del repositorio).
https://padel-match.net/setup (o la dirección de Vercel).SETUP_KEY, el nombre de tu organización, tu nombre, email y una contraseña de al menos 10 caracteres con letras y números. Este paso solo funciona mientras no exista ningún usuario.Para sumar a otras personas: Configuración → Usuarios y permisos.
npm run backup con DATABASE_URL de producción genera backups/padel-match-FECHA.json.gz con todas las tablas. También podés usar pg_dump "$DATABASE_URL" > respaldo.sql.match_result_versions), la auditoría no se puede modificar ni borrar (lo impide la propia base de datos) y el ranking conserva las asignaciones reemplazadas. Así, la mayoría de los errores se corrigen desde la app, sin restaurar backups.Las que acordamos:
| Tema | Decisión |
|---|---|
| Retiro de una pareja en la zona | Se elige en cada caso. Por defecto: se mantienen los partidos jugados y los pendientes se dan por W.O. al rival. La alternativa es anular todos sus partidos. Una pareja retirada nunca clasifica. |
| Comparar zonas de distinto tamaño (ej. mejores segundos) | Promedios por partido: % de partidos ganados → diferencia de sets por partido → diferencia de games por partido → games a favor por partido. Opcional por categoría: descontar los partidos contra el último. |
| Orden de desempate por defecto | Partidos ganados → resultado entre sí (empate de 2) → diferencia de sets → diferencia de games → sorteo manual registrado. Se configura por categoría. |
| Acceso de jugadores | Vista pública sin cuenta, buscando por nombre. Nunca se muestran teléfono, email ni documento. |
Criterios adoptados que podés pedir cambiar:
src/
├─ core/ Lógica de dominio pura (sin base de datos ni UI), 100 % probada
│ ├─ scoring.ts formatos y validación de resultados
│ ├─ zones.ts tamaños de zona, sorteo con siembra, todos contra todos
│ ├─ standings.ts posiciones, desempates, comparación entre zonas
│ ├─ bracket.ts cuadro, pases libres, resolución, impacto de cambios, instancias
│ ├─ scheduling.ts cronograma por canchas, descansos, conflictos, recálculo
│ ├─ ranking.ts puntos por instancia y agregación
│ └─ engine.ts combina todo para una categoría
├─ server/ Acceso a datos y operaciones transaccionales
│ ├─ db.ts cliente PostgreSQL
│ ├─ auth.ts sesiones (cookie httpOnly) y permisos
│ ├─ ops.ts operaciones de negocio (cada una en una transacción, con auditoría)
│ ├─ schedule.ts cronograma de un torneo
│ ├─ ranking.ts libro contable de puntos
│ ├─ export.ts Excel
│ └─ actions/ Server Actions que usan los formularios
├─ app/ Next.js (App Router): /admin, vista pública y /api
└─ components/ Componentes de interfaz
db/migrations/ Esquema SQL versionado (se aplica en cada build)
tests/core/ Pruebas de la lógica (8, 9, 10, 11, 12 y 14 parejas, empates, cuadros, etc.)
tests/db/ Pruebas de integración contra PostgreSQL real
/api/public/version y se refresca sola si algo cambió. Funciona bien en Vercel y no requiere servicios extra.Requisitos: Node.js 20 o superior y PostgreSQL 14 o superior.
cp .env.example .env.local # completar DATABASE_URL
npm install
npm run migrate # crea las tablas
npm run dev # http://localhost:3000 → /setup
Pruebas:
npm test # lógica de dominio (no necesita base)
npm run test:db # integración (necesita DATABASE_URL a una base de prueba)
npx tsc --noEmit # verificación de tipos
GitHub Actions corre todo esto, más la compilación y una prueba de humo del servidor, en cada cambio.