USER STORIES - TheBabblingBrin/capstone-bnb GitHub Wiki

User Stories

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 lob-up form.
        • So that I can seamlessly access the site's functionality
    • When I enter invalid data on the log-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.

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 recent Spots.
        • So that I can easily log out to keep my information secure.

Spots

Create a Spot

  • As a logged in user, I want to be able to create spots.
    • When I'm on the /host page:
      • I can create a new spot with a name, description, and pictures.
        • So that I can host my spot for other users to reserve.

Viewing Spots

  • As a logged in user, I want to be able to view a selection of the spots that are available for reservation.

    • When I'm on the / page:
      • I can view all the available spots.
        • So that I can book a spot to stay.
    • When I'm on the /hosting/spots page:
      • I can view all the spots I am hosting.
        • So that I can view all spots I have created.
  • As a logged in user, I want to be able to view a specific spot.

    • When I'm on the /spots/:spotId page:
      • I can view the content of a spot and available reservation dates.
        • So that I can view the details of a spot to decide if I would like to book it.

Updating Spots

  • As a logged in user, I can update a spot that I am an owner of.
    • When I'm on the /spots/:spotid or /hostings/spots page:
      • I can click "Edit" to make changes to the spot.
        • So that I can fix any errors I make in my spot.

Deleting Spots

  • As a logged in user, I want to be able to delete my spot by clicking a Delete button associated with the spot.
    • When I'm on the /spots/:spotId, /hosting/spots pages:
      • I can click "Delete" to permanently delete a spot I have created.

Bookings

Create a booking

  • As a logged in user, I want to be able to book a spot.
    • When I'm on the /spots/:spotId page:
      • I can create a new booking with specific dates.
        • So that I can stay at the designated spot.

Viewing a booking

  • As a logged in user, I want to be able to view a selection of the bookings I have made.

    • When I'm on the /user/bookings page:
      • I can view all the spots I have booked.
        • So that I can read and interact with my bookings.
  • As a logged in user, I want to be able to view a specific booking and its associated data.

    • When I'm on the /users/bookings/:bookingId page:
      • I can view the content of a booking, as well as the associated dates.
        • So that I can read and interact with my booking.

Updating a Booking

  • As a logged in user, I can update a bookings dates.
    • When I'm on the /users/bookings/:bookingId page:
      • I can click "Edit" to make changes to the dates.
        • So that I can reschedule my booking.

Deleting a Booking

  • As a logged in user, I want to be able to delete my booking by clicking a Delete button associated with the booking.
    • When I'm on the /users/bookings/:bookingId pages:
      • I can click "Delete" to permanently delete a booking l I have created.