Gincana App es una aplicación web de competición de carreras que permite a los administradores gestionar corredores, equipos y cronómetros en tiempo real. Los usuarios pueden visualizar clasificaciones, actualizar su perfil y registrar tiempos para las carreras. La aplicación está construida con un backend en Node.js y MySQL, mientras que el frontend está desarrollado con React y Tailwind CSS. El proyecto también incluye WebSockets para la actualización en tiempo real del ranking de corredores y equipos.
- Gestión de corredores y equipos: Los administradores pueden añadir corredores y equipos.
- Cronómetros en tiempo real: Se pueden iniciar, parar y gestionar múltiples cronómetros para cada corredor.
- Ranking en tiempo real: Actualización automática de las clasificaciones utilizando WebSockets.
- Perfil de usuario: Los usuarios pueden actualizar sus perfiles, incluyendo la foto de perfil.
- Seguridad: Autenticación mediante tokens JWT, con verificación de expiración.
- Interfaz adaptable: Diseño responsive utilizando Tailwind CSS.
- Node.js y Express para la API.
- MySQL como base de datos.
- WebSockets para las actualizaciones en tiempo real.
- Multer para la gestión de archivos y subida de imágenes.
- JWT para autenticación de usuarios.
- Docker para contenerización.
- React para la interfaz de usuario.
- Tailwind CSS para el diseño adaptable.
- Axios para las solicitudes HTTP.
- React Router para la navegación en la aplicación.
- Docker para el despliegue de la aplicación en contenedores.
Asegúrate de tener instalados los siguientes programas:
git clone https://github.com/davidfdzmorilla/gincana-app.git
cd gincana-app
-
Configura las variables de entorno en el archivo .env en el directorio backend:
DB_HOST=localhost DB_USER=root DB_PASSWORD=yourpassword DB_NAME=gincana JWT_SECRET=your_jwt_secret
-
Configura las variables de entorno en el archivo .env en el directorio frontend:
REACT_APP_API_URL=your_api_url
-
Configura las variables de entorno en el archivo .env en el directorio backend:
NODE_ENV=development PORT=5500 DB_HOST=db DB_USER=your_db_user DB_PASSWORD=your_db_password DB_NAME=your_db_name MYSQL_USER=your_db_user MYSQL_PASSWORD=your_db_password MYSQL_DATABASE=your_db_name MYSQL_ROOT_PASSWORD=your_db_root_password
-
Construye las imágenes de Docker para el backend y el frontend:
docker-compose up -d --build
- Los administradores pueden crear nuevos corredores, equipos y gestionar los cronómetros.
- La administración de tiempos se realiza en la ruta /chrono, donde se pueden ver, añadir y gestionar los tiempos de los corredores.
- Los corredores pueden ver sus tiempos y clasificaciones, actualizar su perfil y equipo, y subir una foto de perfil.
- Las actualizaciones en tiempo real están disponibles en la página de ranking (/ranking).
Este proyecto está licenciado bajo la licencia MIT.