Skip to content

Latest commit

 

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Futbol DB - Sistema de Gestión y Visualización de Datos de Fútbol

React Node.js MongoDB Vite

Aplicación web full-stack para la consulta, almacenamiento y visualización de datos históricos de fútbol. Permite explorar competiciones, equipos, partidos y estadísticas a través de una interfaz interactiva.

Funcionalidades

  • Inicio: Mapa mundial interactivo conLeaflet, visualización de goles por competencia, últimos partidos registrados
  • Competiciones: Exploración de ligas europeas y sudamericanas con estadísticas detalladas
  • Equipos: Información de equipos con gráficos de rendimiento histórico (goles y partidos por año)
  • Enfrentamientos: Historial de partidos entre equipos, victorias, empates y mayores goleadas
  • Comparaciones: Comparación de estadísticas entre equipos con gráficos temporales

Tecnologías

Frontend

  • React 19 con Vite
  • React Router - Navegación
  • Axios - Cliente HTTP
  • Chart.js + react-chartjs-2 - Gráficos
  • Framer Motion - Animaciones
  • Leaflet + react-leaflet - Mapas interactivos
  • React Select - Selectores con estilos custom
  • Typewriter Effect - Efecto de escritura

Backend

  • Node.js + Express
  • MongoDB con Mongoose - Base de datos
  • Firebase Admin - Autenticación/Servicios Google
  • Axios - Consumo de APIs externas
  • Fast-CSV - Procesamiento de archivos CSV
  • Dotenv - Variables de entorno

Base de Datos

  • MongoDB Atlas - Cluster en la nube
  • Mongoose ODM - Modelado de datos

APIs Externas

  • Besoccer API - Datos de competiciones, partidos y equipos

Estructura del Proyecto

ProyectoBaseDeDatos/
├── backend/
│   ├── controllers/
│   │   ├── api.js          # Controlador para consumo de API Besoccer
│   │   ├── dataBase.js     # Controlador para operaciones CRUD en MongoDB
│   │   └── validator.js    # Validación y transformación de datos
│   ├── models/
│   │   ├── db_connection.js  # Conexión a MongoDB
│   │   ├── matchModel.js     # Schema de partidos (Mongoose)
│   │   ├── routes.js         # Rutas de la API REST
│   │   └── dataset/
│   │       └── games.csv     # Dataset histórico de partidos
│   ├── config.env           # Variables de entorno (API keys, DB connection)
│   ├── package.json
│   └── server.js            # Entry point del servidor Express
│
├── frontend/
│   ├── components/
│   │   ├── Inicio/          # Página principal con mapa y stats
│   │   ├── Competencias/    # Vista de competiciones
│   │   ├── Equipos/         # Información y stats de equipos
│   │   ├── Comparaciones/   # Comparación entre equipos
│   │   ├── App.jsx          # Router principal
│   │   └── header.jsx       # Navegación
│   ├── styles/              # Estilos CSS por componente
│   ├── functions/           # Funciones auxiliares
│   ├── package.json
│   └── vite.config.js
│
├── package.json             # Workspace root (vacío)
└── README.md

Modelo de Datos

Match Schema (MongoDB)

{
  date: Number,          // Formato YYYYMMDD
  teamHome: String,
  teamAway: String,
  goalsHome: Number,
  goalsAway: Number,
  competition: String,   // "spain", "england", etc.
  homeCountry: String,
  awayCountry: String,
  homeContinent: String,
  awayContinent: String,
  levelCompetition: String  // "national", "international"
}

API Endpoints

Base de Datos

Método Endpoint Descripción
GET /database Obtener todos los partidos
GET /database/competitions Lista de competiciones
GET /database/competitionsInfo Info de competiciones con goles totales
GET /database/matchDetail/:league/:year Partidos por liga y año
GET /database/team/:league/:year Equipos por liga
GET /database/goals/:league/:year Total de goles por liga/año
GET /database/goalsByTeam/:league/:team Goles de un equipo
GET /database/enfrentamiento/:league/:eq1/:eq2 Historial entre equipos
GET /database/compareGoals/:league/:y1/:y2/:team1/:team2 Comparar goles de equipos
DELETE /database/delete/:league/:year Eliminar partidos

API Externa

Método Endpoint Descripción
GET /api/competitions Competiciones disponibles
GET /api/match/:league/:year/:round Partidos por jornada
GET /api/team/:league/:year Equipos de una liga
POST /api/fill/:league/:year Guardar partidos de API a BD

Requisitos

  • Node.js >= 18
  • MongoDB Atlas (cuenta gratuita)
  • npm o yarn

Instalación

  1. Clonar el repositorio
git clone <repo-url>
cd ProyectoBaseDeDatos
  1. Configurar Backend
cd backend
npm install
  1. Configurar variables de entorno Crear backend/config.env:
PORT=3000
DB_CONNECTION=mongodb+srv://<user>:<password>@cluster.mongodb.net/futbol-db
RTDB_KEY=your_besoccer_api_key
  1. Configurar Frontend
cd frontend
npm install

Ejecución

Desarrollo (ambos servicios)

# Terminal 1 - Backend
cd backend && npm start

# Terminal 2 - Frontend
cd frontend && npm run dev

El frontend estará disponible en http://localhost:5173 y el backend en http://localhost:3000.

Dataset

El proyecto incluye un dataset histórico (backend/models/dataset/games.csv) con partidos de las principales ligas mundiales. Los datos se pueden cargar mediante el endpoint POST /database/fill.

Dataset

Los datos se actualizan automáticamente cada 10 minutos desde la API de Besoccer para las ligas de España e Inglaterra (2025).


Nota: Este proyecto fue desarrollado como parte de un trabajo académico para la gestión de bases de datos.

About

Creación de una pagina web para la manipulación de una base de datos

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages