This project is organized as a monorepo. The folder "swiftify-frontend" contains the application itself, whereas "swiftify-backend" contains all miscellaneous code (such as the AWS Lambda functions) and is included for completeness. Both are separate Maven applications with their own dependencies.
The application is started by running Main.java inside "swiftify-frontend".
After the brainstorming session in our tutorial, our team has tentatively decided to create a music player. This decision was motivated by the abundance of features that could be implemented, ensuring that the project would be interesting for every single group member.
We hypothesize that the key features of a music player (that would need to be implemented) are:
- Login System
- User creation/management (probably via an API like Oauth)
- Login screen (needs a frontend)
- Routing/auth flow (probably via an API like Oauth)
- User Customization System
- Friends list (optional)
- Profile customization (optional)
- Personal music collection, i.e. playlists etc. (essential)
- Music Database
- Music Player
- Music Player Component (essential)
- Music Lyrics (optional)
- Music Queue/Recommender/Shuffle/History (essential)
- Discussion feature
- Front End
As this is quite ambitious, we may remove features depending on the rate of progress, but this is more or less the big picture.
The following API can be used to implement feature 4.ii above: https://developer.musixmatch.com/documentation
- Since our project is a complex system that depends on many features working cohesively, we will need to use a myriad of APIs, which will be difficult to implement (Oauth in particular). In addition, we will almost certainly run into incompatibility issues or other esoteric bugs that will test our web development abilities.
- For example, in trying to implement the above API, we initially encountered issues with a 401 error, indicating that the URL was invalid (in our case, the API key was incorrectly entered). I found it quite useful to examine other examples of API calls. One that particularly aided me was studying JokeAPI and how the URL was constructed, along with how the various parameters were combined. After reviewing these examples, our team successfully obtained an output from the Musixmatch API, as shown in the image.