User Stories and Acceptance Criteria - stevenkleinberg/Python_Group7_Soundcloud GitHub Wiki

User Stories

Users

Sign Up

  • As an unregistered and unauthorized user, I want to be able to sign up for the website via a sign-up form.
    • When I'm on the /signup page:
      • I would like to be able to enter my email, name, and preferred password on a clearly laid out form.
      • I would like the website to log me in upon successful completion of the sign-up form.
        • So that I can seamlessly access the site's functionality
    • When I enter invalid data on the sign-up form:
      • I would like the website to inform me of the validations I failed to pass, and repopulate the form with my valid entries (except my password).
      • So that I can try again without needing to refill forms I entered valid data into.

Log in

  • As a registered and unauthorized user, I want to be able to log in to the website via a log-in form.
    • When I'm on the /login page:
      • I would like to be able to enter my email and password on a clearly laid out form.
      • I would like the website to log me in upon successful completion of the lob-up form.
        • So that I can seamlessly access the site's functionality
    • When I enter invalid data on the log-up form:
      • I would like the website to inform me of the validations I failed to pass, and repopulate the form with my valid entries (except my password).
        • So that I can try again without needing to refill forms I entered valid data into.

Demo User

  • As an unregistered and unauthorized user, I would like an easy to find and clear button on both the /signup and /login pages to allow me to visit the site as a guest without signing up or logging in.
    • When I'm on either the /signup or /login pages:
      • I can click on a Demo User button to log me in and allow me access as a normal user.
        • So that I can test the site's features and functionality without needing to stop and enter credentials.

Log Out

  • As a logged in user, I want to log out via an easy to find log out button on the navigation bar.
    • While on any page of the site:
      • I can log out of my account and be redirected to a page displaying a sample of songs.
        • So that I can easily log out to keep my information secure.

Songs

Create songs

  • As a logged in user, I want to be able to add new songs via song URL.
    • When I'm on the /new-song page:
      • I can name and upload a new song.
        • So that I can share my music with the world.

Viewing Songs

  • As a logged in or logged out user, I want to be able to view a selection of the most popular songs.
    • When I'm on the / page:
      • I can view and listen to the ten most liked posted songs.
        • So that I can hear what's popular
    • When I'm on the /songs page:
      • I can view and listen to all of the newest songs posted
        • So that I can find the newest artists
  • As a logged in user, I want to be able to view a specific song and its associated comments and likes.
    • When I'm on the /songs/:id page:
      • I can play and listen to the song, as well as its associated comments and likes.
        • So that I can see more information about the specific song
  • As a logged in user I want to be able to continue listening to the song I'm playing as I navigate the site.

Updating Songs

  • As a logged in user, I want to be able to edit my songs by clicking an Edit button associated with the song anywhere that song appears.
    • When I'm on the /, /songs, /songs/:id, or /users/:id/songs pages:
      • I can click "Edit" to make changes to the song I have posted.
        • So that I can rename or change the artwork of the song.

Deleting Songs

  • As a logged in user, I want to be able to delete my songs by clicking a Delete button associated with the song anywhere that song appears.
    • When I'm on the /songs, /songs/:id, or /users/:id/songs pages:
      • I can click "Delete" to permanently delete a song I have posted.
        • So that if no one likes my music I can take it down.

Comments

Create comments

  • As a logged in user, I want to be able to comment on songs.
    • When I'm on the /songs/:id page:
      • I can comment on a song.
        • So that I can share my thoughts on music with the world.

Viewing comments

  • As a logged in user, I want to be able to view a specific song and its associated Comments and Likes.
    • When I'm on the /songs/:id page:
      • I can play and listen to the song, as well as its associated comments and likes.
        • So that I can see more about the specific song

Updating comments

  • As a logged in user, I want to be able to edit my comments by clicking an Edit button associated with the comment on the song page.
    • When I'm on the /songs/:id pages:
      • I can click "Edit" to make permanent changes to the comment I have posted.
        • So that I can change what I said.

Deleting comments

  • As a logged in user, I want to be able to delete my comments by clicking an delete button associated with the comment on the song page.
    • When I'm on the /songs/:id pages:
      • I can click "delete" to remove the comment I have posted.
        • So that I can remove what I said.

Likes

Create likes

  • As a logged in user, I want to be able to like songs.
    • When I'm on the /, /songs, /songs/:id, or /users/:id/songs pages:
      • I can click "Like" to like the song.
        • So that I can show the creator it is good, and save it for later.

Viewing likes

  • As a logged in user, I want to be able to view a specific song and its associated Likes.
    • When I'm on the /, /songs, /songs/:id, or /users/:id/songs pages:
      • Any display of a song will show the songs number of likes, and display whether I have already liked it
        • So that I can see what's good.
    • When I'm on my personal /users/:id page
      • I can view all of the songs that I have liked.
        • So that I can keep track of what I like.

Updating/Deleting Likes

  • As a logged in user, I want to be able to unlike a song or playlists by clicking the like button associated with the song.
    • When I'm on the /, /songs, /songs/:id, or /users/:id/songs pages:
      • Any display of a song will display whether I have already liked it, and if I click like again it will remove my like
        • So that I can change my mind.

Playlists

Create playlists

  • As a logged in user, I want to be able to create new playlists.
    • When I'm on the playlists page:
      • I can create a new playlist.
        • I can organize my songs within a playlist in an order I choose.

View playlists

  • As a logged in user, I want to be able to view my playlist.
    • When I'm on the playlist page:
      • I can view all playlists from the playlist page.
        • I can see how many songs are in my playlist.

Update playlists

  • As a logged in user, I want to be able to update my playlists.
    • When I'm on the /playlists/:id page:
      • I can update the name of an individual playlist
        • So that I can be more specific.

Delete playlists

  • As a logged in user, I want to be able to delete my playlists.
    • When I'm on the /playlists/:id page:
      • I can delete an individual playlist.
        • Deleting my playlists would not delete the songs within the playlists.

User Pages

View User Page

  • As a logged in user I want to be able to view my name background image and banner image on my user page.
    • Other users will also have the ability to view my user page.

Update User Page

  • As a logged in user I want to be able to edit my username and banner image/avatar image if I ever choose to do so.
    • I can edit each of them individually.