<f/>
Work

AirFellow

Design & build

AirFellow is what passengers on the same flight get when there is no internet: chat, games against each other, and a radar of who else on board is up for talking.

There is no server and no account. Messages travel phone to phone by short-range radio, the same way wireless headphones connect, and everything worth keeping is kept on your own phone.

That radio is the hard part. It is short-range, it drops, and a full cabin means dozens of phones all trying to talk at once — so most of the work went into the layer above it, making a message arrive once, reach the far end of the cabin, and not drown out everyone else on the way.

What it covers

Who it is for
Passengers on the same flight
Needs internet or signal
No
Phones it runs on
iPhone and Android
Games built in
8
Languages
English and Portuguese

Surfaces

iPhone and Android, plus a separate website for the store listing, privacy and terms.

Highlights

Every phone passes it on

A message hops across four or five phones to reach the far end of the cabin, and each phone remembers what it has already seen so the same message is never shown twice.

Built for a full cabin

Messages are bundled before they are sent, phones call out more or less often depending on how busy the cabin is, and each one only holds a handful of connections at a time.

Chat that behaves like chat

Cabin-wide messages, private ones and groups, with typing dots, delivery ticks, replies and blocking. It all survives closing the app, with unread badges and notifications.

Games with the row behind

Invite, accept or decline, with both phones kept in step on every move and a way to join a game already in progress. Chess ships with an opponent built in at three levels.

Safe for younger flyers

A PIN-protected lock over chat, private messages and games, an age check on the way in, a reporting queue, and the choice to send no usage data at all.

A radar of the cabin

Pick the aircraft layout you are sitting in, watch a radar sweep of who is nearby, see a world map of flyers recently met, and keep a log of each trip.

Built with

  • TypeScript
  • React 19 and React Native 0.81
  • Expo SDK 54, New Architecture
  • expo-router
  • Zustand with AsyncStorage
  • Reanimated
  • Bluetooth LE via a patched native module
  • @noble/ciphers and @noble/curves
  • i18next
Work