Lumina
🌑 Lumina: Rastreo Lunar y Meteorológico Avanzado
Lumina es una aplicación web interactiva diseñada para conectar a los usuarios con su entorno astronómico. La plataforma permite localizar la posición exacta de la luna en el cielo, evaluar las condiciones meteorológicas en tiempo real y determinar la visibilidad lunar, todo esto utilizando tecnologías web nativas.
✨ Características Principales
- Posicionamiento Inmersivo: Utiliza la API de Sensores del dispositivo móvil (giroscopio y magnetómetro) para guiar al usuario visualmente hacia la ubicación actual de la luna en la bóveda celeste.
- Análisis Meteorológico en Vivo: Cruza los datos de ubicación con APIs del clima para determinar la nubosidad y calcular si la luna es visible a simple vista desde la posición del usuario.
- Privacidad por Diseño (Privacy-First): La plataforma fue construida con una arquitectura de datos efímera. Los datos de geolocalización y telemetría del usuario se procesan estrictamente en la memoria del dispositivo (Client-side) y nunca son almacenados, enviados a bases de datos ni recopilados.
🛠️ Arquitectura y Tecnologías
El proyecto prescinde de frameworks pesados en el frontend para maximizar el rendimiento y la velocidad de carga, utilizando un stack eficiente:
- Backend (Node.js & Express): Servidor robusto para el enrutamiento seguro y la comunicación con APIs de terceros (clima y astronomía) ocultando las llaves de acceso (API Keys).
- Frontend (EJS): Motor de plantillas dinámico para renderizar la interfaz desde el servidor de forma rápida.
- Estilos (CSS3 Puro): Diseño inmersivo, animaciones fluidas y Modo Oscuro nativo sin depender de librerías externas.
- Lógica Core (Vanilla JS): Manejo asíncrono de la
Geolocation APIyDeviceOrientation APIdirectamente desde el DOM.
🚀 Instalación y Ejecución local
Para correr este proyecto en tu entorno local, clona el repositorio y ejecuta:
# 1. Instalar dependencias npm install # 2. Configurar variables de entorno (Crear archivo .env) # Añadir las API Keys correspondientes del clima # 3. Iniciar el servidor npm start
Nota: Para probar las funcionalidades de sensores móviles en desarrollo local, es posible que necesites exponer tu localhost a través de HTTPS (ej. usando ngrok), ya que los navegadores modernos exigen contextos seguros para acceder a la ubicación y al giroscopio.