A pure Kotlin Android app made for KDVS in Davis, CA. Stream the station live from anywhere with internet access, play past broadcasts, download broadcasts for offline access, browse & search station content, subscribe to shows and receive alarm notifications, aggregate your favorite tracks, and export music to Spotify or YouTube.
The app follows a MVVM architecture as encouraged by Google and supported with Android Jetpack. A single Activity is used in conjunction with the Navigation Architecture Component to simplify fragment management and streamline the passing of data between fragments. The Room ORM library is used for persisting scraped data. The underlying database is treated as the single source of truth throughout the app. Queries generally return either RxJava data types (when complicated transformations are needed) or LiveData in simpler cases. Dependency injection is achieved with Dagger2.