User Stories - GaronSmith/expedition-leader GitHub Wiki

Login


As an unauthorized user, I want to be able to login to the website via a Modal form, so that I can access my private information.

Questions

  • Will the user enter a username or an email address to login?
    • User will login via email and password
  • What routes should we use for login?
    • User will login via /login route (maybe form at top page )
  • Where should the user be redirected after login?
    • User will be redirected to the / homepage
  • Will we allow OAuth authentication via a third party?
    • Not in MVP -- This is a bonus feature
  • What happens if the user doesn't exist yet?
    • Show the message above the login form "Sorry the email or password was incorrect."
  • What happens if the user enters the wrong password?
    • Show the message above the login form "Sorry the email or password was incorrect."
  • Should this story include allowing a user to reset their password?
    • no as email correspondence is out of scope.
  • Should logging in use session-based or use token-based authentication?
    • This application will use JWT authentication.

Acceptance Criteria

  • Given that I'm a logged-out user and
    • When I'm on the /login route
    • Then there will be a login form with an email and password field and a "Login" button to submit the form.
  • When I am on the / homepage
    • Then there will be the most recently review movies and top rated
  • When I try to fill out the form with an invalid email and password combination and press Enter or press the "Login" button
    • Then at the top of the form, I will see a red message "Sorry the email or password was incorrect."
  • When I try to fill out the form with an email that doesn't exist in the system and press Enter or press the "Login" button
    • Then at the top of the form, I will see a red message "Sorry the email or password was incorrect."
  • When I try to fill out the form with a valid email and password and press Enter or press the "Login" button
    • Then I will be redirected to the homepage at the / route.
  • Given that I am a logged-in user
    • When I refresh the homepage at the / route
    • Then I will still be logged in
  • When I view my homepage
    • Then I will view the most recent actions of my followed friends
    • Then I will view the most recent added movie to each of my blockbuster shelves
    • Then I will view my current movie watching status

Sign-Up


As an unauthorized user, I want to be able to sign up for the website via a signup form modal

Questions

  • How long should the user session last?
    • 1 week
  • What information are we collecting from the user?
    • First Name, Last Name, Email Address, Location, Photo, Password
  • Will we confirm their password during signup?
    • Yes
  • What does the UX look like? What does the form look like? How simple is it?
    • UX will be a pop up modal allowing for toggle between signup and login
  • Where should the user be redirected after signup?
    • User will be redirected back to the homepage
  • What makes each user unique.
    • Email should be what makes user unique.
    • Show the message, "Sorry, that email address or username already exists."
  • What are the password requirements?
    • At least 6 characters, must include 1 Uppercase, 1 Lowercase, 1 Number
  • What happens if the user's password isn't strong enough?
    • Assuming the password and password confirm fields are right above the submit button, stay on the same page, and show the message, "Sorry, the password you entered does not meet our requirements."
  • Are we allowing sign up via OAuth?
    • Not during MVP potential bonus
  • Do we need a confirmation email?
    • No, as email correspondence is out of scope.
  • What routes should we use for sign up?
    • User will sign up via /api/signup route
    • If sign up is successful, user will be redirected to /homepage

Acceptance Criteria

  • Given that I'm a user who has not yet signed up and
    • When I'm on the /signup route
    • Then there will be a signup form with username, email, and password field and a "Sign Up" button to submit the form (bio, first name, last name??)
  • When I try to fill out the form with an email or username that already exists with a valid password and press Enter or the "Sign Up" button
    • Then, at the top of the form, I will see a red message "Sorry, that email address or username already exists."
  • When I try to fill out the form with a password shorter than 6 characters and/or missing the specific character requirements
    • Then, at the top of the form, I will see a red message "Sorry, password must be at least 6 characters long and contain one of each of the following characters: uppercase, lowercase, number."
  • When I try to fill out the form with a valid email, username, and password and press Enter or the "Sign Up" button
    • Then, I will be redirected to the homepage at / route
  • Given that I am a user that just signed up, when I refresh the homepage at / route
    • Then, I will still be logged in

Log Out


As a user, I want to be able to log out of my account at my leisure. When I click the "Logout" button/link on the navigation bar, I want to be able to hide my account information from the rest of the users on this device.

Questions

  • Will the user have access to the logout button on each page or just on their profile or homepage?
    • Possibly a dropdown on profile/dashboard and homepage
  • What routes should we use for logout?
    • /logout
  • Where should the user be redirected after logging out?
    • User should be redirected to the root

Acceptance Criteria

  • Given that I'm a user who is currently logged in
    • When I'm on the / homepage route
    • Then there will be a Logout button/link on the navigation bar that I can click at my leisure, so I will be able to hide my account information
  • Given that I am a user that is logged in, when I click the Logout button/link
    • Then, I will be redirected to the /homepage and my account information will be hidden

Groups


As a logged-in user, I want to create a group, so that i can create trips with different groups.

Questions

  • What information is shown on the group page?
    • Name, description
  • Will the group creator have exclusive rights to make changes to a group?
    • Yes, the owner of a group will be the only one able to make changes to the group (edit details, delete the group).
  • Are all groups public and visible to anyone?
    • No.
  • What routes should we use for group pages?
    • The following format: 'group/:id'
  • How does the recipient of a request of a private group approve join requests?
    • There is a list of pending join requests with approve/reject buttons rendered on the group and visible only to the user.
  • How does a user join or leave a group? *A user must be invited to the group aand can leave with a exit button
  • How are the groups created?
    • with a create group form in the NavBar

Trips


As a visitor to Expedition leader I want to create a trip

Questions

  • Will not logged in users be able to view trips?
    • no only the splash page
  • How will a user create a trip?
    • in the group a user is a part of when a user is logged in, they will be able to click on a 'create trip' button
  • Is there a character limit for details of trip creation?
    • yes 1500 Characters
  • What is shown on the create trip form?
    • date location, and the ability to select individuals from the group
  • Are certain fields unnecessary to complete?
    • yes all are required
  • What is shown on the individual trip page?
    • Trip time, location, details
    • a drag and drop board with all of the equipment of the attending users
  • Will you be able to see other people attending the event?
    • yes there will be a column for each individual
  • Who can delete a trip?
    • trip Owner and the group admin
  • Who can edit a trip?
    • trip owner can edit the event with a conditionally rendered delete button
  • where will the user be redirected after deleting an event?
    • to the homepage
  • How will an event owner trip an event?
    • there will be a conditionally rendered 'Edit trip' button for the event owner
    • this will open a form pre-populated with existing information.
    • after confirmation of changes user will be redirected to the event details page
  • What route will a user follow in order to view a event details page?
    • user will follow '/trip/:id'
  • will non-Group members be able to attend for a trip?
    • no users will have to be invited the group in order to join trip

Search functionality


As a logged-in user I want to be able to search for other users.

Questions

  • Will the search be case sensitive?
    • no search will be case agnostic
  • How will the search results be presented?
    • it will be shown in a list ordered order alphabetically
  • What information will be shown in the search results?
    • The user Names
  • Will a user have to click on a search button?
    • no the search will work like a filter table updating as the user keys up
  • Will a not logged in user be able to use the search?
    • no

Gear Store

As a logged-in user i want to have a main page where I am able view add and edit my equipment store

Questions

  • Will i be able to upload a picture of my equipment?
    • yes
  • How will I enter the equipment ?
    • in a Form with the required fields
  • Can I delete Items?
    • yes after an item is created you can delete it
  • is my story private
    • yes until you join a trip