Una aplicación web interactiva para aprender geografía mundial a través de un divertido juego de banderas y países.
GeoAventura Mundial es un juego educativo que pone a prueba tus conocimientos de geografía mundial. Los jugadores deben identificar países basándose en sus banderas, con múltiples opciones de respuesta. La aplicación incluye más de 190 países y ofrece una experiencia de aprendizaje gamificada.
- 🎮 Juego Interactivo: Identifica países por sus banderas
- 🌐 Base de Datos Completa: Más de 190 países incluidos
- 🎯 Preguntas Personalizables: Elige la cantidad de preguntas (5-190)
- 📊 Sistema de Puntuación: Seguimiento de respuestas correctas e incorrectas
- 🎨 Interfaz Moderna: Diseño responsivo con Tailwind CSS
- 🌙 Modo Oscuro: Tema claro y oscuro disponibles
- 🤖 Integración con IA: Powered by Google Gemini 2.0 Flash
- ⚡ Alto Rendimiento: Construido con Next.js 15 y React 18
- Next.js 15 - Framework de React para aplicaciones web
- React 18 - Biblioteca para interfaces de usuario
- TypeScript - Tipado estático para JavaScript
- Tailwind CSS - Framework de CSS utilitario
- Radix UI - Componentes de UI primitivos y accesibles
- ESLint - Linter para código JavaScript/TypeScript
- Prettier - Formateador de código
- Husky - Git hooks para automatización
- Turbopack - Bundler de alta velocidad para desarrollo
- Genkit - Framework para aplicaciones de IA
- Google AI (Gemini 2.0) - Modelo de lenguaje para características de IA
- Lucide React - Iconos SVG
- React Hook Form - Manejo de formularios
- Recharts - Gráficos y visualizaciones
- Next Themes - Sistema de temas
- Node.js 18+
- npm, yarn, pnpm o bun
-
Clona el repositorio
git clone https://github.com/JoanMike/GeoAventura_Mundial_Game.git cd GeoAventura_Mundial_Game
-
Instala las dependencias
npm install # o yarn install # o pnpm install
-
Configura las variables de entorno
# Crea un archivo .env.local cp .env.example .env.local # Agrega tu API key de Google AI GOOGLE_AI_API_KEY=tu_api_key_aqui
-
Ejecuta el servidor de desarrollo
npm run dev
-
Abre tu navegador Visita http://localhost:9002 para ver la aplicación.
npm run dev
- Inicia el servidor de desarrollo con Turbopacknpm run build
- Construye la aplicación para producciónnpm run start
- Inicia el servidor de producciónnpm run lint
- Ejecuta ESLint para encontrar problemas de códigonpm run typecheck
- Verifica los tipos de TypeScriptnpm run format
- Formatea el código con Prettiernpm run genkit:dev
- Inicia el servidor de desarrollo de Genkitnpm run genkit:watch
- Inicia Genkit en modo watch
-
Configuración del Juego
- Selecciona el número de preguntas que deseas responder (mínimo 5)
- Haz clic en "Comenzar Juego"
-
Jugando
- Se mostrará una bandera de un país
- Selecciona el nombre correcto del país entre las 4 opciones
- Recibirás retroalimentación inmediata sobre tu respuesta
-
Resultados
- Al final del juego, verás tu puntuación total
- Puedes revisar todas tus respuestas
- Opción para jugar nuevamente
src/
├── ai/ # Configuración de IA y Genkit
│ ├── genkit.ts # Configuración principal de Genkit
│ └── dev.ts # Archivo de desarrollo para IA
├── app/ # App Router de Next.js
│ ├── layout.tsx # Layout principal
│ ├── page.tsx # Página principal del juego
│ └── globals.css # Estilos globales
├── components/ # Componentes React
│ ├── game/ # Componentes específicos del juego
│ │ ├── GameSetup.tsx # Configuración del juego
│ │ ├── GamePlay.tsx # Interfaz de juego
│ │ └── GameResults.tsx # Resultados del juego
│ ├── ui/ # Componentes de interfaz reutilizables
│ └── theme-*.tsx # Componentes de tema
├── hooks/ # Custom React hooks
├── lib/ # Utilidades y lógica de negocio
│ ├── countries.ts # Base de datos de países
│ ├── gameLogic.ts # Lógica del juego
│ └── utils.ts # Utilidades generales
La aplicación incluye una base de datos completa con:
- Nombres en español e inglés
- Códigos ISO 3166-1 alpha-2
- URLs de banderas de alta calidad
- Más de 190 países incluidos
La aplicación soporta:
- Modo Claro: Tema por defecto con colores claros
- Modo Oscuro: Tema oscuro para mejor experiencia nocturna
- Persistencia: El tema seleccionado se guarda localmente
El proyecto utiliza Google Gemini 2.0 Flash a través de Genkit para:
- Generación de contenido dinámico
- Mejoras en la experiencia de usuario
- Características futuras de personalización
El proyecto utiliza una configuración personalizada de Tailwind con:
- Colores personalizados para temas
- Animaciones CSS
- Componentes reutilizables
- Configuración estricta para mantener calidad de código
- Formateo automático al hacer commit (Husky)
npm run build
# Despliega en Vercel siguiendo sus instrucciones
npm run build
npm run start
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE
para más detalles.
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una branch para tu feature (
git checkout -b feature/AmazingFeature
) - Commit tus cambios (
git commit -m 'Add some AmazingFeature'
) - Push a la branch (
git push origin feature/AmazingFeature
) - Abre un Pull Request
Si tienes problemas o preguntas:
- Abre un issue
- Revisa la documentación
- Contacta al equipo de desarrollo
- Modo multijugador
- Estadísticas detalladas
- Más tipos de preguntas (capitales, ubicación en mapa)
- Sistema de logros
- Integración con redes sociales
- Modo offline
- Aplicación móvil
¡Desarrollado con ❤️ para aprender geografía de manera divertida!