Air Sports Live Tracking (ASLT) is an online (live) scoring platform for aircraft competitions. Currently it is primarily focused on precision flying and air navigation race (ANR), but it also supports other task types such as poker run and the novel Air Sports Challenge.
Please join our Slack community
Our primary server is up and running at https://airsports.no/ for anyone to use free of charge. We are looking for funding to keep this service available.
ASLT can be run locally using the docker-compose.yml file, and it is designed to be deployed to GKE using helm. There are two accompanying apps, Airsports Google Play and Airsport Apple Appstore that integrate with the user management system of ASLT. The repository includes a client also for Microsoft flight simulator 2020 (MFSFS2020). This has also been successfully tested for MSFS 2024.
A user manual for content creators is available here. It is a bit outdated and contributions are welcome. An additional user manual for the results service can be downloaded here. Both these documents should preferably be moved to the wiki for easy maintenance and improved availability.
The API is documented using swagger. This guide provides a brief overview of how to use the api to create new navigation tasks and manage contestants.
ASLT uses the traccar.org open source tracking server for receiving position reports from users. This allows for support of a wide range of hardware and software trackers.
The project welcomes contributions of all kinds in the form of pull requests. Areas were contributions are specifically welcome include:
- User documentation
- Translation
- New task types
- User interface improvements
The project is currently in the early stages of open source release, so some work is required to clean up the code base to make it more easily maintainable. Check the implementation guide for some hints.
Everything is built upon Django, React, and Python 3.12. Refer to the wiki for a brief description of the most important models. Information about the scoring engine and how the live tracking works is found in this wiki page
To quickly get started with development simply check out the repos story and build the dev container, preferably in vscode. This sets up the full development environment, starts watching builders for the front end resources, starts the development web server, the celery instance, and the position processor. These are controlled by tasks.json.
The project comes with a docker-compose.yml file that can be used to build and test locally. Simply execute
docker compose build
to build all required images.
- tracker_daphne: Is the web server that services both http and websocket traffic.
- tracker_celery: Django batch processing. Does track recalculation and flight order generation in the background.
- tracker_processor: Interfaces with traccar to receive incoming position reports and executes contestant processors either internally or as kubernetes jobs.
Additional images that are part of the compose file are:
- mysql (database)
- redis (caching and interprocess communication)
- traccar (local traccar.org server)
The helm chart used for production employment has a few additional dependencies:
- wordpress: Hosts home.airsports.no. This should eventually be moved through a separate stand-alone chart.
- mbtils: Basic tile server used to serve certain maps to the navigation map generation process.
These additional dependencies are not required for executing locally and are therefore not part of docker-compose.yml.
A full local development environment can be started by running:
docker compose up tracker_daphne
This executes the three primary containers which also brings up the additional infrastructure containers. The Web server can be accessed at http://localhost:8002/. A default superuser is created with username test@test.com and password admin. This can be used to login through the web interface.
After optimizing the docker image the various front end systems must be compiled outside of the container. For development the docker compose file maps they build results into the container. This is done in the following manners:
cd react_vite/
npm ci
npm run buildnpm ci
src/static/css/tailwindcss -i src/static/css/input.css -o src/static/css/output.css --watchSource code is available at asltmsfs. Binary distribution is available at Airsports MSFS client together with user documentation. It can be used to compete in Air Sports Live Tracking tasks using Microsoft Flight Simulator 2020. By modifying the traccar server address can also be used to test locally.