Project overview
The app fetches TLE text, parses satellite records, propagates to the current time, then updates a marker cloud in a live render loop. Cache logic keeps network traffic low during iteration.
Example TLE lines used during development
STARLINK-33811
1 63504U 25071M 26023.28614915 .00041226 00000+0 13958-2 0 9994
2 63504 53.1611 351.1581 0001773 86.6161 273.5043 15.30212771 45751
STARLINK-33825
1 63505U 25071N 26024.21202195 .00069628 00000+0 23363-2 0 9999
2 63505 53.1620 346.2700 0001933 73.6037 286.5177 15.30265358 45960
Demo
Live Satellite Motion
Python was chosen for its balance of readability and performance. The app handles 14,000+ satellites at 30+ FPS on a standard laptop simulatenously. Here in a live view, if you look closely you can see the smooth updating of all satellite positions at 30 FPS with no lag. Satellite positions are updated in real-time using SGP4 propagation based on TLE data fetched from CelesTrak.
Time Lapse Motion
I've also included a time-lapse version of the same run. This speeds up satellite motion so you can see how they orbit Earth over time and that they are actually following expected orbital motion.
Technical architecture
The code splits responsibilities across small modules so each file stays readable and testable.
Connect
Want to talk about Python tools, simulation work, or visualization workflows. Reach out.