Nored
2026An offline messaging app my team and I built at Hack the North 2026 that lets nearby phones send messages to each other over Bluetooth, even without internet or cell service.
My team and I built Nored at Hack the North 2026 to explore how phones could communicate without relying on the internet or a central server. We worked on an app where phones connect over Bluetooth and pass messages between each other. A phone can store a message and forward it later when another device comes into range, allowing it to reach someone who was never directly connected to the original sender.
The same approach works for emergency alerts, so messages can travel across multiple devices without requiring everyone to be within Bluetooth range of each other.
The mesh
Each phone acts as both a Bluetooth LE central and a peripheral, meaning it can discover other devices and accept connections from them. We built a custom Expo native module to handle Bluetooth discovery and GATT communication, using Swift on iOS and Kotlin on Android.
The routing logic is shared in TypeScript. It handles storing packets, forwarding them to other devices, retrying delivery, and tracking acknowledgements.
You, Aria, and Sam are in range. Riley is not.
01/06Messages use a store-and-forward approach. Once you save someone as a contact, you can send them a message even if they are not nearby. Another phone can pick it up, store it, and pass it along when it gets the chance to connect to the recipient.
Devices also exchange lists of packets they already have, so they do not keep sending the same messages. Each packet has an ID to prevent duplicates, along with a hop limit and expiry time to stop old messages from circulating indefinitely.
You meet Sam and save them as a contact.
01/07We also gave different message types different delivery limits. Direct messages
and group messages can travel up to five hops and remain valid for 24 hours.
Emergency alerts such as INFO, HELP, and DANGER get priority, can travel
up to ten hops, and expire after six hours.
Other features
We also added support for photos and voice notes, although these require a direct Bluetooth connection rather than being forwarded through the mesh.
Voice notes can be transcribed directly on the device using a bundled, quantized Whisper model. They can then be translated into English, French, or Hindi.
There is also a view showing nearby peers and the route a message took to reach its destination. We added Chess, Pong, and drawing telephone as well, all using the same Bluetooth connection and transport layer.
Our repository also includes an experimental ESP32-C3 badge relay. We wrote custom firmware that lets a Hack the North badge act as a bridge between two phones over BLE and display recent alerts. The badge also hosts a local Wi-Fi page where new alerts can be submitted.
Implementation
The app is built with React Native and Expo SDK 57, with most of the application logic written in TypeScript. Messages and relay packets are stored in SQLite, while the native Bluetooth modules handle communication on each platform.
You send a text, or an alert.
01/07Because of the custom native modules, the app needs to run as a development or release build. It cannot run through Expo Go.
Nored is still a hackathon prototype. The app needs to stay in the foreground, message delivery is best-effort, and messages are not encrypted yet. Adding authenticated end-to-end encryption is one of the next things we want to work on.