Introducing our app that seamlessly integrates with Spotify, allowing users to create personalized wraps anytime. With Firebase, your wraps are securely stored for easy access across devices. Our large language model integration synthesizes detailed descriptions of your listening tastes, while the user-friendly interface offers themed experiences for special holiday occasions. Listen to your top songs directly in our app, and immerse yourself in your personalized music tastes!
Base User Story 1
Upon the first launch of the app, users are prompted to log in or create a new account via Firebase Authentication when they first open the app. This process managed within our LoginCreateAccountActivity, ensures each user has a secure and personalized account. The interface allows users to input their email and password, with error handling that to catch common issues like incorrect passwords or duplicate email registrations. Once the user has been authenticated with Firebase, the app transitions to Spotify authentication. This allows the app to access and analyze users' Spotify listening data while maintaining a secure and personalized environment. The app utilizes Spotify's OAuth2.0 flow to manage music data access, which is essential for the subsequent data parsing and summary generation. The main functionality of the app kicks in after successful authentication with both systems. The app fetches data such as top songs, artists, and genres from Spotify using specific API endpoints. This data is then analyzed to generate a creative and detailed summary of the user's music listening habits, providing personalized insights directly within the app interface.
Base User Story 2
Our app allows users to create an account and store previously generated wraps to it. Accounts are made and authorized through Firebase Authentication, and users' generated Spotify Wrappeds are stored using that account and Firebase Realtime Database. By setting up our app's accounts this way, users can close the app and know that their information will persist. In addition to being able to create new wraps, our app provides screens for viewing old wraps. From the main page, a user can choose to either create a new wrap or view an old one, and we provide screens for doing both. The app also provides screens for changing login information, where a user's email and password can be changed. Finally, should a user want to, they can delete their account.
Custom User Story 3
In order to give use the OpenAI API to generate a summary of a user's music tastes, we first collects data on the user’s most frequently listened to songs, artists, and genres via Spotify's API. This data is then used to create a detailed prompt that includes specifics like top songs or genres. The app sends this prompt to the LLM, which processes the information to generate customized insights about the user's music taste.
These insights might cover aspects such as preferred musical styles, themes, or emotional content. The resulting AI-generated narrative is then displayed on a dedicated screen within the app, providing users with a unique and thoughtful analysis of their music preferences. For example, if a user often listens to Billie Eilish and Lana Del Rey, focusing on genres like indie pop and alternative rock, the app might ask the AI to assess their taste based on these preferences. The AI could conclude that the user favors introspective themes and modern pop melodies, offering a deeper understanding of their musical inclinations. This feature not only engages users by providing meaningful insights into their preferences but also adds an interactive, personalized element to their app experience.
Custom User Story 4
Our app features special holiday variants, which change the look of the app on those days. Currently, the app supports special Valentine's Day and Christmas Day variations, and these themes are reflected throughout the app and its features. To achieve these, we have a dedicated static class that provides methods for checking the current day. Each screen in the app, before rendering, quickly checks the day and determines which theme it must apply.
Custom User Story 5: In-App Playback
Experience our app's integrated music playback feature, made possible by the Spotify App Remote SDK for Android (available only for premium users). By using this SDK, the Spotify app on the user's device runs in the background while being controlled from our app, allowing for music playback. We leverage this feature to allow a premium user to listen to their top songs in their Wrapped, simply by tapping on the album art. The song being played is highlighted in a dark gray. Playback is automatically paused when going to the next screen, and can be paused before then by tapping on the album art again. For non-premium users or those without the Spotify app installed, no playback occurs.
Custom User Story 12
One of the main features of our app is the ability for users to sign into their accounts from any device and view their saved Spotify wraps. We have enabled this by using Firebase Authentication, which allows users to set up an account using an email and password, and Firebase Realtime Database, which allows us to store their Spotify data. Each user will have a database entry associated with their account once they create a wrap to be saved. Additionally, upon signing in, the app will retrieve any existing wrap from the database associated with that account, allowing the user to see their old wraps no matter what device they sign in on. On the account management side of things, Firebase Authentication allows us to easily handle users, providing simple ways for users to create, modify, or delete accounts. It even provides some level of security with regard to changing account emails, requiring a verification email to be acknowledged by the new email address before allowing the address to be used for a login event. On the database side of things, Firebase Realtime Database allows us to store necessary data for presenting old wraps to users when a user clicks save on a newly generated wrap. Each wrap is stored with a unique ID, which allows for easy retrieval. When a user wants to see a previously generated wrap, a request is made to the Realtime database to fetch the top songs, top artists, top genres, and the OpenAI API response associated with that particular wrap.