Dugout Value
투구·타격·예측 연구와 선수·계약·트레이드 가치를 비교하는 도구 제공
라린코나다·발렌시아 참가자, 전문가 예측, 은퇴자 및 결과를 조회하는 베네수엘라 디지털 승마 플랫폼
Consulta los inscritos, pronósticos de expertos, retirados y resultados de La Rinconada y Valencia. La plataforma hípica digital de Venezuela.
스포츠·피트니스TypeScript · JavaScriptGitHub @YT2810온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Handicappers platform
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
La plataforma de pronósticos hípicos de Venezuela. Desafío Hípico conecta a los mejores expertos (handicappers) con los aficionados a las carreras de caballos en Venezuela. Los handicappers publican sus picks y análisis; los usuarios los consumen con un sistema simple de créditos llamados Golds. Todo está construido para el celular, pensado para el venezolano que lleva su teléfono al hipódromo. En producción: desafiohipico.com — Vercel + MongoDB Atlas Contexto técnico completo → CONTEXT.mdREADME 전문 보기 ↗
La plataforma de pronósticos hípicos de Venezuela.
Desafío Hípico conecta a los mejores expertos (handicappers) con los aficionados a las carreras de caballos en Venezuela. Los handicappers publican sus picks y análisis; los usuarios los consumen con un sistema simple de créditos llamados Golds. Todo está construido para el celular, pensado para el venezolano que lleva su teléfono al hipódromo.
En producción: desafiohipico.com — Vercel + MongoDB Atlas Contexto técnico completo →
CONTEXT.md
Antes de Desafío Hípico, los pronósticos de los expertos hípicos venezolanos estaban dispersos: algunos en Twitter/X, otros en YouTube, otros en canales de Telegram privados. No había una fuente única, no había historial de aciertos, y el usuario no sabía en quién confiar.
La plataforma resuelve tres cosas:
/pronosticos, selecciona la jornada y la carrera| Capa | Tecnología |
|---|---|
| Framework | Next.js 15 App Router + Turbopack |
| Base de datos | MongoDB Atlas (Mongoose 8) |
| Autenticación | Auth.js v5 beta (NextAuth) |
| Estilos | Tailwind CSS v4 |
| Lenguaje | TypeScript 5 (strict, 0 errores) |
| IA | Gemini 2.0 Flash via OpenRouter |
| Resend API (magic links) | |
| PDF Parsing | pdf-parse v1.1.1 (server-side, CJS) |
| Deploy | Vercel |
npm install
npm run dev
Crea .env en la raíz:
MONGODB_URI="mongodb+srv://..."
AUTH_SECRET="openssl rand -base64 32"
AUTH_URL="http://localhost:3000"
AUTH_GOOGLE_ID="xxxx.apps.googleusercontent.com"
AUTH_GOOGLE_SECRET="GOCSPX-xxxx"
RESEND_API_KEY="re_xxxx"
RESEND_FROM="Desafío Hípico <[email protected]>"
NEXT_PUBLIC_WHATSAPP_NUMBER="584120000000"
OPENROUTER_API_KEY="sk-or-xxxx"
/pronosticos — dashboard principal: pronósticos por carrera, ordenados por efectividad (E1), auth gate, 2 gratis por jornada, pago con Golds, badge de ranking, estadísticas en vivo/resultados — resultados oficiales con posiciones, tiempos, dividendos completos y video resumen YouTube; ordenados por fecha/ranking — ranking público de handicappers con métricas E1/E1-2/E1-3/E-General, ordenable, sin login/handicapper/[id] — perfil público de cada experto con historial de aciertos y desglose por hipódromo/programa/[meetingId] — inscritos públicos con preview borroso de pronósticos (CTA para registro)/retirados — caballos retirados del día con SEO/admin/intelligence): el staff pega texto (tweet, WhatsApp, transcripción de YouTube) y la IA extrae los pronósticos, los cruza con los inscritos reales, muestra tabla de revisión, y los publica/admin/ingest): el staff sube imagen del boletín INH y Gemini Vision extrae posiciones, tiempos y dividendos — tabla editable antes de confirmar10 tipos de notificación in-app: recargas aprobadas/rechazadas, nuevo pronóstico de experto seguido, nueva jornada disponible, Gold bajo, etc.
SportsEvent)/api/og/forecast)Marquee sticky bajo el header en /pronosticos que muestra el "fijo del día" de cada handicapper para la carrera actualmente seleccionada. Se actualiza automáticamente al cambiar de carrera.
src/
├── app/
│ ├── page.tsx # Home
│ ├── pronosticos/page.tsx # Dashboard principal
│ ├── resultados/ # Resultados de carreras
│ ├── ranking/page.tsx # Ranking público
│ ├── handicapper/[id]/ # Perfil público handicapper
│ ├── programa/[meetingId]/ # Inscritos públicos
│ ├── retirados/ # Retirados del día
│ ├── admin/ # Panel admin
│ │ ├── ingest/ # PDFs + resultados imagen
│ │ ├── intelligence/ # Ingestor Gemini pronósticos
│ │ ├── topup/ # Recargas
│ │ ├── meetings/ # Video resumen jornadas
│ │ ├── users/ # Usuarios y roles
│ │ └── exchange-rate/ # Tasa BCV
│ └── api/ # Todos los endpoints
├── models/ # Mongoose schemas
├── services/ # Lógica de negocio
│ ├── pdfProcessor.ts # Parser INH + HINAVA
│ ├── ingestService.ts # Upsert idempotente
│ ├── forecastAccessService.ts # Freemium + Golds
│ ├── forecastStatsService.ts # Métricas handicappers
│ ├── notificationService.ts # Central de notificaciones
│ └── followService.ts # Follow/unfollow
├── components/
│ ├── ExpertTickerBar.tsx # Cintillo sticky de expertos
│ ├── TopUpModal.tsx # Recarga de Golds (4 pasos)
│ └── NotificationBell.tsx # Campana con badge
└── lib/
├── mongodb.ts # Conexión singleton
└── constants.ts # Configuración central
# Verificar TypeScript (debe dar 0 errores)
npx tsc --noEmit
# Backfill de pronósticos históricos
npx tsx scripts/backfill-forecasts.ts
# Test ranking
curl http://localhost:3000/api/handicapper/ranking
| Rol | |
|---|---|
[email protected] | admin (auto-asignado en cada login) |
| Cualquier Google | customer |
Documentación técnica detallada → CONTEXT.md