User Stories - dvidale/python-react-group-proj GitHub Wiki

User Stories

DashDine, an UberEats clone, is a website for users to order delivery and rate restaurants and services.

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, username, and preferred password 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
    • 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 into.

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.

Demo User

  • As an unregistered and unauthorized user, I would like an easy to find and clear button on both the /signup and /login pages to allow me to visit the site as a guest without signing up or logging in.
    • When I'm on either the /signup or /login pages:
      • 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 navigation bar.
    • While on any page of the site:
      • I can log out of my account and be redirected to a page displaying all restaurants. So that I can easily log out to keep my information secure.

View All Restaurants

  • As a logged in or not logged in user, I want to view all restaurants for delivery from the home page / and the menus on the restaurant pages /restaurants/:id.
    • So I can preview restaurants that are available before deciding if I want to order.

Create a New Restaurant

  • Users should be able to create a restaurant.
  • As a logged in user, I want to be able to create a new restaurant.
  • I would like the website to include a button on the front page that says "Create Restaurant" that takes me to the /restaurants/new page
    • When I'm on the /restaurants/new page:
      • I can fill out details about a new restaurant in a form and submit them.
      • When I am successful in submitting a new restaurant, I would like the website to redirect me to a page restaurants/current for managing my restaurants, where I will see the new restaurant added to my list of restaurants I own.
      • When I enter invalid data in the new restaurant form:
        • I would like the website to inform me of the validations I failed to pass, and repopulate the form with my valid entries.
          • So that I can try again without needing to refill forms I entered valid data into.

Update a Restaurant

  • As a logged in user and owner of a restaurant, I want to be able to update my restaurants.
    • I would like the website to show all of my restaurants on one page to manage them /restaurants/current
    • When I click on one of my restaurants from the management page, I would like the website to show me a form on /restaurants/current/:id with my current restaurant information prefilled
    • When I click on the details page /restaurants/:id for a restaurant I own, I would like the website to include a "Update Details" button to take me to the restaurant update form /restaurants/current/:id
      • So I can conveniently update details about my restaurants anywhere on the website
    • I want to be able to edit the information in the form and submit it to update the restaurant details
    • When I successfully submit an update for my restaurant:
      • I would like the website to show me the restaurant's details with the submitted updates at /restaurants/:id
    • When I enter invalid data in the update restaurant form:
      • I would like the website to inform me of the validations I failed to pass, and repopulate the form with my valid entries.
        • So that I can try again without needing to refill forms I entered valid data into.

Delete a Restaurant

  • As a logged in user and owner of a restaurant, I want to be able to delete my restaurant(s).
    • I would like the website to include a "Delete" button on the restaurant management page /restaurants/current next to each restaurant
    • When I click on the "Delete" button, I want the website to show me a window asking me to confirm that I want to delete the restaurant or to cancel my request to delete.
      • When I click the "Yes (Delete)" button, I would like the website to show me a prompt that says "Delete Successful" with an "OK" button.
        • When I click on the "OK" button, I would like the website to redirect me to the restaurant management page /restaurants/current and show me the restaurant is no longer in my list.
      • When I click the "No (Cancel)" button, I would like the window to close and simply stay on the page that I am currently viewing.

View All Reviews

Users should be able to view all reviews on a restaurant.

  • As a user, whether logged in or logged out, I want to be able to view all reviews for a specific restaurant.
  • When I am on the /restaurants/:id page, I want to see all the reviews written for that restaurant, allowing me to gather input and opinions from other users about their experiences.

Create a Review

Users should be able to create a review for a restaurant.

  • As a logged-in user, I want to be able to create a review for a specific restaurant.
  • When I am on the /restaurants/:id page, I can write and submit a review, enabling me to share my experience with the restaurant. However, if I am the owner of the restaurant, I cannot add a review.

Update a Review

Users should be able to update their reviews for a restaurant.

  • As a logged-in user, I want to be able to edit my previously created review for a specific restaurant.
  • When I am on the /restaurants/:id page, I can update my review to correct any errors or to reflect changes in my experience with the restaurant. Only I should be able to edit my review, as the creator, and no one else.

Delete a Review

Users should be able to delete their reviews from a restaurant.

  • As a logged-in user, I want to be able to delete a review I previously created for a specific restaurant.
  • When I am on the /restaurants/:id page, I can remove my review if I no longer want it publicly displayed because I've reconsidered my words.

Shopping Cart

Add Item to Cart

  • As a user I want to add an item to my shopping cart
  • So that I can purchase it later

Remove Item from Cart

  • As a user I want to remove an item from my shopping cart
  • So that I can update my cart if I change my mind

Update Item Quantity

  • As a user I want to update the quantity of items in my shopping cart
  • So that I can buy more or fewer items as needed
  • I should be able to see if the item isn't available anymore.
  • should be a max limit per item per user

View Cart Summary

  • As a user I want to view a summary of my shopping cart
  • So that I can see what items I have added and the total cost

Calculate Total Price

  • As a user I want to see the total price of the items in my cart including taxes and shipping
  • So that I know how much I will be charged

View Cart from Any Page

  • As a user I want to access my shopping cart from any page in the application
  • So that I can quickly review and modify my cart

View all Menu Items

  • As a logged in or not logged in user, I want to be able to view all menu items for a restaurant on the restaurant's details page /restaurants/:id
    • So I can determine if the restaurant has what I want before signing up to place an order
  • As a logged in or logged out user, I would like the website to include buttons to add items to my shopping cart

Add Menu Items

Users should be able to add menu items to their restaurants.

  • As a logged-in user and the owner of a restaurant, I want to be able to add menu items within my restaurant portal.
  • When I am on the /restaurants/current/:id page, I want the ability to add menu items so that I can showcase a wide variety of dishes available for delivery from my restaurant.

Update Menu Items (future feature)

Users should be able to update menu items under their restaurants.

  • As a logged-in user and the owner of a restaurant, I want to be able to edit menu items within my restaurant portal.
  • When I am on the /restaurants/current/:id page, I want the ability to update menu items so that I can adjust the availability of certain dishes, correct errors, or make changes to reflect the current offerings at my restaurant.

Remove Menu Items

Users should be able to delete menu items from their restaurants

  • As a logged-in user and the owner of a restaurant, I want to be able to delete menu items within my restaurant portal.
  • When I am on the /restaurants/current/:id page, I want the ability to delete menu items so that I can make changes to reflect the current offerings at my restaurant.