FootySage es una aplicación web de análisis y simulación de partidos de fútbol en tiempo real, con visualización de eventos en el terreno de juego, predicciones mediante modelos de ML, análisis de ligas mediante gráficos interactivos por liga y comparativas y un apartado informativo de próximos partidos. Desarrollado utilizando:
- Backend: Django + Django REST Framework
- Frontend: React
- Base de datos: PostgreSQL
- Entornos separados: Python (
venv
) y Node (npm
)
FootySage/
├── backend/ # Backend con Django + DRF
│ ├── backend/ # Configuración principal del backend
│ ├── users/ # App para la lógica y gestión de usuarios
│ ├── graphic_analysis/ # App para gráficos
│ ├── matches/ # App para la lógica y gestión de partidos
| | └── real_time_simulation/ # Submódulo para la simulación de partidos
│ ├── scripts/ # Scripts de carga de datos
│ ├── database/ # Base de datos inicial
│ ├── models/ # Modelos de ML por liga en formato .pkl
│ ├── .env.example
│ ├── manage.py
│ └── requirements.txt # Dependencias del backend
├── frontend/ # Frontend con React
│ ├── public/
│ ├── src/
│ │ ├── assets/ # Recursos visuales
│ │ │ ├── fonts/ # Tipografías
│ │ │ ├── images/ # Imágenes usadas en la UI
│ │ │ └── styles/ # Hojas de estilo CSS base
│ │ ├── components/ # Componentes reutilizables
│ │ ├── context/ # Contextos globales de la app
│ │ ├── views/ # Páginas principales de la aplicación
│ │ │ ├── CompetitionsAnalysis/ # Análisis por competiciones
│ │ │ ├── Home/ # Vista de inicio tras iniciar sesión
│ │ │ ├── LandingPage/ # Landing pública de presentación
│ │ │ ├── Matches/ # Subsecciones relacionadas con partidos
│ │ │ │ ├── MatchAnalysis/
│ │ │ │ ├── MatchSelector/
│ │ │ │ ├── SimulateMatch/
│ │ │ │ └── UpcomingMatches/
│ │ │ └── User/ # Subsecciones relacionadas con el usuario
│ │ │ ├── Login/
│ │ │ ├── Profile/
│ │ │ ├── RecoverPassword/
│ │ │ └── Register/
│ │ ├── App.jsx
│ │ └── index.js
│ ├── .env.example
│ ├── package.json # Dependencias y scripts del proyecto
│ └── package-lock.json # Lockfile de npm
|── .gitignore
└── README.md
Asegúrate de tener instalado lo siguiente:
- Python 3.8+
- PostgreSQL (incluyendo SQL Shell o pgAdmin)
- Node.js + npm
git clone https://github.com/Jaime-Linares/FootySage.git
cd FootySage
Abre SQL Shell (psql) o tu terminal y ejecuta:
createdb -U tu_usuario footysage_db
-
Si te ha funcionado pasa al siguiente punto. Si no te funciona ejecuta lo siguiente:
psql -U tu_usuario -d tu_usuario
Una vez dentro del prompt
postgres=#
, ejecuta:CREATE DATABASE footysage_db;
Para salir de la consola:
\q
cd backend
python -m venv venv
.\venv\Scripts\Activate.ps1 # En Windows
# source venv/bin/activate # En Linux/Mac
pip install -r requirements.txt
Copia el archivo de ejemplo y edita los valores:
cp .env.example .env
Contenido del .env.example
:
DB_NAME=footysage_db
DB_USER=
DB_PASSWORD=
DB_HOST=localhost
DB_PORT=5432
API_FOOTBALL_KEY=
EMAIL_HOST_PASSWORD=
Modifica .env
con tus credenciales de PostgreSQL, de API-Football y escribe al correo info.footysage@gmail.com para que te dé el valor de la variable EMAIL_HOST_PASSWORD
que habilita la funcionalidad de recuperar contraseñas.
pg_restore -U tu_usuario -d footysage_db -v database/footysage_db.bak
python manage.py migrate
python scripts/load_statsbomb_data.py
python manage.py runserver
Accede a: http://localhost:8000
Copia el archivo de ejemplo y edita los valores:
cd ../frontend
cp .env.example .env
Contenido del .env.example
:
REACT_APP_API_BASE_URL=
Modifica .env
con la ruta a la API. Tal y como esta configurado deberías de poner lo siguiente:
REACT_APP_API_BASE_URL=http://localhost:8000
npm install
npm start
Accede a: http://localhost:3000
Este proyecto está bajo licencia MIT. Puedes ver los detalles aquí.