Overview

A cross-platform mobile application created for and used by a defense client to configure digital optics. The app connects to a digital optic's firmware over Bluetooth or USB, lets users load weapon profiles holding three separate reticle configurations, edit those reticles, and save changes back to the optic. A ballistic data library drives bullet-drop compensation lines on each reticle.

Role

Mobile developer

Platforms

iOS & Android (cross-platform)

Stack focus

Flutter, JSON-RPC, Method Channels, BLE/USB serial

Domain

Firmware integration & ballistics

Gallery

The Challenge

Configuring a digital optic in the field demands precision and reliability across hardware, with no room for a flaky connection or a mis-saved reticle. The app had to talk directly to optic firmware over multiple transport types and present complex ballistic data in a way that is fast and unambiguous to operate.

The Solution

The app speaks to the optic's firmware over Bluetooth and USB serial using JSON-RPC, with native bridges handled through Method Channels. Weapon profiles — each carrying three reticle configurations — are stored locally with Hive and managed with Riverpod, so edits are responsive and survive disconnects. A ballistic data library computes bullet-drop compensation lines that render directly onto the reticle before being written back to the device.

Key Features

Tech Stack

Flutter JSON RPC Riverpod Hive Method Channels Bluetooth & USB Serial Firmware Integrations

My Role

I built the Flutter application, implementing the JSON-RPC firmware communication layer over Bluetooth and USB through native Method Channels, the profile and reticle editing flows with Riverpod and Hive, and the ballistic-driven reticle rendering.