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.
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.
- 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
- timer #18
- load all stations at once #17
- Minimize API calls #17
- Radio playing notification
- filter to radio search
- lyrics finder for tracks
![]() |
![]() |
![]() |
![]() |
---|
This project follows the MVVM (Model-View-ViewModel) design pattern combined with Clean Architecture principles to ensure a scalable, maintainable, and testable structure.
- 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.
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. |
We appreciate everyone who has contributed to this project! Your support and contributions help make RadioWave better every day.