Skip to main content



FlightSpace is a plane infotainment system with a twist - Passengers can interact with each other.

Peipr, Yazide and I built this project as a hackathon challenge. The challenge, proposed by an airline, was to build something that allows passengers to interact and collaboarate with each other, all without the need for internet access. We got bonus points if we added extra features and if that collaboarative app had something to do with the destination. For that rason, we decided to make a trivia game about the destination where players stand on one side or the other of the screen to make a decision. The twist - You can see how players move accross the screen in real time. It was partially inspired by this minigame, but without the confusing questions:

This was built as a web-app, so Yazide worked on the user interface, optimizing it for small touchscreens. He also made the video/movie player and some extra features for the bonus points. Peipr worked on the trivia game itself. She used Javascript for the mechanics and HTML5 canvas to render the players.

I worked on the backend - a local REST API built with Rust. In order for all the players to be able to join a game, we needed a fast and robust backend. This wasn’t my very first time working on a REST API, but it certainly was a learning experience. All I had previously done are some simple ones for Embedded, nothing of quite that magnitude.

I used the actix_web crate even though I was recommended to use axum instead. It seemend like building a REST API with actix was a bit more straight forward, which is definitely needed on the hackathon time crunch. Despite that, I lost quite a few hours figuring out and trying different ways to do things. Sending things to the handler services between threads was no easy challenge. It forced me to finally learn about Mutex (which I had been avoiding for a long time) and how to propperly deal with it. (It was constantly getting poisoned!)

At the end of the hackathon, we reached a state with FlightSpace where it was functional enough to do a demo, but not as polished as we have hoped. It was still much more than what we thought we were capable of doing, so we’re proud of that. Overall, it was a good challenge for all of us and a lot of fun to work on together.

Check out the documentation:
Check out the project on devpost: