finds.dev← search

// the find

chrisballinger/BLEMeshChat

★ 503 · Objective-C · MPL-2.0 · updated May 2017

Bluetooth LE Mesh Chat for iOS and Android

An iOS prototype of a sneakernet chat app. Phones exchange messages over Bluetooth LE with no internet involved, and crypto sits on libsodium underneath. It's for developers who want to read the transport and protocol code, not for anyone looking for a chat app to install. The Android side lives in a separate repo.

- The BLE plumbing is split into separate classes: BLEScanner, BLEBroadcaster, BLETransportManager, BLETransportStorage and BLECrypto each have their own header and implementation, so you don't have to untangle one large controller.

- Packet types are modeled as objects (BLEDataPacket, BLEMessagePacket, BLEIdentityPacket, BLEDataReceipt) instead of raw byte handling spread across view controllers.

- Crypto goes through libsodium via a Podspec rather than hand-rolled primitives, which is the right call for a project doing its own key exchange.

- The receipt and storage classes suggest store-and-forward with acknowledgements, which is the part that matters most for a sneakernet design.

- The last push was May 2017, and the README still calls this a prototype with 'a lot of unsolved problems'. Treat it as a historical reference, not a base to build on, and expect iOS BLE behavior to have changed since then.

- The protocol spec lives in the GitHub wiki rather than the repo, so code and spec can drift apart with nothing tying them to a commit.

- The test target has a single file, so the crypto and packet parsing code, where bugs would matter most, has no visible test coverage.

- iOS restricts background BLE heavily, and the README promises 'pairing-free background synchronization' without saying how it gets around those limits. The code here doesn't show it either.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →