neilberkman
Sidereon - GPS, satellite positioning, and astrodynamics for Elixir
I just released sidereon, an Elixir library for GPS-style satellite positioning, satellite orbit propagation, and astrodynamics, backed by a shared Rust core.
sidereon lets Elixir code answer questions like:
- Where is this satellite now, or where will it be later?
- What satellites are visible from this point on Earth?
- When will a satellite pass overhead?
GNSS (Global Navigation Satellite System) encompasses GPS and the related satellite navigation systems used for positioning and timing. Most people know the end-user side as “GPS”; sidereon is for the underlying data, geometry, file formats, and math.
The core engine is written in Rust and is also exposed through Rust, Python, C, and JavaScript/WebAssembly. The Elixir package uses normal modules, structs, tagged results, and BEAM-friendly APIs, while the heavy numerical work runs in the shared Rust core.
Functionality includes:
- Calculate satellite positions from public orbit data, including current and future positions (propagation)
- Compute observer look angles, visibility, skyplots, and pass predictions
- Solve receiver position from GPS-style observations
- Work with single-point positioning, RTK, PPP, DGNSS, DOP, and related GNSS calculations
- Parse common satellite/GNSS formats such as RINEX, CRINEX, SP3, IONEX, ANTEX, RTCM, OMM, CDM, OEM, and OPM
- Use frame/time transforms, Earth orientation, ionosphere/troposphere corrections, conjunction screening, RF helpers, eclipse/terminator geometry, and orbit utilities
If you have used tools in other ecosystems such as RTKLIB, Orekit, Skyfield, SGP4 libraries, or SPICE-related tooling, sidereon encompasses large parts of that territory, but implemented as a unified, fast Rust core exposed consistently but idiomatically across multiple languages.
The demo at https://sidereon.dev runs the WebAssembly build of the same core in the browser. It shows a moving satellite constellation, click-to-place observer skyplots, in-browser positioning solves from bundled data, TEC maps, coverage, and conjunction screening.
The project is largely AI coded but heavily steered in terms of architecture and very focused on validation: committed reference fixtures, bit-for-bit checks vs. reference implementations where that is a valid claim, explicit tolerances for solver outputs where it is not, fuzz targets, etc.
I would love any feedback on this!
Demo: https://sidereon.dev
Hex: sidereon | Hex
Source:
Popular in Announcing
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









