Cuenta regresiva al hardware — qué hago mientras tanto
Faltan unas semanas para pedir el RTL-SDR y el SAWbird. Aprovecho para dejar el portal listo para cuando lleguen los datos reales.
El plan original era pedir todo el hardware en mayo y empezar a montar en junio. La realidad: mejor llegar a junio con el portal listo para recibir datos reales que con el hardware en una caja y el software a medio cocinar.
Estado del portal hoy
- Landing con globo 3D, posiciones reales de Meteor-M2-4 propagadas
con satellite.js desde TLE de Celestrak. Botón "Localizar M2-4".
- 6 páginas completas en Next.js: galería, detalle de pasada,
developers (API + RSS + webhooks), alertas, estado de la estación.
- Datos mock tipados en
lib/mock-passes.ts— el día que el
backend FastAPI esté listo, este archivo se borra y el frontend pasa a hacer fetch('/v1/passes') sin cambiar nada más.
- Barra de calidad documentada y aplicada: imágenes con
next/image,
contraste WCAG AA, animaciones con prefers-reduced-motion, contenido en es-ES sin marketing-speak.
Lo que viene antes de que llegue el cartón de Amazon
En orden:
- Páginas de conocimiento — /about, /learning, /roadmap, /journal y
/satellites/*. Es lo que estás leyendo ahora.
- Portal Next.js en producción — sustituir el nginx que sirve los
mockups HTML por un container Next.js con Dockerfile multi-stage.
- FastAPI stub — backend con los endpoints documentados en
/developers devolviendo los mismos mocks, pero por HTTP. Frontend pasa de import a fetch.
Cuando llegue el RTL-SDR, los tres pasos están hechos. Solo queda sustituir la fuente de datos del backend: del mock a DuckDB con pasadas reales.
Lecciones que me llevo de Fase 0
- No subestimes la documentación pública. Cada vez que descubro
algo nuevo (NOAA POES apagado, polarización RHCP, los 5 enhancements), lo escribo en docs/ y de ahí pasa al portal.
- Los mockups honestos son útiles. Sample images de Wikimedia PD
con leyenda y crédito. Datos inventados pero tipados con TypeScript estricto. Nadie se confunde con qué es real y qué es mockup.
- El globo 3D no era estrictamente necesario y costó cuatro
iteraciones (CDN bloqueado, conflicto de versiones THREE.js, cache 4h de Cloudflare). Pero el resultado vale la pena.
Próxima entrada cuando reciba el primer pase real.
— Javier