← All projects

CASE STUDY 01 / Real-time & mobile

CB Radio Live

Real-time voice, without the hardware.

A cross-platform push-to-talk experience connecting people through public channels, private rooms, and location-aware presence.

ENGINEERING FOCUS

Real-time coordination · Cross-platform delivery · Product infrastructure

TECHNOLOGY
C#.NETSignalRWebRTCFlutterPostgreSQL
Visit the website ↗ (opens in a new tab)
cbradio.live↗
CB Radio Live website interface
PROJECT INTERFACE / CB RADIO LIVE

01 / THE CHALLENGE

The problem worth solving.

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

How it comes together.

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.

01Flutter client
02SignalR + WebRTC
03.NET services
04PostgreSQL

03 / ENGINEERING DECISIONS

The details make the difference.

01

Separate signaling from voice

SignalR coordinates rooms, presence, and speaker ownership; WebRTC handles the live audio connection.

02

Make membership explicit

Country and global public channels sit alongside private rooms, with location-aware features supporting nearby discovery.

03

Connect the whole product

PostgreSQL persistence, token-based authentication, and Stripe integrations connect the communication experience to account and product operations.

04 / WHAT IT DELIVERS

From the idea to the experience.

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)
KEEP EXPLORINGOlivia’s Garden↗

A living map of the land.

THE NEXT CHAPTER

MICHIGAN / WORKING EVERYWHERE

Good work starts
with a conversation.

Have a challenging problem or a role in mind?
I’d like to hear about it.