]>
| description | Meshcore Open: The open-source flutter client for meshcore |
| owner | Enot (ded) Skelly |
| last change | Thu, 19 Feb 2026 20:40:27 +0000 (12:40 -0800) |
Open-source Flutter client for MeshCore LoRa mesh networking devices.
MeshCore Open is a cross-platform mobile application for communicating with MeshCore LoRa mesh network devices via Bluetooth Low Energy (BLE). The app enables long-range, off-grid communication through peer-to-peer messaging, public channels, and mesh networking capabilities.
![]() Contacts |
![]() Chat |
![]() Reactions |
![]() Map |
![]() Channels |
| Package | Purpose | |---------|---------| | flutterblueplus | Bluetooth Low Energy communication | | provider | State management | | sqflite | Local database storage | | fluttermap | Interactive map display | | latlong2 | Geographic coordinate handling | | flutterlocal_notifications | Background notification support | | smaz | Message compression | | pointycastle | Cryptographic operations | | intl | Internationalization and date formatting |
Clone the repository
bash
git clone https://github.com/zjs81/meshcore-open.git
cd meshcore-open
Install dependencies
bash
flutter pub get
Run the app
bash
flutter run
Android APK:
bash
flutter build apk --release
iOS:
bash
flutter build ios --release
lib/
├── main.dart # App entry point
├── connector/
│ ├── meshcore_connector.dart # BLE communication & state management
│ └── meshcore_protocol.dart # Protocol definitions & frame parsing
├── screens/
│ ├── scanner_screen.dart # Device scanning (home screen)
│ ├── contacts_screen.dart # Contact list
│ ├── chat_screen.dart # Direct messaging
│ ├── channels_screen.dart # Public channels
│ ├── map_screen.dart # Network visualization map
│ ├── settings_screen.dart # Device settings
│ └── repeater_hub_screen.dart # Repeater management
├── models/
│ ├── contact.dart # Contact data model
│ ├── message.dart # Message data structure
│ └── channel.dart # Channel definitions
├── services/
│ ├── notification_service.dart # Push notifications
│ ├── message_retry_service.dart # Automatic message retry
│ ├── background_service.dart # Background BLE connection
│ └── map_tile_cache_service.dart # Offline map storage
└── storage/
├── message_store.dart # Message persistence
├── contact_store.dart # Contact database
└── unread_store.dart # Unread message tracking
6e400001-b5a3-f393-e0a9-e50e24dcca9e6e400002-b5a3-f393-e0a9-e50e24dcca9e (Write to device)6e400003-b5a3-f393-e0a9-e50e24dcca9e (Notify from device)Devices are discovered by scanning for BLE advertisements with the name prefix MeshCore-
Messages are transmitted as binary frames using a custom protocol optimized for LoRa transmission. See meshcore_protocol.dart for frame structure definitions.
This is an open-source project. Contributions are welcome!
StatelessWidget with Consumer for reactive UIconst constructors where possibleFor issues, questions, or feature requests, please open an issue on GitHub: https://github.com/zjs81/meshcore-open/issues
If you find MeshCore Open useful and would like to support development, you can donate Solana or other Solana tokens:
Solana Address: F15YanjZj96YTBtKJYgNa8RLQLCZkx5CEwogPWkqXeoQ
Your support helps maintain and improve this open-source project!
| 25 hours ago | main | shortlog | log | tree |