]> Core Protocol Git - meshcore-open.git/summary
 
descriptionMeshcore Open: The open-source flutter client for meshcore
ownerEnot (ded) Skelly
last changeThu, 19 Feb 2026 20:40:27 +0000 (12:40 -0800)
readme

MeshCore Open

Open-source Flutter client for MeshCore LoRa mesh networking devices.

Overview

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.

Get it on Obtainium

Screenshots


Contacts


Chat


Reactions


Map


Channels

Features

Core Functionality

Mesh Network

Map & Location

Device Management

Repeater Hub

Technical Details

Architecture

Platform Support

Dependencies

| 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 |

Getting Started

Prerequisites

Installation

  1. Clone the repository

    bash git clone https://github.com/zjs81/meshcore-open.git cd meshcore-open

  2. Install dependencies

    bash flutter pub get

  3. Run the app

    bash flutter run

Building for Release

Android APK:

bash flutter build apk --release

iOS:

bash flutter build ios --release

Project Structure

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

BLE Protocol

Nordic UART Service (NUS)

Device Discovery

Devices are discovered by scanning for BLE advertisements with the name prefix MeshCore-

Message Format

Messages are transmitted as binary frames using a custom protocol optimized for LoRa transmission. See meshcore_protocol.dart for frame structure definitions.

Configuration

App Settings

Device Settings

Contributing

This is an open-source project. Contributions are welcome!

Development Guidelines

Code Style

Support

For issues, questions, or feature requests, please open an issue on GitHub: https://github.com/zjs81/meshcore-open/issues

Donate

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!

Acknowledgments

shortlog
25 hours ago DedMerge pull request #195 from MeshEnvy/rbenv main
26 hours ago Ben Allfreeadd rbenv support
2 days ago zjs81Merge pull request #182 from Specter242/feature/protoco...
2 days ago Specter242Remove incidental whitespace-only diff from protocol PR
2 days ago Specter242Trim protocol PR to explicit RESP_CODE_ERR handling...
2 days ago Specter242Remove unused protocol placeholder field and unify...
2 days ago Specter242Add device protocol version tracking and error frame...
2 days ago zjs81Merge pull request #180 from zjs81/fix/radio-params...
2 days ago zjs81Fix radio settings to only send repeat byte when the...
2 days ago zjs81fix formatting
2 days ago zjs81Refactor radio settings and localization updates
6 days ago zjs81Update dependencies and improve code consistency across...
6 days ago zjs81Merge pull request #161 from ChaoticLeah/enhancement...
6 days ago zjs81Gate the turn on BLE button to android
6 days ago zjs81Fixed banner flash, added enable bluetooth button fixed...
6 days ago zjs81Merge remote-tracking branch 'origin/main' into enhance...
...
heads
25 hours ago main