-
Notifications
You must be signed in to change notification settings - Fork 0
User Stories
As an unauthorized user, I want to be able to login to the website via a form, so that I can access the application.
- 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."
- 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.
As an unauthorized user, I want to be able to sign up for the website via a signup form modal
- 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.
- 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
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.
- 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
- 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
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.
- 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.
As a logged-in user, I want to upload a flight, so that I and others can review the flight.
- 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'
As a visitor to SoarView I want to be able to view and analyze flight tracks uploaded by anyone.
- 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.
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.
- 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'
As a logged-in user, I want to make comments on flights, so I can share my opinion with others.
- 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.