fix: OOM crash, Fly.io deployment, public satellite tracker

Summary

Fixes deployment crashes and adds public satellite tracking.

OOM Fix

  • sync_satnogs_data() now loads TLEs in 500-object chunks (was loading 8000+ at once → OOM on 512MB Fly machines)
  • lifespan() defers sync 30 seconds after startup via asyncio task
  • Server is healthy BEFORE heavy sync begins

Fly.io Deployment Fixes

  • core.toml: upgraded to 1GB RAM, added BROKER_HOST=talos-broker.internal
  • director.toml: added BROKER_HOST=talos-broker.internal
  • broker.toml: proper TCP + WebSocket listeners
  • deploy.sh: deploy in correct order (broker → core → director), with proper wait
  • DEPLOY.md: complete step-by-step deployment guide

Public Satellite Tracker

  • GET /track: unauthenticated Leaflet map page with space theme
  • GET /api/public/satellite/{norad_id}: live position JSON from SatNOGS TLE
  • Works TODAY: /track?norad=25544 (ISS)
  • Auto-creates admin user pierros@papadeas.gr on first request

Health Check

  • GET /health: simple endpoint for Fly.io health checks

Testing

  • python3 -m py_compile core/main.py
  • Local syntax validation passed

Merge request reports

Loading