←Projects

Nored

2026

An offline mesh communication app built at Hack the North: nearby phones relay messages, alerts, and games over Bluetooth with no internet or server.

React NativeExpoTypeScriptSwiftKotlinSQLiteGitHub

Nored is an offline communication app for iOS and Android, built at Hack the North 2026. Nearby phones connect over Bluetooth to exchange messages, carry text to people they encounter later, and spread emergency alerts, all without cellular service, an internet connection, or a messaging server. At a crowded event, on a remote trail, or during a network outage, people can be close enough to help each other and still have no way to communicate; Nored turns the phones around you into a local network.

The mesh

Each phone acts as both a Bluetooth LE central and peripheral. A custom native Expo module implements discovery and GATT communication in Swift on iOS and Kotlin on Android, and a shared TypeScript router handles persistence, forwarding, retries, and delivery acknowledgements.

Delivery is store-and-forward: after saving someone as a contact, a message for them can be handed to any nearby phone, which retains it after disconnecting and forwards it when the recipient becomes reachable. Peers exchange packet inventories to avoid retransmission, packet IDs suppress duplicates, and hop limits with expiry keep messages from circulating indefinitely. Direct and group text travel up to five hops over 24 hours; INFO, HELP, and DANGER alerts get transmission priority, ten hops, and a six-hour expiry.

Beyond messaging

The app includes photos and voice notes over a direct connection, on-device voice transcription through a bundled quantized Whisper model, translation into English, French, or Hindi, a network view of discovered peers and message journeys, and nearby multiplayer games — chess, Pong, and drawing telephone — over the same Bluetooth transport.

The repository also includes an experimental ESP32-C3 badge relay: custom firmware lets a Hack the North badge bridge two phone connections over BLE and display recent alerts, with a local Wi-Fi portal for submitting new ones.

Implementation

The app is React Native on Expo SDK 57 with TypeScript, persisting messages and relay packets in SQLite. Because the mesh relies on custom native modules, it runs as a development or release build rather than in Expo Go. It is a hackathon prototype: apps must stay in the foreground, delivery is best-effort, and there is no application-level encryption yet — authenticated end-to-end encryption is the stated next step.