Juego de preguntas usando datos de OSM y Wikimedia. Se va a hacer la prueba de hacer el juego usando un documento de requerimientos - SRS bien descrito para que con herramientas de inteligencia artifical escriban el código.
La descripción del SRS está en: https://pad.osm.lat/s/rhptvATer
- Node.js (versión 18 o superior)
- npm (incluido con Node.js)
Para la funcionalidad de guardar el mejor puntaje, necesitarás registrar una aplicación OAuth 2.0 en OpenStreetMap y configurar las credenciales en el cliente.
El proyecto está dividido en dos partes principales:
client/: Frontend en React/TypeScriptserver/: Backend en Node.js/TypeScript
- Clonar el repositorio:
git clone https://github.com/tu-usuario/GeoGame.git
cd GeoGame- Instalar dependencias del servidor:
cd server
npm install- Instalar dependencias del cliente:
cd ../client
npm installNota: Si encuentras conflictos de dependencias (especialmente con TypeScript) durante la instalación, puedes intentar usar la opción --legacy-peer-deps:
npm install --legacy-peer-deps
El servidor se ejecuta en el puerto 5000 por defecto. Puedes cambiar esto configurando la variable de entorno PORT en un archivo .env en el directorio server/:
PORT=5000Para habilitar el guardado de mejores puntajes en OpenStreetMap, debes configurar tus credenciales de aplicación OAuth 2.0. Registra tu aplicación en OpenStreetMap OAuth applications (reemplaza your_username con tu usuario de OSM).
Luego, edita el archivo client/src/services/osmAuth.ts y reemplaza los placeholders tu_consumer_key y tu_consumer_secret con tus credenciales:
// client/src/services/osmAuth.ts
const osmAuthConfig = {
oauth_consumer_key: 'TU_CONSUMER_KEY_AQUI', // Reemplaza con tu Clave de Consumidor OAuth
oauth_secret: 'TU_SECRET_AQUI', // Reemplaza con tu Secreto de Consumidor OAuth
oauth_url: 'https://www.openstreetmap.org/oauth', // URL de OAuth de OSM (generalmente no cambia)
// ... otras opciones
};Asegúrate de que la "Redirect URI" configurada en OSM coincida con la URL donde se ejecuta tu aplicación cliente durante el desarrollo y producción (ej. http://localhost:3000 para desarrollo si usas el modo no singlepage).
- Iniciar el servidor (en una terminal):
cd server
npm run devEl script dev utiliza ts-node-dev para reiniciar automáticamente el servidor ante cambios.
- Iniciar el cliente (en otra terminal):
cd client
npm startEl cliente estará disponible en http://localhost:3000 El servidor estará disponible en http://localhost:5000
- Compilar el cliente:
cd client
npm run build- Iniciar el servidor en modo producción:
cd server
npm run build
npm start- Juego de preguntas geográficas usando datos de OpenStreetMap.
- Preguntas cargadas desde archivos JSON locales.
- Interfaz interactiva con mapa usando Leaflet.
- Sistema de puntuación por precisión y tiempo.
- Autenticación con OpenStreetMap (OAuth 2.0) para guardar el mejor puntaje del usuario en sus preferencias de OSM.
- Preguntas basadas en ubicaciones reales y geometrías OSM.
-
Frontend:
- React
- TypeScript
- Redux Toolkit
- Leaflet
- Tailwind CSS
-
Backend:
- Node.js
- Express
- TypeScript
- @turf/turf (para operaciones geoespaciales)
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.