Skip to content

User Stories

Meng Tian edited this page Sep 20, 2023 · 17 revisions

Users

Sign Up

  • As an unregistered and unauthorized user, I want to be able to sign up for the website via a sign-up form.
    • When I'm on the /signup page:
      • I would like to be able to enter my email, name, password and address on a clearly laid out form.
      • I would like the website to log me in upon successful completion of the sign-up form.
        • So that I can seamlessly access the site's functionality
      • I would like to be able to search for addresses with autocomplete, simplifying both input and verification processes.
    • When I enter invalid data on the sign-up form:
      • I would like the website to inform me of the validations I failed to pass, and repopulate the form with my valid entries (except my password).
        • So that I can try again without needing to refill forms I entered valid data info.
    • If I enter an address on the landing page, the signup page should store the address and automatically fill in specific fields in the signup form: street address, city, state, and zipcode.
    • The signup button is positioned on the landing page, in the navigation bar when the user is not logged in, and within the user menu accessible by clicking the menu button located next to the logo.

Log in

  • As a registered and unauthorized user, I want to be able to log in to the website via a log-in form.
    • When I'm on the /login page:
      • I would like to be able to enter my email and password on a clearly laid out form.
      • I would like the website to log me in upon successful completion of the log-in form.
        • So that I can seamlessly access the site's functionality
    • When I enter invalid data on the log-in form:
      • I would like the website to inform me of the validations I failed to pass, and repopulate the form with my valid entries (except my password).
        • So that I can try again without needing to refill forms I entered valid data into.
    • If I enter an address on the landing page, the login page should save the address, display a welcome message reflecting the updated address, and subsequently update my delivery address after logging in.
    • The login button is positioned on the landing page, in the navigation bar when the user is not logged in, and within the user menu accessible by clicking the menu button located next to the logo.

Demo User

  • As an unregistered and unauthorized user, I want a clearly visible button that I can click after pressing either 'Log In' or 'Sign Up'. This button should allow me to browse the site as a guest without the need to sign up or log in.
    • After I pressed either 'Log In' or 'Sign Up' button:
      • I can click on a Demo User button to log me in and allow me access as a normal user.
        • So that I can test the site's features and functionality without needing to stop and enter credentials.

Log Out

  • As a logged in user, I want to log out via an easy to find log out button on the user menu accessible by clicking the menu button located next to the logo.
    • While on any page of the site:
      • I can log out of my account and be redirected to the landing page.
        • So that I can easily log out to keep my information secure.

User Menu

  • On every page, I want to access my user menu by clicking on the dash button located in the top-left corner, adjacent to the logo.
    • As a user who is logged in:
      • I would like to see my photo and first name as my personal information in the user menu.
      • I would like to be able to click 4 buttons for Orders, Favorites, Manage restaurants, Create new restaurant in the user menu.
      • I would like to be able to click log out button to sign out.
    • As a user who is logged out:
      • I would like to be able to click 3 buttons for Sign up, Log in, and Log in as Demo User in the user menu.

Restaurants

View all restaurants

  • As a logged in user on the /restaurants page, I want to be able to view:
    • A navigation bar positioned at the top of every page, featuring:
      • A user menu dropdown button on the left side, comprising:
        • A welcoming message("Hello, ").
        • A button to access past orders.
        • A button to access favorited restaurants.
        • 2 buttons for managing and creating new restaurants.
        • A logout button.
    • The logo situated to the right of the menu button, serving as a link to the homepage.
    • A central search bar.
    • In the top right corner, a "Past Orders" button and a shopping cart button that reveals current order items in a side panel.
    • A category filter bar for sorting restaurants by category. Clicking the category icon I can view the search results for the category.
    • Beneath the category filter bar, a side show enabling quick browsing of various options.
    • In the main section, 4 sections including "Popular restaurants nearby location", "newest created restaurant", "recommended dishes", and by default "all restaurants".
      • Each restaurant card includes a preview image, restaurant name, star rating, delivery fee, and price range. Clicking it will redirect me to the restaurant detail page.
      • To the left of the restaurants, filters and sorters for specifying price range, diatery type, etc.

View a single restaurant

  • As a logged in user on the /restaurants/:restaurantId page, I want to be able to view:
    • An image displayed at the top, accompanied by restaurant information below, including the name, rating, cuisine type, and price range.
    • Clicking "View map", I want to be able to open a modal showing the store details and the Google map direction.
    • Below the restaurant information, there is a list of item tiles organized by item type. Each tile features an item image, name, price, and a "+"
    • button that opens a modal for adding the item to your cart.
    • Within the modal, you have the option to zoom in the item image, adjust the quantity and then add the item to your cart.
    • Following the menu, there is a list of reviews for the restaurant.
  • As a logged out user on the /restaurants/:restaurantId page, I want to be able to view similar infomation, except:
    • The store map only shows the store location, not direction.
    • Within the item modal, I have the capability to modify the quantity. However, upon clicking the "Add to cart" button, a warning message will appear, stating, "Please log in to add items to the cart.

Create a new restaurant

  • As a logged in user on the /business/restaurant-builder page, I want to be able to create a new restaurant:
    • Access the "Create your restaurant" link located in the site's sidebar from any page.
    • Upon clicking the link, I should be directed to the new business registration form.
  • If I input incorrect data into the new restaurant form, I expect the website to provide clear feedback on the specific validation errors.

Update a restaurant

  • As a logged in user on the /business/:businessId page, I want to be able to edit my restaurant by simply clicking an "Edit store profile" button. This action will redirect me to the /business/:businessId/edit form page, allowing me to make changes to my restaurants details or menu.
  • If I input incorrect data into the new restaurant form, I expect the website to provide clear feedback on the specific validation errors.

Delete a restaurant

  • As a logged in user on the /business/:businessId page, I want to be able to delete my restaurant by clicking an "Delete store" button.
  • After clicking the button, I expect a pop-up window to appear, requesting confirmation of my deletion choice. This additional step ensures that I confirm my decision before the deletion is finalized.

Orders

  • I have the option to review the items added to my shopping cart.
  • I can simultaneously create multiple shopping carts.
  • By clicking on the shopping cart icons in the top right corner, I can access a list of all my shopping carts.
    • Inside each shopping cart, I can view details such as the restaurant name, address, a list of all items with quantities, and the subtotal before proceeding to checkout.
    • Clicking on the '...' button allows me to clear the contents of a specific shopping cart.
    • Selecting 'Add items' will close the dropdown menu and take me to the restaurant's page to continue adding or updating items.
    • I can click on the 'Go to checkout' button, which will redirect me to the checkout page. On the checkout page, I have the option to modify the delivery method, provide a tip, and review the order summary along with the total price for the order.

Reviews

View all reviews

  • In the user menu, I can click the Orders buttons to view all the past orders.
  • For each order, I can click to view the restaurant. I can rate my order to submit my reviews including rating, comment for the restaurant and likes/dislikes for dishes in the orders.

Create a review

  • Whether I'm logged in or logged out, I want to have the ability to read reviews posted by all users regarding stores and dishes.
  • While on the "/restaurants/:restaurantId" page, I want to be able to view the overral rating and the distribution of all the ratings for this restaurant.

Update a review

  • When I'm viewing a review I've posted, I should be able to click an "Edit" button to make modifications to my review.
  • On the review modal, I am able to submit a new rating and updated review.

Delete a review

  • Likewise, I should have the option to click a "Delete" button to remove my review.

Business Dashboard

  • I should be able to view a line chart displaying sales performance snapshots over the past 12 months.
  • I should be able to view the information about significant orders.
  • I should be able to view the top-selling dishes.
  • I should be able to view total (returned/new) customers statistics.
  • I should be able to view the customer satisfaction and menu item feedback.
  • I should be able to view the menu table and sort by different column names.