The application features two main roles: Artist and User, both extending from the Account superclass, allowing for shared attributes and role-specific functionalities.
Each Artist manages:
- Songs
- Albums
- Followers
- Edit suggestions from users
Each User keeps track of:
- Artists they follow
- Songs they’ve liked
- Songs they’ve viewed
- Songs they’ve added to favorites
Albums can include multiple artists, facilitating collaboration across tracks.
A song may have multiple artists, supporting collaborations on individual tracks.
Dedicated classes are used for managing comments and edit suggestions, allowing interaction between users and artists.
The app features recursive, nested menus for intuitive navigation based on user roles and available actions.
Robust input validation ensures that only valid data is processed throughout the application.
The application ensures persistence by allowing all data to be saved and reloaded between sessions, maintaining state across user and artist activities.
Data is serialized and deserialized using Object Streams, enabling seamless transfer of complex objects between memory and disk.
Generic functions handle saving and loading across all entities, maintaining clean, reusable code and following the DRY (Don't Repeat Yourself) principle.
A structured exception handling system catches and manages errors, ensuring smooth operation even during unexpected situations.
A loading system enhances UX by providing clear feedback during long-running processes, such as data loading or saving, ensuring users are informed about ongoing actions.
- Users can register, log in, or close the application.
- Upon registration, users can choose one of two roles:
- User
- Artist
- To save all changes, manually navigate to Main Menu and choose [Exit] option.
Once logged in as a User, the application provides access to several features:
- Browse All Songs: View all available songs in the platform.
- Favorite Songs: View all songs the user has marked as favorites.
- Browse All Artists: View all available artists on the platform.
- Followed Artists: View a list of artists the user is following.
- Logout: Logout from the current user account.
- Users can select a song from the available list and:
- Like the song.
- Comment on the song.
- Add the song to the Favorites list.
- View the Artists associated with the song.
- Suggest changes to the song's Lyrics.
- View the Album associated with the song.
- Users can view all songs in a selected album and choose to play any of them.
- Users can view all available artists and select one to:
- See all songs by the artist.
- View the artist’s albums.
- Follow the artist.
Once logged in as an Artist, the application provides access to several features specific to managing your songs, albums, and followers:
- View All My Songs: See all songs added by the artist.
- Add New Song: Add a new song to the platform, with the ability to select an album and define song details.
- View All My Albums: See all albums created by the artist.
- Add New Album: Add a new album to the artist's profile.
- View My Followers: See the list of followers who are following the artist.
- View Edit Suggestions: View all edit suggestions submitted by users for the artist's songs.
- Logout: Logout from the current artist account.
Within each song's page, an artist has the following options:
- Change Song Title: Update the title of the song.
- Change Song's Album: Change the album associated with the song (the song will be removed from its current album and added to the new one).
- Update Song Lyrics: Modify the lyrics of the song.
- Add Artist to Song: Add an artist to the song. The application checks if the username exists and ensures the artist is not already part of the song. The new artist will also be added to the list of songs in their profile.
- Remove Artist from Song: Remove an artist from the song. The song will be removed from that artist’s list, and the artist will be removed from the song’s artist list.
When adding a new song, the artist must ensure they have at least one album. The artist can then select an existing album for the song and provide the song's title and lyrics.
Artists can view all their albums. Upon selecting an album, they have the following options:
- View Songs in Album: See all songs within the selected album.
- Edit Album: Modify details of the album, with options to:
- Change Album Name: Update the album's name.
- Add Artist to Album: Add an artist to the album, following the same checks as adding an artist to a song.
- Remove Artist from Album: Remove an artist from the album, following the same checks as removing an artist from a song.
- Parsa Tajik (github profile);
I hope you enjoyed exploring this project as much as I enjoyed building it. If you have any questions, suggestions, or just want to chat about code, feel free to reach out. 🚀
Don't forget to check out my GitHub profile for more exciting projects!
Keep coding, and keep jamming! 🎸✨
