Skip to content

User Stories

Guilherme Pace edited this page Mar 3, 2021 · 5 revisions

User Account

Log in

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

Questions

  • How long should the user session last?
    • 1 week
  • Will the user enter a username or an email address to login?
    • User will login via email and password.
  • What routes are used for login?
    • There is no dedicated frontend route; the user will login on the landing page via a modal.
  • Where should the user be redirected after login?
    • User will be remain on the landing page, but it will now conditionally render a navbar and other content for a logged in user.
  • What happens if the user doesn't exist yet?
    • Show the message above the login form "Please provide valid log in credentials."
  • What happens if the user enters the wrong password?
    • Show the message above the login form "Please provide valid log in credentials."

Acceptance Criteria

  • Given that I'm a logged-out user and
    • When I'm on the landing page
    • Then there will be a login button that will display a modal with a form with an email and password field and a "Log in" button to submit the form.
  • Given that I'm a logged-out user and
    • When I try to fill out the form with an invalid email and password combination and press Enter or press the "Log in" button
    • Then at the top of the form, I will see a red message "Please provide valid log in credentials."
  • Given that I'm a logged-out user and
    • When I try to fill out the form with an email that doesn't exist in the system and press Enter or press the "Log in" button
    • Then at the top of the form, I will see a red message "Please provide valid log in credentials."
  • Given that I'm a logged-out user and
    • When I try to fill out the form with a valid email and password and press Enter or press the "Log in" button
    • Then I will be authenticated and the app will conditionally render while staying on the same frontend route.
  • Given that I am a logged-in user and
    • When I refresh the homepage at the / route
    • Then I will still be logged in
  • Given that I am a logged in user and
    • When I am on the homepage
    • Then there will be the most recently uploaded flights by all users rendered.

Sign up

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

Questions

  • What information are we collecting from the user?
    • First Name, Last Name, Email Address, Country, Photo, Password
  • Will we confirm their password during signup?
    • Yes, there will be a second password field to confirm they typed it as intended
  • Where should the user be redirected after signup?
    • User will be logged in and remain on the landing page, but it will now conditionally render a navbar and other content for a logged in user.
  • What makes each user unique?
    • Email should be what makes user unique.
    • Show the message, "Sorry, that email address already exists."
  • Do we need a confirmation email?
    • No, as email correspondence is out of scope.
  • What routes are used for signup?
    • There is no dedicated frontend route; the user will sign up on the landing page via a modal.

Acceptance Criteria

  • Given that I'm a user who has not yet signed up and
    • When I'm on the landing page
    • Then there will be a sign up link/button that displays a modal form with several fields and a "Sign Up" button to submit the form
  • Given that I'm a user who has not yet signed up and
    • When I try to fill out the form with an email that already exists 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 is already in use."
  • Given that I'm a user who has not yet signed up and
    • When I try to fill out the form with a password shorter than 6 characters
    • Then, at the top of the form, I will see a red message "Sorry, password must be at least 6 characters long."
  • Given that I'm a user who has not yet signed up and
    • When I try to fill out the form with valid inputs and press Enter or the "Sign Up" button
    • Then, I will be registered, logged in and the landing page will conditionally render the navbar and other relevant content.
  • 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 and
    • 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 SoarView, 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 the application without creating a new account.

Demo User Questions

  • Will the user use an email address or username to login?
    • The user will login with the email demo@aa.io and the password "password"
  • What will the demo user have access to?
    • The demo user will have access to all features available to a registered user.

Flight Management

As a logged-in user, I want to upload a flight, so that I and others can review the flight.

Questions

  • How will a user upload a flight?
    • In the navigation bar when a user is logged in, they will be able to click on a 'Upload Flight' button.
  • Are certain fields unnecessary to complete?
    • Yes, pilots notes are not required.
  • What information is shown on the flight page?
    • Date, duration, distance, location, glider model, launch type, pilot notes, and a map with the flight path rendered.
  • Will the uploader have exclusive rights to make changes to a flight?
    • Yes, the uploader will be the only one able to make changes to the flight (edit details, delete the flight).
  • Are all flight public and visible to anyone?
    • All flights are visible to logged in users.
  • What routes should we use for flight pages?
    • The following format: 'flight/:id'

Flight Viewer

As a visitor to SoarView I want to be able to view and analyze flight tracks uploaded by anyone.

Questions

  • Will not logged in users be able to view flights?
    • No, only logged in users will be able to view flights.
  • Where will the user be redirected after deleting a flight?
    • To the homepage.
  • How will a user edit a flight?
    • There will be a conditionally rendered 'Edit' button for the user that uploaded the flight.
    • This will open a form modal pre-populated with existing information.
    • After confirmation of changes user will remain on the flight page and the information will be updated.

Logbook

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

Questions

  • What information is shown on the user profile?
    • First name, last name, image, location, and all of the users flight with some aggregated statistics.
  • 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 flights have links that take the user to those pages.
  • What routes should we use for user profiles?
    • The following format: 'user/:id'

Comments

As a logged-in user, I want to make comments on flights, so I can share my opinion with others.

Questions

  • Can any logged in user comment on any flight?
    • Yes.
  • Can a user edit their comment?
    • A user will have the ability to delete a comment, but not to edit it.
  • How are comments displayed on the page?
    • Comments will be displayed under the flight details in chronological order.