Separate signaling from voice
SignalR coordinates rooms, presence, and speaker ownership; WebRTC handles the live audio connection.
CASE STUDY 01 / Real-time & mobile
Real-time voice, without the hardware.
A cross-platform push-to-talk experience connecting people through public channels, private rooms, and location-aware presence.
Real-time coordination · Cross-platform delivery · Product infrastructure

01 / THE CHALLENGE
Radio makes conversation immediate. Bringing that experience to phones and browsers means coordinating presence, channel membership, and who is allowed to speak—while keeping the interface simple enough to use in the moment.
02 / THE SOLUTION
A Flutter client connects to an ASP.NET Core backend. SignalR handles real-time coordination and WebRTC carries voice. Public and private channels share a single-speaker push-to-talk lock, giving the application a radio-like interaction model across devices.
03 / ENGINEERING DECISIONS
SignalR coordinates rooms, presence, and speaker ownership; WebRTC handles the live audio connection.
Country and global public channels sit alongside private rooms, with location-aware features supporting nearby discovery.
PostgreSQL persistence, token-based authentication, and Stripe integrations connect the communication experience to account and product operations.
04 / WHAT IT DELIVERS
A deployed voice product with web and mobile entry points, live channels, private conversation rooms, and map-aware presence.
Explore cbradio.live ↗ (opens in a new tab)THE NEXT CHAPTER
MICHIGAN / WORKING EVERYWHEREHave a challenging problem or a role in mind?
I’d like to hear about it.