Architecture

The project is split across multiple (micro)services because of the lack of visibility regarding performances and responsibilities.

Do not be scared by the number of repositories and in doubt submit your issues on the meta repository, we will redispatch it from there.

There are three main parts:

  1. Positions: handles incoming requests from drones and provide current positions of inflight drones.
  2. Registration: stores users/devices relations and provide a public facing interface to deal with it.
  3. Conformity: provides an API to know if a given point is in a forbidden zone.

Let's detail those in terms of code, this is mostly internal comprehension but it might be handy for you to be able to point your bottlenecks to the team. As a bonus, you will be unbeatable on canadian wildlife ๐Ÿ‘.

Positions

We accept UDP payloads from drones, this is the job of Wolf which provides also an HTTP proxy in case you cannot send UDP packets. Please contact the team if that is your case.

From these payloads, we perform data consolidation and validate payloads (time, registration number and position).

Once validated, these information are exposed to an HTTP API you can query for consumption by third-parties.

Additionnaly, we provide two helpers:

  • A way to simulate a drone position through a web page instead of manually sending a packet to Wolverine. Narwhal can be opened on a mobile device to simulate a moving position.
  • A way to visualize latest drones positions on a map with Cardinal which is publicly reachable.

Those can be useful to debug and see if your packets are valid.

Registration

This is a classic architecture with a backend Moose providing an API for devices and users which is consumed by Raccoon.

This page is publicly reachable.

Conformity

This is only an API for now named Skunk which returns a status for a given position within the French aerial space.

It is not coupled to flight plans for now and itโ€™s highly experimental.

Something went wrong?

Don't worry, we have your back covered.