All Posts
12 posts -- technical deep-dives, architecture decisions, and development journal entries.
Firmware Extensions: Binary Encoding Over LoRa Mesh
How Socialmesh extends Meshtastic with custom binary portnums for presence, signals, and identity -- without forking the firmware.
Welcome to the Socialmesh Developer Blog
Introducing the Socialmesh developer blog -- technical deep-dives, architecture decisions, and the development story so far.
Aether: Flight Sharing on the Mesh
Launching the Aether flight sharing service -- ground stations report aircraft reception data to a shared leaderboard via mesh radio.
Sigil: Node Identity Cards
Building the Sigil API -- shareable node identity card snapshots with an Express backend, SQLite storage, and Apple Wallet integration.
Multi-Protocol: Adding MeshCore Support
Making Socialmesh a multi-protocol app -- supporting both Meshtastic and MeshCore devices while keeping protocol logic completely isolated.
Going Open Source
Open-sourcing the Socialmesh mobile client under GPL-3.0 -- what’s included, why GPL, and how contributors can get started.
World Mesh: Watching the Global Network
Building a real-time MQTT consumer that collects Meshtastic node data from the global mesh and serves it as an API.
The Automation Engine
Building a node automation system for mesh radios -- triggers, actions, geofences, and battery hysteresis.
Firebase Without the Dependency
How Socialmesh integrates Firebase for optional cloud features while remaining fully functional offline.
Presence, Timelines, and the Social Layer
Adding the social layer to a mesh radio app -- presence broadcasts, signal timelines, and the beginning of what makes Socialmesh different.
BLE Transport: The Realities of Bluetooth on Mobile
Lessons learned building a reliable BLE transport layer for Meshtastic on iOS and Android. Adapter states, scan retries, and connection sequencing.
Day One: Building a Mesh Radio Companion
First commit. A Flutter app that talks to Meshtastic radios over Bluetooth Low Energy. Starting from zero.