C.R.A.S.H.: Construyendo un Simulador de Impacto de Asteroides de la NASA en 32 Horas
Postmortem del proyecto del hackathon NSAC2025 donde construimos un simulador 3D de impacto de asteroides usando datos reales de la NASA, CesiumJS y Three.js en solo 32 horas.
El Desafío
NSAC2025 (NASA Space Apps Challenge) - 32 horas para construir algo significativo con los datos abiertos de la NASA. Nuestro equipo eligió el desafío de "Simulación de Impacto de Asteroides".
El Stack (Elegido por Velocidad)
- CesiumJS - Visualización de globo 3D (la elección de NASA para geoespacial)
- Three.js - Visualizaciones personalizadas de asteroides/impactos
- React + TypeScript - Framework frontend
- FastAPI + Python - Backend para integración con APIs de NASA
- MapBox - Mapas base y terreno
- TailwindCSS - Desarrollo rápido de UI
Decisiones de Arquitectura
1. Renderizado Dividido: Cesium para Globo, Three.js para Efectos
Cesium maneja la Tierra, terreno e imágenes satelitales. Three.js superpone trayectorias de asteroides, efectos de impacto y sistemas de partículas.
2. Pipeline de Datos de NASA
Datos en tiempo real de:
- API NASA CNEOS - Datos de Objetos Cercanos a la Tierra
- Base de Datos de Cuerpos Pequeños JPL - Parámetros orbitales
- Lista de Riesgo SENTRY - Probabilidades de impacto
3. Simulación de Física de Impacto
Simplificada pero visualmente precisa:
- Cálculo de energía cinética:
E = 0.5 * m * v² - Escalado de diámetro de cráter (basado en modelos publicados)
- Sistema de partículas de eyección con Three.js Points
Qué Salió Bien
- Preparación pre-hackathon - Configuramos la integración Cesium + Three.js la semana anterior
- Contratos de datos claros - Interfaces TypeScript coincidían con modelos Pydantic de Python
- Flujos de trabajo paralelos - Una persona en datos, una en 3D, una en UI
- Disciplina de alcance - Recortamos características sin piedad (sin cuentas de usuario, sin guardado)
Qué Haríamos Distinto
- Mejor gestión de estado - React Context se volvió caótico con el estado de la escena 3D
- Despliegue automatizado - Despliegues manuales Vercel + Railway perdieron tiempo
- Más caché de datos NASA - Límites de rate de API durante la demo
El Resultado
- Simulador funcional con datos reales de asteroides
- Globo 3D interactivo con visualización de impacto
- Panel de evaluación de riesgo mostrando probabilidad, energía, tamaño de cráter
- En vivo en: crashnasa.earth
Conclusiones Clave para Hackathons
- Elige tecnología aburrida que conozcas bien - No es momento de aprender un framework nuevo
- Diseña el flujo de datos primero - Contrato Frontend/Backend ahorra horas
- Despliega temprano, despliega seguido - Detecta problemas de integración inmediato
- Demo > Calidad de código - Los jueces ven la demo, no el historial de Git
Enlaces
- Demo: crashnasa.earth
- GitHub: C.R.A.S.H.