- Display list of categories or radio stations.
- Play/control audio as a service.
- Offline mode.
- Favorites (locally).
- Local user profile.
- Settings for the app.
- Static and dynamic shortcuts.
- Material3 design system.
- Portrait, landscape, tablet support.
- Dark/Light theme.
- Firebase crashlytics, analytics, performance.
- Tests (Unit, Integration, UI).
Core:
- Multi-module + Gradle Convention Plugins
- Clean Architecture
- Kotlin + DSL
- Coroutines + Flow
- Jetpack Compose + Navigation
- Hilt
Libs:
- Room
- Datastore
- Retrofit + Kotlinx Serialization
- Paging3 (locally)
- Coil
- Lottie
- Media3 ExoPlayer
- SmartToolFactory Picture Cropper
Testing:
- Inspiration: Now In Android
- Radio Stations: https://opml.radiotime.com/
- Country list + phone codes: https://restcountries.com/
- Country flags: https://flagpedia.net/ or https://flagcdn.com/
- Server not the best. Requires some core workarounds, which impact the whole app.
- As an example:
- single, all-on-one CategoryEntity for categories and everything. Ideally should be separate.
- position field for saving in DB. There is a predefined sort from server but no query/response param for that.