Aplicacion React para explorar ligas por pais, listar equipos por liga y ver detalle de cada equipo usando TheSportsDB.
- Home moderna con hero responsive.
- Busqueda de pais con autocompletado personalizado.
- Carga inmediata de ligas al elegir pais.
- Navegacion corta y amigable:
/ligas/equipos/:id/equipo/:id
- Loading full-screen con fade/blur.
- React 17
- React Router DOM 5
- Material-UI v4
- Create React App (react-scripts 4.0.3)
- API: TheSportsDB v1
- Node.js 20.x
- npm 10 o superior
El proyecto incluye:
.nvmrccon20enginesenpackage.json
npm install --legacy-peer-deps# desarrollo
npm start
# build produccion
npm run build
# tests
npm testNota: start y build usan NODE_OPTIONS=--openssl-legacy-provider para compatibilidad con Webpack 4 en Node 20.
Puedes crear un .env opcional:
REACT_APP_THESPORTSDB_API_KEY=123Si no existe, el proyecto usa 123 por defecto.
Rutas publicas actuales:
/-> Home/ligas-> Busqueda de ligas por pais/equipos/:id-> Equipos de la liga/equipo/:id-> Detalle del equipo
Rutas antiguas (legacy) redirigidas automaticamente:
/leaguescontext/countries->/ligas/teamscontext/teams/:id->/equipos/:id/teamcontext/team/:id->/equipo/:id
-
LeaguesContext- Carga paises.
- Guarda pais seleccionado (
selectedCountry) para persistir al navegar. - Carga ligas por pais (
validateC).
-
TeamsContext- Carga equipos por liga con estrategia de fusion para evitar limites de la API gratuita:
eventsseasonlookuptablesearch_all_teamspor idsearch_all_teamspor nombre de liga
- Carga equipos por liga con estrategia de fusion para evitar limites de la API gratuita:
-
TeamContext- Carga detalle de equipo por id.
- Reutiliza estado de navegacion cuando esta disponible para mejorar consistencia.
src/constants/index.js centraliza endpoints de TheSportsDB.
search_all_teamsdevuelve como maximo 10 filas.all_countriesdevuelve como maximo 50 filas.
Para mejorar UX:
- Se fusionan multiples endpoints para recuperar mas equipos.
- Se amplian paises con
Intl.DisplayNamescuando la API no alcanza.
Archivos relevantes:
vercel.jsonpackage.json(engines, scripts)
Configuracion aplicada:
installCommand:npm install --legacy-peer-depsbuildCommand:npm run buildoutputDirectory:build
- Push a
master(o rama deseada). - Importar proyecto en Vercel.
- Verificar que use Node 20.x (ya viene forzado por
engines).
Ya resuelto en este repo con:
overrides+resolutionsfijandopostcss-safe-parseren6.0.0postcssen dependencias
Ya resuelto en scripts con:
cross-env NODE_OPTIONS=--openssl-legacy-provider
El proyecto fuerza npm install en vercel.json, por lo que no deberia romper build.
src/
components/
Common/
Leagues/
Teams/
contexts/
constants/
utils/
App.js
Antes de publicar cambios:
npm run buildSi compila, la app esta lista para deploy en Vercel.
Uso educativo/demostrativo.