// the find
zjs81/meshcore-open
Open-source Flutter client for MeshCore LoRa mesh networking devices
A Flutter client for MeshCore LoRa mesh networking devices, connecting over BLE, USB, or TCP. It handles encrypted peer-to-peer messaging, channel broadcasts, node mapping, and remote repeater management — all without internet. This is for people deploying off-grid comms: disaster prep, hiking groups, or anyone who wants radio mesh networking without a proprietary app.
The protocol layer is cleanly separated from the UI — meshcore_connector.dart handles BLE state while meshcore_protocol.dart owns frame parsing, which makes it possible to add new transport backends (TCP, USB) without touching message logic. Offline map tile caching is a genuine feature, not an afterthought, which matters when you're somewhere without cell service. Localization coverage across 15 languages is unusually thorough for a niche hardware project. The smaz compression dependency is a smart choice for LoRa — squeezing text before it hits a bandwidth-constrained radio link is exactly right.
Provider with ChangeNotifier at this scale is going to be painful — the connector is clearly doing double duty as both a BLE state machine and a god-object for app state, and that pattern does not survive a growing feature set without significant refactoring. There are no tests visible in the tree outside of the stub RunnerTests.swift; for a project where the protocol layer has to be bit-perfect against physical hardware, that's a real gap. The iOS USB connection is marked 🚧 with no timeline, which will frustrate anyone buying iOS devices for a deployment. OTA firmware updates are also listed as 'coming soon' — it's the feature that would make fleet management practical, and shipping without it means users still need a laptop on-site.