rentonhead

Tuna Radio

A worldwide radio app: 50,000+ live stations from an open directory, a spinning globe for discovery, a passport of countries you’ve listened to and a shareable Wrapped.

Client
Own product
Year
2026
Role
Product design · Mobile engineering · Backend · App Store
Status
Preparing for release

Radio, with a reason to travel the dial.

Problem

Radio apps are either endless station lists or ad-heavy players. Tuna had to make discovering live radio from other countries feel playful without giving up a fast, reliable player.

Approach

React Native for iOS and Android with a persistent mini player, background and lock-screen playback, a sleep timer and alarms. Station data comes from the open Radio Browser directory; Firebase handles sign-in and syncs favourites and stats. Discovery is gamified with Spin the Globe, World Passport badges and Tuna Wrapped, and a live chat with reactions and song requests runs on my own server. The interface ships in ten languages with dark and light themes.

Result

Store listing, screenshots, review notes, privacy policy and terms are ready in ten languages; the app is in its App Store release phase.

What’s inside

  • 50,000+ live stations, browsable by country and genre
  • Spin the Globe random discovery
  • World Passport badges and listening stats
  • Live chat, emoji reactions and song requests
  • Ten languages, dark and light themes

Stack

React NativeExpoFirebaseRevenueCatRadio Browser APINode.js

Under the hood

The code layer of this project — modules and moving parts.

tuna/tree --depth 2
app           React Native · Expo → iOS & Android
audio         background playback · lock screen · sleep timer · alarms
data          Radio Browser directory · Firebase Auth · Firestore sync
social        live chat · emoji reactions · song requests (own Node backend)
billing       RevenueCat · weekly plan with free trial
i18n          en es pt fr de it tr ru ar ja