Skip to content

User Stories

Gavin Fitch edited this page Dec 14, 2021 · 4 revisions

User Stories

User auth:

Sign up

  • As an unregistered user, I want to be able to sign up for the site using a signup form.

    • When I'm on the '/signup' page:
      • I would like to be able to enter my full name, username, email address, and preferred password via a clearly laid out form. * I would like to be able up upload a profile photo from the signup form.
      • I would like the site to log me in upon successful completion of the sign-up form.
  • When I enter invalid data on the signup form: * I would like the site to inform me of the validations I failed to pass, and repopulate the form with my valid entries, with the exception of my password.

Log in

  • As a registered user, I want to be able to log in to the site using a login form.

    • When I'm on the '/login' page:
      • I would like to be able to enter my email and password via a clearly laid out form and have the site log me in upon successful completion.
  • When I enter invalid data on the login form:

    • I would like the site to inform me of the validations I failed to pass, and repopulate the form with my valid entries, with the exception of my password.

Guest user

  • I would like an easy to find and clearly labeled button on the '/login' page that allows me full access to the site without actually having to log in or sign up.
    • When I'm on the '/login' page:
      • I can click on a 'Log in as Guest' button and be allowed the same access as a logged-in user.

Log out

  • As a logged-in user, I want to be able to log out via an easy to find and clearly labeled 'Log out' button.
    • While on any page of the site:
      • I can log out of my account and be redirected to the '/login' page.

Songs:

Upload songs

  • As a logged in user, I want to be able upload songs via a clean and intuitive upload form.
    • When I'm on the '/songs/new' page:
      • I can upload a song via a file input, add a song title, an optional album name, and an artist name, as well as upload an optional album cover via a second file input.

View/listen to songs

  • As a logged in user, I want to be able to view as well as listen to all uploaded songs.
    • When I'm on the homepage:
      • I can view and listen to all songs posted by myself, as well as other users.

Update songs

  • As a logged in user, I want to be able to update the song title, album name, artist name, and album cover of songs I have uploaded via a clean, intuitive, and easy to find form.
    • When I'm on any page that displays songs:
      • I can click an "Edit" button and be redirected to a form to update the specified song.

Delete songs

  • As a logged in user, I want to be able to delete songs I have uploaded via an easy to find delete button.
    • When I'm on any page that displays songs:
      • I can click a "Delete" button, which will display a confirmation modal, and if confirmed, permanently delete any song I have uploaded.

Library/playlists

Create playlists

  • As a logged in user, I want to be able create playlists via a clean and intuitive modal.
    • From the 'new playlist' modal:
      • I can specify a playlist title, as well as upload an optional cover photo.

View playlists

  • As a logged in user, I want to be able to view my playlists as well as other user's playlists.
    • When I'm on the homepage:
      • I can view and listen to my own playlists.
      • When I'm on the users/:id page: * I can view and listen to the specified user's playlists.

Update/add songs to playlists/library

  • As a logged in user, I want to be able to add songs to my library or any of my playlists via an easy to find "Add" button next to any song.

    • When I'm on any page that displays song:
      • I can click an "Add" button, and will be displayed a dropdown menu containing 'library', as well as a list of my playlists. Once a my library or a playlist is selected the specified will be added to the my library/playlist.
  • As a logged in user, I want to be able to remove songs from my library or any of my playlists via an easy to find "Remove" button next to any song displayed in the library/playlist.

    • When I'm on the 'playlist/:id' or 'users/:id/library' pages:
      • I can click a "Remove" button, and remove the specified song from the library/playlist.
  • As a logged in user, I want to be able to update the title, as well as the cover photo of any playlist I've created.

    • When I'm on the playlists/:id page of any playlist I've created:
      • I can click an "Edit" button and be redirected to a form to update the specified playlist.

Delete playlists

  • As a logged in user, I want to be able to delete playlists I have created via an easy to find delete button.
    • When I'm on the playlists/:id page of any playlist I've created:
      • I can click a "Delete" button, which will display a confirmation modal, and if confirmed, permanently delete any playlist I have created.

Search

Search for songs

  • As a logged in user, I want to be able to search for songs via an easy to find search bar.
    • When I'm on the '/search' page:
      • I can enter a song title, album name, or artist name, and be displayed songs that contain the specified search term.

Follow playlists

View follows

  • As a logged in user, I want to be able to view playlists that I follow.
    • When I'm on my homepage page:
      • I can see a list of the playlists I follow. If I click any of the playlists I will be redirected to the 'playlists/:id' page of the specified playlist.

Follow a playlist

  • As a logged in user, I want to be able to follow any playlist created by other users.
    • When I'm on my 'playlist/:id' page:
      • I can click a follow/unfollow button and have the playlist added/removed from my 'Followed Playlists' list.

Follow users

View follows

  • As a logged in user, I want to be able to view users that I follow.
    • When I'm on my profile page:
      • I can see a list of the I can see a list of users follow. If I click any of the user's usernames or thumbnails I will be redirected to the 'users/:id' page of the specified user.

Follow a user

  • As a logged in user, I want to be able to follow any other user.
    • When I'm on a user's 'users/:id' page:
      • I can click a follow/unfollow button and have the user added/removed from my 'Following' list.