Skip to content

sanbor/libreradio

Repository files navigation

LibreRadio

Internet radio player with zero ads, trackers, telemetry, and software libre. Powered by Radio Browser community database (30,000+ stations). iOS counterpart to RadioDroid (Android).

  • iOS 16+, SwiftUI, no third-party dependencies
  • CarPlay support — browse Favorites, Recent, and Popular stations from your car's display
  • License: GPL-3.0

Development

This app is being built mostly using Claude Code. Relevant files:

  • SPEC.md - this is the behavioral truth. Every UI behavior, API call, and edge case defined here.
  • PLAN.md - this is the architectural guide. It defines the file structure, patterns, and phased delivery.
  • .claude/commands/implement.md - Skill to implement new features by running /implement audio playback.
  • .claude/commands/init.md - Skill to start a new project by running /init an iPhone app powered by Radio Browser similar to RadioDroid".

Prerequisites

  • Xcode 15.0+
  • XcodeGen — install with brew install xcodegen

Generate the Xcode Project

The .xcodeproj is generated from project.yml using XcodeGen. Run this after cloning, and after adding or removing any .swift file:

xcodegen generate

Build

xcodebuild -project LibreRadio.xcodeproj -scheme LibreRadio \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
  -quiet build

Run Tests

xcodebuild -project LibreRadio.xcodeproj -scheme LibreRadio \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
  -enableCodeCoverage YES test

To see just the summary (pass/fail counts and errors):

xcodebuild -project LibreRadio.xcodeproj -scheme LibreRadio \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
  -enableCodeCoverage YES test 2>&1 \
  | grep -E '(error:.*\.swift|Executed|TEST SUCCEEDED|TEST FAILED)'

Clean

xcodebuild -project LibreRadio.xcodeproj -scheme LibreRadio clean

Open in Xcode

open LibreRadio.xcodeproj

CI

GitHub Actions runs build and tests on every push and PR to main (see .github/workflows/ios.yml).

Attribution

This app icon uses the svg version of Levitating, Meditating, Flute-playing Gnu.

Special thanks to Radio Browser which provides the radio data. You can make a donation (one time or repeating) or contribute in other ways.

Also to RadioDroid from which this project is inspired.

Support

For questions, feedback, or support requests, you can create an issue or send me an email to hello+libreradio@borrazas.org.

About

Free software iOS internet radio player

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages