You’ve definitely listened to a song before and wondered: where can I find other songs that have a similar sound. Maybe you try looking for songs of a similar genre, but those generic playlists don’t seem to ever have what you want. You need something more specific. You’re searching for something else. You’re looking for songs with the same chord progression, maybe its a specific instrument, or even the vocal style. The options are endless.
That’s where Recco comes in, a collaborative community driven music recommendation and database platform designed for musicians and music fans alike. Users can receive personalised song recommendations based on community interaction or your very own AI companion - trained on your activitiy and personalised to your liking. You can post a request based on certain aspects of a song and other users can contribute with recommendations which get community upvoted. Link your music streaming accounts for seamless transitions between apps. For the more musically trained, conribute to and update an ever-expanding database that contains information on each song, including factors and aspects that other users are searching for. Artists are also able to provide information about their own songs, down to the production specifics. Recco is here to foster a strong and inclusive community that connects music lovers from all over the world.
Name: Alvaro Wong
Student number: 46418694
Recco is an online website or mobile app that allows people to both ask for and provide recommendations as well as voting on other people’s posts. Recommendations can also be given through AI algorithms which the user can personally train and work with in their own profiles. The platform hosts a database that is both professionally and community contributed. The app does not host the songs themselves, but appropriate links to other music streaming services can be integrated and provided, based on linked user accounts.
The MVP scope includes:
Availability is critical for a global service like Recco as it’s users will expect the platform to be accessible and operational 24/7. Factors like system uptime and recovery mechanisms are paramount to delivering this experience. Effective monitoring and alerting tools should be put in place to address issues quickly and minimise downtime as much as possible - the main measure of availability. Failing to do so would undermine the app’s purpose to connect users from all over the world at all times.
Reliability is crucial for a large software system like Recco to provide an accurate and uninterrupted user experience. Users would expect the platform to function consistently without any major crashes or disruptions. Information and community posts should be updated in real time to ensure that all users are given a consistent experience. Rigorous stress and load testing should be performed to ensure that the system can handle any errors or failures.
Scalability is imperative for a community based platform like Recco as the system will likely be used by a large and constantly growing user base. It should be capable of handling varying user loads and activity such as community interaction, searching, updating the database, all while maintaining an optimal level of performance and responsiveness. Scalable infrastructure should be used such as cloud services or horizontal scalaing techniques as well as performance testing and optimisation during peak usage periods.
Availability will be evaluated through reaching a target uptime of the system over a defined testing period eg. 99.9% uptime. In case of a fault or disruption, robust monitoring systems should be able to proactively detect and alert of downtime issues so that solutions can be deployed as soon as possible. A server log should also be kept to keep track of crashes and errors for future reference.
Reliability can first be evaluted by a suite of basic checks that test the system can perform correctly under low stress scenarios. These can then be performed under higher stress conditions to ensure that the system functions reliably in all scenarios and will not falter. Metrics such as mean time between failures and mean recovery times, as well as the consistency of the platform’s services and database updates can also be used for evaluation.
Scalability will be evaluated by conducting ample stress and load testing to measure system performance under varying and increasing user loads. During peak usage periods, response times, system resource allocation and stability should be monitored. Scenarios like large user, search or forum activity should be tested independently and concurrently.