User Stories - GaronSmith/syncUP 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

Demo User


As a first time user who wants to demo syncUP,I would like to peruse the site with a demo user login via a single button click on the login and signup form, so that I can access syncUP without creating a new account.

Demo User Questions

  • Will the user use an email address or username to login?
  • What will the demo user have access to?
    • The demo user will have access to the list of movies, and some reviews of the movies

Groups


As a logged-in user, I want to create a group, so that others with similar interests can participate in events.

Questions

  • What information is shown on the group page?
    • Name, description, image, location, public/private, owner, members, and events.
  • 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. There are two types of groups; public and private. Any logged-in user can view and join a public group. Private groups are only visible to it's members and a logged-in user needs to request to join.
  • Are public groups visible to anyone?
    • Yes, even to users that are not logged in.
  • What routes should we use for group pages?
    • The following format: 'group/:group-name'
  • How does the owner 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 owner.
  • How does a user join or leave a group?
    • A join button is rendered for non-members and a leave button is rendered for members of the group. If a not logged in user clicks on a join button, he/she will be asked to log in.

Events


As a visitor to syncUP I want to be able to view and rsvp to events made by particular groups

Questions

  • Will not logged in users be able to view events?
    • yes not logged in users will be able to view events in search; however, they will not be able to rsvp, view more details, nor create
  • How will a user create an event?
    • in the navigation bar when a user is logged in, they will be able to click on a 'add event' button
  • Is there a character limit for details of event creation?
    • yes 1500 Characters
  • What is shown on the create event form?
    • Event time, location, capacity, details, ability to upload photo, a drop down filled with user's groups to select from,
  • Are certain fields unnecessary to complete?
    • yes a photo is not requred
  • What is shown on the individual event page?
    • Event time, location, capacity vs #of rsvped, owner of the event (link), What group the event is in (link), details of the event, the uploaded photo or a stock event photo
    • The host's image is shown next to the host name.
    • the Group image is shown next to the group name
  • Will you be able to see other people attending the event?
    • yes there will be a grid of users cards showing name and photo of each individual attending the event
  • Will the host be shown as a attendee?
    • yes they will be automatically added as an attendee on creation of the event
  • Who can delete an event?
    • Event Owner and the group admin
  • Who can edit an event?
    • event 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 edit an event?
    • there will be a conditionally rendered 'Edit event' 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 '/event/:id'
  • will non-Group members be able to rsvp for an event?
    • no users will have to join the group in order to rsvp to the event

Search functionality


As a logged-in or not logged in user I want to be able to search for existing events.

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 from closest by date time to furthest by date time
    • the results will be grouped by unique dates
  • What information will be shown in the search results?
    • Th Event title will be the primary information along side the thumbnail of the event image, the date ,and the group it is a part of
  • 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?
    • yes; however, when clicking on the search result they will be prompted to login rather than view the page
  • Will the user be able to filter results by date?
    • yes there will be a calandar widget where the user can select a start and end date.

User Profile

As a logged-in user, I want to have a profile page, so I and other can view information related to my account.

Questions

  • What information is shown on the user profile?
    • First name, last name, image, location, groups, and events.
  • Are user profiles public and visible to anyone?
    • User profiles are visible to logged-in users only.
  • What is the interactivity of user profiles?
    • A user can make changes to his/her profile by clicking an edit button. Fields that can be changed include names, image, and location. The rendered groups and events have links that take the user to those pages.
  • What routes should we use for user profiles?
    • The following format: 'user/:id'