← All posts

Building a Nationwide P25 Database and Redesigning the App from Scratch

Two major workstreams today, both foundational. First, I began building out the platform's database of P25 trunked radio systems to achieve statewide coverage across Maryland. The goal: drive anywhere in the state and have the app automatically identify every agency transmitting on every system, with no manual configuration required.

I started by cross-referencing FCC licensing data already loaded into my PostGIS database against the comprehensive records maintained by RadioReference, the de facto public database for trunked radio systems. Maryland alone has dozens of P25 systems spanning county, state, and federal agencies. I built an automated sync tool that queries the RadioReference API to pull system metadata, site locations, and talkgroup assignments, then reconciles them against FCC records. The initial sync covered Maryland's primary systems and I expanded to include DC, Virginia, Delaware, West Virginia, and Pennsylvania — over 130 unique systems with thousands of talkgroup assignments.

The second workstream was a complete UI redesign. The original interface, while functional, had accumulated technical debt from rapid prototyping: dead-end menu paths, floating sub-menus with unpredictable behavior, and an overall aesthetic that didn't match my positioning as a consumer-grade product. I rebuilt the interface from the ground up, modeling it after Waze's proven navigation UX — a clean map-centric display with a bottom sheet that progressively reveals alert information as you swipe up, a streamlined hamburger menu, and proper system bar handling to prevent Android's status and navigation bars from overlapping interactive elements.

The redesign was executed in four phases: foundation (color system, shared components, edge-to-edge rendering), settings screens with proper navigation hierarchy, the main map screen with integrated alert log, and a consolidated drawer menu. Each phase was tested incrementally, and I resolved a series of compilation issues including missing layout elements, duplicate string definitions, and color reference mismatches between drawable files and the theme.

← Designing the Overwatch Scanner: From Co...The Geolocation Engine Goes Live... →