Skip to content

RadioWave is an internet radio player that provides access to a database of over 50,000 stations.

License

Notifications You must be signed in to change notification settings

OneDroid/RadioWave

Repository files navigation

RadioWave Logo

RadioWave

RadioWave is a cross-platform internet radio player for Android and iOS, built with Kotlin Multiplatform. It provides access to over 50,000 stations worldwide with automatic song recognition that identifies what's playing in real time.

License GitHub Release Fdroid Release Static Badge GitHub Downloads (all assets, all releases) visitors SavePalestine

Download

Download from GitHub Download from Obtainium Download from OpenApk Download from F-droid

SHA-256: ED:1E:40:16:F2:4E:35:01:DD:C3:02:6B:AC:A0:4E:C8:C8:21:09:E7:48:EC:9F:81:79:32:80:3A:83:8D:80:F8

⚠️ Note: The iOS version is currently in early access and has not been fully tested yet.

App Features

  • Browse popular, trending, or top-voted stations
  • Automatic song recognition
  • Save Favorite Radios
  • Search Radios by name, genre, language, or country
  • Display station metadata like country, website, language
  • Dual Themes (Dark and Light)
  • Play / Pause / Volume Control
  • Audio Background Playback Support
  • User-Friendly Interface with Easy Navigation

Sponsor this Project

Buy Me A Coffee

To-Do

  • timer #18
  • load all stations at once #17
  • Minimize API calls #17
  • Radio playing notification
  • filter to radio search
  • lyrics finder for tracks

Screenshots (Android)

Home Screen PLaying Screen Search Screen Error Screen

Architecture Overview

This project follows the MVVM (Model-View-ViewModel) design pattern combined with Clean Architecture principles to ensure a scalable, maintainable, and testable structure.

image

  • The Presentation Layer is responsible for rendering the UI and managing user interactions via a unidirectional flow of Intent, Action, and ViewModel.
  • The Domain Layer encapsulates business logic in UseCases, This layer is completely independent of other layers, ensuring that it can be reused and tested in isolation.
  • The Data Layer abstracts data sources (API, Database) through a Repository pattern.

Technologies and Libraries Used

This project is powered by a combination of awesome technologies and libraries, Below is a list of what’s used.

Name Description
Kotlin Multiplatform Simplifies the development of cross-platform projects.
Compose Multiplatform Builds responsive, modern user interfaces across multiple platforms.
Kotlin Serialization Handles JSON and other formats with built-in serialization support.
Material3 Provides Material Design 3 components and guidelines for UI design.
Datastore Preferences A modern tool for storing key-value data locally.
Koin Manages dependencies in Kotlin apps with minimal effort.
Ktor Client Handles HTTP requests and networking in Kotlin.
Coil Loads images efficiently, designed specifically for Kotlin and Jetpack Compose.
Media3 ExoPlayer Seamless audio and video playback for Android apps.
SQLite An embedded SQL database for structured data storage.
Radio Browser API A free and open-source API to search and stream online radio stations.

Contribution Analytics

analytics

Contributors

We appreciate everyone who has contributed to this project! Your support and contributions help make RadioWave better every day.

Contributors

About

RadioWave is an internet radio player that provides access to a database of over 50,000 stations.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •