BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Noticias deportivas de actualidad: fútbol, NBA, F1, UFC y tenis. Resultados en vivo, calendario, rankings y juegos.
Translation pending
Sports & fitnessTypeScript · JavaScriptGitHub @takasportsOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
Plataforma deportiva: noticias, calendario y resultados en vivo, rankings, predicciones y minijuegos. Producción: · Deploy: Vercel, automático en cada push a main. Hace falta un .env.local con unas 25 variables (Sanity, Supabase, claves de deportes, VAPID de notificaciones). No hay fichero de ejemplo publicado porque varias son secretas; pídeselas a quien mantiene el proyecto. Sin .env.local la web arranca, pero las páginas que leen Sanity o Supabase fallarán.Read the full README ↗
Plataforma deportiva: noticias, calendario y resultados en vivo, rankings, predicciones y minijuegos.
Producción: https://www.takasportsmedia.com · Deploy: Vercel, automático
en cada push a main.
| Framework | Next.js 16 (App Router) · React 19 · TypeScript |
| Estilos | Tailwind 4 |
| Contenido | Sanity (noticias y reportajes) |
| Datos | Supabase (Postgres + Auth) |
| Deportes | ESPN (gratis) y api-sports.io (cuota corta) |
| Pruebas | Vitest — 1.250 en 89 ficheros |
| Tamaño | 68 páginas · 151 rutas de API · 28 tareas programadas |
npm install && npm run dev
Hace falta un .env.local con unas 25 variables (Sanity, Supabase, claves de
deportes, VAPID de notificaciones). No hay fichero de ejemplo publicado porque
varias son secretas; pídeselas a quien mantiene el proyecto.
Sin .env.local la web arranca, pero las páginas que leen Sanity o Supabase
fallarán.
| Orden | Qué hace |
|---|---|
npm run dev | Servidor de desarrollo en el 3000 |
npm run build | Build de producción. Valida tipos y lint: nada se commitea sin que pase |
npm test | Vitest, una pasada |
npm run rankings:sync | Baja los rankings de la base de datos |
⚠️ No levantes dos servidores de desarrollo en esta misma carpeta: comparten
.next y todas las rutas de API empiezan a responder 404. Si necesitas otro, usa
un worktree de git aparte.
src/
├── app/ rutas (App Router). Cada carpeta es una URL
│ ├── api/ 151 rutas de servidor: eventos, predicciones, rankings, juegos, crons
│ ├── partido/ ficha de partido — la pantalla más grande y más visitada
│ └── admin/ panel interno, protegido
├── components/ React reutilizable
└── lib/ lógica de negocio, clientes y tipos
src/lib/types.tssrc/lib/constants.ts, src/lib/sports.tssrc/lib/rankings.ts (espejo del trigger SQL)next.config.ts → images.remotePatternsLas noticias no se escriben aquí. Vienen de un pipeline de n8n que vive en
otro repo (taka-system), pasa por Supabase y se publica en Sanity; esta web
solo lee. El título SEO lo rellena aparte /api/cron/seo-title.
'use client' solo si necesita estado.<DynamicImage>, nunca <Image> a pelo.timeAgo() y formatInTimezone(), que respetan el huso del visitante.useMounted(). Costó once páginas repintándose enteras..env.local.next start no comprime y miente por ocho.CLAUDE.md — guía larga del repo (tablas de Supabase, límites de cada API…)CHANGELOG.md — qué ha cambiado y cuándo