What and why
I wanted to have an application I can use to discover new music of different genres.
The application should be effortless and allow a user to listen to online radio stations of a specific genre or just a particular radio station, save played track name and artist to search them later in Spotify, Last.FM, SoundCloud, YouTube, or Google.
How
To implement this functionality, I decided to use:
- Kotlin, Android Jetpack, Dagger2, Material components
- Exoplayer for audio playback
- GraphQL
- For server-side Hasura and PostgreSQL
- For client-side Apollo graphql library for Android
- Ktor to implement auth microservice, backed by Firebase Auth.
- Python to implement web crawlers to collect a list of online radio stations.
- Docker, Docker Compose, and Docker machine for deployment.
- Facebook Flipper and LeakCanary for debugging on client-side
- Hugo for landing page
Challenges
- It required quite some time to collect a list of valid online radio stations.
- The design of applications UI is not something I am good at, so I decided to keep things as simple as possible, considering that, for the most part, a user will not look at the application UI.
- Working with network ads complexity, edge cases, and handling of these cases.
Results
- Android application released and available on Google Play (only in the English language)
- A landing page with application privacy policy, licenses, and terms.
- I got experience in working with Exoplayer, Apollo graphql library for Android, Hasura
- I discovered some great artists using this app.