Fronteras Históricas
Visualiza las fronteras de los países en diferentes épocas de la historia (2000 a.C.-1994)
Como se ve en r/dataisbeautiful.
Captura de pantalla

Características
Fuentes de Información
La aplicación proporciona información de países a través de dos fuentes:
- Wikipedia (por defecto) - Obtiene información en tiempo real desde Wikipedia
- Impulsado por IA - Utiliza Google Gemini AI para generar información de países con contexto histórico
Caché de Respuestas de IA
La aplicación usa Redis para almacenar en caché las respuestas de IA para mejorar el rendimiento:
- ⚡ Respuestas instantáneas para países/años previamente solicitados
- 💰 Costos de API reducidos - Menos llamadas a Google Gemini
- 🔧 Expiración inteligente - TTL de caché de 1 hora mantiene el contenido fresco
- 📊 Seguimiento analítico - Tasa de aciertos/fallos de caché en Google Analytics
Análisis de la Funcionalidad de IA
La aplicación incluye un seguimiento completo con Google Analytics para la función de IA para entender la interacción del usuario y el rendimiento:
#### Eventos Rastreables
Uso del proveedor:
toggle_provider- Cuando los usuarios cambian entre Wikipedia e IAenable_ai/disable_ai- Activación/desactivación de la función de IAprovider_restored- Cuando la preferencia se carga desde localStoragesession_provider_active- Proveedor activo por sesión
request_initiated- Solicitud de IA iniciadaresponse_success- Respuesta de IA exitosaresponse_time_success- Tiempo de respuesta para solicitudes exitosasresponse_length- Conteo de caracteres de respuestas de IAresponse_word_count- Conteo de palabras de respuestas de IArequest_failed- Solicitudes de IA fallidasapi_error- Errores específicos de la API con códigos de estadoapi_key_missing- Eventos de clave API faltante
cache_hit- Respuesta servida desde caché Redis (más rápido)cache_miss- Sin respuesta en caché, llamada a API realizadacache_error- Redis no disponible (recurso a API)cache_write_success- Respuesta almacenada en caché con éxitocache_write_error- Fallo al almacenar la respuesta en caché
popup_displayed- Cuando aparecen ventanas emergentes con contenido de IA vs Wikipediacontent_displayed- Visualización de contenido exitosacontent_error_displayed- Contenido de error mostrado a usuarioscontent_empty_displayed- Escenarios de contenido vacío/sin contenidopopup_closed- Usuario cierra ventanas emergentes de información
- Tiempos de respuesta (éxito/fallo)
- Métricas de calidad de contenido (conteo de palabras, conteo de caracteres)
- Tasas y tipos de errores
- Patrones de interacción del usuario
Todos los eventos relacionados con IA usan la categoría "Función IA" para facilitar el filtrado en Google Analytics.
#### Privacidad de Datos
El seguimiento de análisis es anónimo y se centra en los patrones de uso de funciones en lugar de información personal. No se rastrean claves API ni datos sensibles.
Configuración
Requisitos previos
- Node.js 18+ y yarn
- Clave API de Google Gemini (disponible nivel gratuito)
- Propiedad de Google Analytics 4 (opcional, para análisis)
Instalación
git clone https://github.com/nrgapple/historic-country-borders-app.git
cd historic-country-borders-app
yarn installVariables de Entorno
Cree un archivo .env.local:
# Optional for analytics
NEXT_PUBLIC_GA_FOUR=your_google_analytics_idOptional for map features
NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=your_mapbox_tokenRedis for AI response caching (required for caching)
REDIS_URL=your_redis_connection_stringRequired for AI features (server-side only)
GEMINI_API_KEY=your_gemini_api_key_hereObtención de Claves API
#### Google Gemini API (Gratis)
- Visite Google AI Studio
- Inicie sesión con su cuenta de Google
- Haga clic en "Crear clave API"
- Copie la clave generada en su archivo
.env.local
- ✅ 60 solicitudes por minuto (nivel gratuito generoso)
- ✅ No se requiere tarjeta de crédito
- ✅ Respuestas de IA de alta calidad
- ✅ Excelente conocimiento histórico
- Configure Redis en Vercel o cualquier proveedor de Redis
- Añada la variable de entorno
REDIS_URLa su proyecto - Consulte REDIS_SETUP.md para instrucciones detalladas
- ⚡ Respuestas instantáneas para contenido en caché
- 💰 Reduce el uso y costos de la API
- 🔧 Expiración automática de caché de 1 hora
- 📊 Análisis de rendimiento de la caché
- Visite Google Analytics
- Cree una nueva propiedad GA4
- Obtenga su ID de Medición (formato: G-XXXXXXXXXX)
- Agregue al archivo
.env.local
Desarrollo
yarn devAbre http://localhost:3000 para ver la aplicación.
Pruebas
# Run all tests
yarn testRun tests in watch mode
yarn test:watchRun specific test files
yarn test hooks/__tests__/useAI.test.tsxSolución de Problemas de Funciones de IA
Problemas Comunes
"La información de IA requiere configuración de la clave API de Gemini"
- Añade tu clave API de Gemini en
.env.local - Reinicia el servidor de desarrollo
- Consulta GEMINI_SETUP.md para una configuración detallada
- Tiempo de respuesta normal: 1-3 segundos
- Verifica tu conexión a internet
- La API de Gemini tiene límites de tasa (60 solicitudes/minuto)
- Prueba cambiar a Wikipedia temporalmente
- Revisa la consola del navegador para mensajes de error detallados
- Verifica que tu clave API sea válida
Panel de Análisis
Para ver análisis de funciones de IA en Google Analytics:
- Ve a Eventos → Todos los Eventos
- Filtra por Categoría de Evento = "AI Feature"
- Métricas clave para monitorear:
toggle_provider- Adopción de la funciónresponse_successvsrequest_failed- Tasa de éxitoresponse_time_success- Rendimientocontent_displayed- Compromiso del usuario
Monitoreo de Rendimiento
La aplicación rastrea varias métricas de rendimiento:
- Tiempos de Respuesta: Tiempo promedio de respuesta de IA vs Wikipedia
- Tasas de Éxito: Proporción de éxito/fallo en solicitudes de IA
- Calidad del Contenido: Conteo de palabras y longitud de respuestas de IA
- Compromiso del Usuario: Cómo interactúan los usuarios con contenido de IA vs Wikipedia
Contribuyendo
- Haz un fork del repositorio
- Crea una rama de características
- Realiza tus cambios
- Añade pruebas para la nueva funcionalidad
- Asegúrate de que todas las pruebas pasen
- Envía una solicitud de extracción
Licencia
Licencia MIT - ver LICENSE para más detalles.
Agradecimientos
- Datos históricos de fronteras de World Historical Gazetteer
- IA potenciada por Google Gemini
- Mapas potenciado por Mapbox
- Análisis por Google Analytics 4