Creating a program that consists of materials from module 1 up to 6.
- Anindya Estiningtyas (202410370110255)
- Nindi Laura Salsabila (202410370110300)
This program has the goal to successfully play a song. To fulfill other requirements, we added account system where the user needs to login. Different account has their own personal song collection. Consider it as a Favorite Playlist.
We took inspiration from the basic music player apps and Spotify on mobile.
- Account-Based
The login screen is the first thing user sees. They are prompted to have an account to be able to access the program. After that, they can play songs they own or delete their account.
| Feature Name | Functionality | Achieved |
|---|---|---|
| Account Login | Allows user to login to their own account, so they access their own song collection. | ✅ Yes |
| Account Creation | Allows user to create a new account if they don't have yet. | ✅ Yes |
| Password Change | The Forgot Password? text link to help users reset their password if they forget. |
✅ Yes |
| Account Deletion | Allows user to delete their account. [Is located on Song List after login.] | ✅ Yes |
- Simplistic (Appearance-Focus)
The easier it is to use, the better. This can be achieved by straight-forward information display and avoid info-dumping to the user. The analysis is done for each screen.
| Screens | Functionality | Achieved |
|---|---|---|
| Login Screen | - Clear prompt to Login by the huge label. - The headphone icon gives away the thought that this is a program related to audio, most likely song or music. - The fields are clear contrast against the black background. - The "eye" to hide/show password stands out since it consumes a partial of the password field. - Buttons to reset password, login, and create a new account are explicitly stated. |
✅ Yes |
| Create New Account | - Fields are the same as Login Screen, making it familiar for user to operate. - An option to go back to login screen if they changed their mind. |
✅ Yes |
| Change Password | - A field for the username and 2 fields for password, ensuring that the new password is memorable so that user will not reset it again. | ✅ Yes |
| Song List | - A table, which is the main feature of the screen, showing contents of the song's thumbnail, title, and singer. It also has a button to play the song. - A button to logout and back to the login screen. - A button to delete the logged account. |
✅ Yes |
| Song Play | - A beautiful interface consists of the song's cover image, title, singer, progress slider, stop and play/pause button, and a button to go back to the song list. |
✅ Yes |
- Core Features
The main goal of this program is to play music successfully. This is the analyze of each steps.
| Steps | Functionality | Achieved |
|---|---|---|
| Account | User can successfully login, create, reset password, and delete account. Logging in brings user to the song list | ✅ Yes |
| Song List | The list of songs shows up as intended. The play button works perfectly. | ✅ Yes |
| Song Play | The song plays as intended. The play/pause button works as intended. However, there are errors: - The stop button does not reset the song. It messes up the UI. (logic error) |
❓Half-way |
| Adding new Song | It is impossible to add a new song as it is not in the function. Thus, new accounts will not have any songs in it. | ❌ No |
| Removing a Song | Removing a song from the list is also not included as a feature. | ❌ No |
- Database
.csv(Comma-Separated Values: user data, user's songs)
- Assets
.png,.jpg(Images: song cover).wav(Audio: the songs)
There are few new challenges that we faced, such as:
- An attempt to load audio file in Java Swing. It natively only allows
.wav, so we had to convert the.mp3files. - Tried to make round edges on the components, such as text field and buttons.
- Coloring and adjusting, making sure that everything is visible and nice to the eyes.
- Managing the classes and files.
As of the time we write it, the classes are still dumped on only 2 files. - Branching and merging was not smooth due to inexperiencce. The progress of a code was reverted due to clicking the wrong button.