OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 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.