$ show sgoudelis/ground-station
This is a full-stack, self-hosted satellite ground station, not a data-research repository, though it contains substantial orbital-data ingestion, telemetry parsing, and signal-processing components. The application connects software-defined radios (RTL-SDR, Airspy, UHD, SoapySDR, SDRplay) to a real-time web UI for satellite tracking, hardware control, IQ/waterfall visualization, demodulation, decoding, recording, and observation scheduling. The backend is Python with FastAPI/Socket.IO, SQLAlchemy/Alembic, multiprocessing workers, and pub/sub broadcaster components; the frontend is React/Redux Toolkit/Material-UI. The user-facing system manages rotators and rigs via Hamlib, propagates TLE/OMM orbital elements, predicts passes, applies Doppler correction, schedules automated observations, and exposes file browsing, telemetry analysis, and audio transcription through external AI providers.
The LLM identified 4 files worth highlighting for reuse:
Thread-safe fan-out broadcaster that distributes IQ sample chunks to multiple subscribers while collecting per-subscriber statistics. It isolates the hard problem of multiplexing a high-rate sample source across consumer threads/processes and is reusable in any SDR, audio, or sensor streaming pipeline.
Generic binary payload analysis engine that probes unknown telemetry blocks for hex dumps, float/uint sequences, string content, entropy, and timestamp-like patterns. This is a practical forensic/data-inspection utility that can be extracted and applied to any unknown packet-format reverse-engineering task.
Path traversal guard enforcing that user-controlled file operations remain inside allowed roots and that generated filenames are safe for SigMF artifacts and output bundles. The pattern is directly reusable in any file-serving application that must protect against malicious path input.
Pluggable adapters for ingesting orbital elements from CelesTrak, Space-Track, and generic HTTP endpoints, with strict URL validation, provider-specific parsing, and circuit-breaker behavior. The adapter/registry approach generalizes well to any multi-source external data synchronization subsystem.