Vinyla Android – 2022
Screenshots of the app:
Welcome screen: the user is greeted with a welcome screen featuring a
random background of album covers.
Login & registration screen: all data is validated, including password
and email requirements. Previously used email addresses cannot be
reused.
Main screen: the user can select multiple artists and then tap 'Create
Station'. The streaming service can be set via the settings button.
App Purpose:
The goal is to allow users to view their favorite artists through a
simple login in a convenient list. This data is retrieved from my
previous project, Vinyla, developed for the Web Applications IV course.
Users can select multiple artists by tapping on their image. Then they
can create a personalized station or playlist for the selected
artist(s), which will automatically play via the user’s chosen music
streaming app. The streaming service can be set in the settings.
How Vinyla for Android works:
Original Vinyla:
For Web Applications IV, I developed a database, API, and web
application where users could search for and save their favorite albums.
You can find this project here.
APIs:
The application uses three APIs to achieve its functionality:
-
Vinyla API: custom API to retrieve the user’s
favorite albums.
-
Spotify Token API: used to obtain a trusted token
necessary for accessing Spotify’s full API in step 3.
-
Spotify API: used to query and fetch artist images.
App Workflow:
- User logs in with their credentials.
-
The app communicates with the Vinyla API to validate login and receive
a BearerAuth token.
-
The Spotify Token API provides a trusted BearerAuth token from
Spotify.
-
Using the Vinyla token, the app fetches all favorite albums from
Vinyla.
-
Albums are filtered by artist and sorted by frequency, limited to 30
artists.
-
Due to Spotify’s batch request limit, artist images are fetched
individually via the Spotify API using the Spotify token.
-
Users select their preferred music streaming service in the settings.
-
Users select artists and tap 'Create Station' to generate a
personalized station in their chosen service. (Actual music playback
is not implemented.)
App Requirements Explained:
-
UI structure: Designed with RecyclerViews to ensure
responsive layouts and animated navigation between screens.
-
UI technical: Used data binding and binding adapters
to ensure a unique and polished look & feel.
-
Testing: All fragments are tested using the Espresso
framework.
-
Code quality: Functions are split into smaller
sub-functions for clarity, with annotations explaining each function.
-
Lifecycle: Minimal custom lifecycle usage due to
lightweight UI; onResume of welcome screen checks if a user is logged
in via Room.
-
Network: Multiple API calls via Retrofit to Vinyla
API, Spotify Token API, and Spotify API.
-
Persistence: Room database stores user data and
settings, automatically retrieved on app launch.
Testing:
All screens are tested using the Espresso framework. Non-UI code could
not be tested.
The welcomeFragmentVisible test must run first; otherwise, the app
assumes a user is already logged in and does not display the welcome
screen.
Initial Designs:
Designs were created in Figma based on iOS UI but implemented for
Android.