What did we make?

We made an Android app using the Google Nearby Connections API to communicate boarding pass data over a Bluetooth mesh network. An attached admin console, built in React + Next.js, allows airport staff to register new passengers at check-in and validate them at the gate.


Tech Stack!

📊 (Database) – PostgreSQL on Supabase
Hosted locally at the airport on staff computers.

📱 (Mobile App) – Kotlin
Easy to deploy on Android devices.

📻 (Bluetooth Library) – Google Nearby Connections API
Already prebuilt into all Android devices.

🖥️ (Staff Interface) – Next.js with React.js
The best language for vibe coding.


Architecture

A staff phone acts as a gateway between the Bluetooth mesh network and the admin panel.
Right now, the admin panel and database are hosted in the cloud. In a real deployment, they’d be hosted locally on battery-backed machines — because during a power cut, you won’t be able to hit the internet.

Image

Other Architecture
^Nice Architecture


What inspired us to make this?

  • Spain’s power cuts this year:
    Map of Europe

  • When our local Heathrow Airport shut down for a whole day:
    Heathrow Closed

For airports without backup generators, the only fallback is to shut down or revert to pen and paper.
We think our solution provides a better option.


What problems did we face?

We struggled to convert the peer-to-peer channel offered by Google Nearby Connections API into a functional mesh network.
To fix this, we wrote custom bouncing rules for retransmission. Two key safeguards:

  • MAX_HOPS: Ensures packets die after reaching a propagation limit.
  • HASH_LIST: Prevents packets from endlessly bouncing back and forth.

We also had privacy concerns — broadcasting all boarding passes isn’t ideal.
Our solution: encrypt all boarding cards using a combination of your surname and flight number — a method already used by airlines. Your phone can then decrypt your own boarding pass.


What Challenges are we going for?

  • Vueling Airlines Challenge
  • GoDaddy Domain Challenge

meme

Built With

Share this project:

Updates