Tangram is an open framework that aggregates and processes ADS-B and Mode S surveillance data for real-time analysis. It provides a flexible plugin architecture where users can easily implement custom analyzers for their specific needs.
The system consists of a JavaScript frontend and a Python backend built with FastAPI. The backend efficiently aggregates data from multiple receiver streams and exposes a WebSocket interface, enabling real-time data visualization and analysis in the browser-based frontend.
-
Install just, a command project-specific runner
-
Install podman, a container runtime
On macOS, Podman requires a virtual machine to run containers. You need to initialize and start this machine: Code
podman machine init podman machine start
-
Create a
.env
file from the template (edit if necessary):cp .env.example .env
-
Pull and run a
Redis
container
This container is used for message caching between different services:just redis # runs in daemon mode
-
Pull and run
jet1090
for decoding Mode S messagesjust jet1090
The sources are defined in
config_jet1090.toml
; the path to this file is defined in the.env
file. You should be able to see thejet1090
console, which contains the data that is being received from the source, for example: -
Build and run the tangram container (in another terminal):
just create-tangram # only once just tangram
You should be able to see the process compose console, which contains all the processes that are running in the background, for example:
-
Visualize the live data from http://localhost:2024 in your browser.
Here is an example screenshot of the tool running in real-time:
This project is currently funded by the Dutch Research Council (NWO)'s Open Science Fund, OSF23.1.051: https://www.nwo.nl/en/projects/osf231051.
In 2020, @junzis and @xoolive published a paper Detecting and Measuring Turbulence from Mode S Surveillance Downlink Data on how real-time Mode S data can be used to detect turbulence.
Based on this method, @MichelKhalaf started developing this tool as part of his training with @xoolive in 2021, which was completed in Summer 2022. After that, the project was then lightly maintained by @xoolive and @junzis, while we have been applying for funding to continue this tool.
And in 2023, we received funding from NWO to continue the development of this tool. With this funding, @emctoo from Shinetech was hired to work alongside us on this open-source project.