As the developer, I want to create a website so musicians can share their music with other musicians.
As the developer, I want the website to be aesthetically pleasing to those who visit the website making good use of HTML, CSS and Bootstrap.
- See user stories
As the developer, I want to website to function in the intended ways using Javascript/JQuery and Python.
- Javascript/JQuery and Python were used for functions and are all working as intended.
As the developer, I want everything shared to be stored in a back end data network, in this case I will be using MongoDB
- Developer used mongoDB to create collections, and built code around adding documents to those collections.
As the site owner, I want users to have a positive experience so that the number of users grows continually.
- See user stories to see how this has been achieved
As the site owner, I want to have a pleasant experience when I add, edit and delete items that I moderate as innapropriate or no longer necessary.
- Admin has access to editting and deleting profiles, uploaded pieces of music, and reviews.
- A user can share an their sheet music.
As a user, I want to be able to share an audio file of the music I performed on my chosen instrument
- A user can share an audio file.
As a user, I want to have a profile page where I can share information about myself in terms of music.
- Users have a profile page that they can edit at any point.
- User can click on a piece of music that isn't their own and write up a review about it
- Other users can share reviews and all of these are viewable by visiting the review tab. A future feature will include a sort option so you can sort by piece title, user or recent.
- The user will find the website easy to understand, all links work, it's colour scheme is muted and understated to fit the theme, with an appropriate font style.
- users can access the profiles of other users and also see what music they have uploaded
- users can listen to the music of other users by pressing the play button on the piece card.
- users can view and save the pdf of the shared sheet music by clicking on the sheet music button a card. This brings up a new tab with the pdf file shared.
-
New user could register with no information
- Added minlength and maxlength, and a required to every field in register
-
New users cannot access profiles
- This bug was solved by adding a simple if else statement on the user_profile.html. If the length of the useruploads array has 1 or more items inside it, then it loads up the users uploaded music. , else it says user hasnt uploaded any music.
-
When a user updates a new piece, it changes all the other details on genre and instrument to say the same for every piece.(in profile view only).
- This bug was due to an error in the code written, and was a simple and obvious fix. At the bottom of the user profile, the append to array code (useruploadstitle.append(piece)) needed to go below all the information in the for loop, where as I had it written before.
-
Having fixed the bug in which a new user could access their profile, after adding search to music, and tweaking the navbar, it seemed to cause a bug where a user without any uploads cannot access their profile or edit it. However, the profile can be accessed from the profile list tab.
- To fix this new error, I had added some unnecessary files to the app.py for user_profile function. Piece=piece was causing it to made it a priority to check if a piece of music had been included by the user. Having removed this, a new user had access to their profile and edit of the profile, without having to have already uploaded.
-
When admin deletes a user, music and reviews are no longer accessible, as the original users ObjectId no longer exists.
- To fix this bug, I had to set the write_review function to send the userid of the original performer to the reviews document in mongodb. Then On the delete_user function, I used a db.music.remove and a db.review.remove with the routes leading to the ObjectId of those files in music and review. It now removes every file relating to that user.
-
When admin or user removes a piece, the review stayed.
- To fix this bug, I wrote a db.reviews.remove (with the object Id linking to the piece of music) in the delete_piece function. This means that any review associated with that piece of music will be deleted at the same time.
-
Came across a bug where on edit, the piece would update profile and send nothing to the piece.
- To fix this, I added a save file to the image, sheet music and audio update request. I also noticed id mis coded and had it send the update to the session user object Id instead of the music piece object Id.
-
MongoDB filling up with unused data
- Ongoing bug that will need fixing in the future. Cannot find out how to code in a fix to delete files as a user deletes from the system with the GridFS system. Will continue to look into. But currently a housekeeping task for developer in the meantime.
-
Sometimes music downloads slowly on heroku
-
It usually does start within 1 minute, and I believe it is possible that this would be fixed by purchasing a higher subscription, as you get access to more resources. E.G advanced gives the opportunity to "Run high traffic, low latency apps" and "autoscaling" amongst many other resources. However, the music does work and is loading, just slower to start.
-
This leads to another error - Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause(). This is logged in the console if a user clicks on another play button before the previous one starts playing. With a faster deployment service this shouldn't be an issue.
-