User Stories - RyanGC93/Worldly GitHub Wiki

User Stories

User

Register

As an unauthorized user, I want to be able to create an account, so that I can use the application's services.

Questions

  • Will the user enter a username and an email to signup?
    • Both a username and email will be required
  • Will we confirm their password during signup?
    • Yes
  • What routes should we use for signup?
    • None, the signup form will be a modal that pops up when called upon
  • Where should the user be redirected after signup?
    • The user will be redirected to the main page
  • What happens if the user with the username or email already exists?
    • The form will render the error upon submission.
  • What happens if the user enters the wrong password confirmation?
    • The form will render the error upon submission.

Acceptance Criteria

  1. Given that I'm a user who has not signed up yet and

    • When I first want to Register
      • I will see a form within the initial splash page with an email/username and password field with a "Log In" button to submit the form.
  2. Given that I'm a user trying to make an account,

    • When I try to fill out the form with an email or username that * already exists with a valid password and press Enter or press the "Register" button
      • At the top of the form, I will see a message that says, "User with that username already exists or User with that email already exists."
  3. Given that I'm a user trying to make an account,

    • When I try to fill out the form with a valid email, username, and * password and press Enter or press the "Register" button,

      • I'll be redirected to the Homepage at "/"
  4. Given that I'm a user that just signed up

    • When I refresh the homepage at the / route
      • I'll be logged in

Login

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

Questions

  • Will the user use a username or email address to log in?
    • User can use either their username or email address to log in.
  • What routes should we use for log in?
    • User will log in via the log in modal that will pop up when called upon.
  • Where should the user be redirected after login?
    • User will be redirected to / route home page.
  • Will we allow OAuth authentication via a third party?
    • Nope.
  • What happens if the user doesn't exist yet or the user enters a field with the wrong credentials?
    • Display the message Invalid Login with the wrong credentials.
  • Will the user be able to reset their password?
    • Maybe.
  • Should logging in use session-based or token-based authentication?
    • Token-based authentication.

Acceptance Criteria

  1. Given that I'm a logged-out user:

    • When I access the Splash page

      • There will be a login form with a "Username or Email" field, a password field, and a "Login" button to submit the form.
    • When I try to fill out the form with an invalid email/username and * password combination and press Enter or press the "Login" button

      • Then at the top of the form, I will see the message: Invalid Login.
    • When I try to fill out the form with a valid username/email and * password combination and press Enter or press the "Login" button

      • Then I will be redirected to the '/' route homepage
  2. Given that I'm a logged in user

    • When I refresh the homepage at the / route
      • Then I will be logged in

Logout

As an authorized user, I want to be able to log out of my account, so that I can hide my account information from others using a public device.

Questions

  • What happens when the user logs out?
    • User will be redirected to the splash page.
  • How will the user log out?
    • User will click the Log out button in the User menu that is accessible from the profile picture circle button on the NavBar.

Acceptance Criteria

  1. Given that I'm a logged-in user and

    • When I'm on any route

      • Then I should be able to access the home, direct messages, explorer feed, likes, profile buttons in the NavBar and log off whenever.
    • When I click the Log out button

      • Then I will be redirected back to the splash page to login or create a new account.

Demo User

As a prospective user who wants to demo the functionality of Worldly, I want access as a demo user by a single click on the splash page.

Questions

  • Will the user enter a username or an email address to login?
    • User will can login via the "Demo User Login" button if they want.
  • What routes should should we use for login?
    • User will log in via splash page login forms.
  • Where should the user be redirected after login?
    • User will be redirected to /.

Acceptance Criteria

  1. Given that I am a logged-out user
    • When I'm on the splash page
      • There will be a button that will let me login as a demo user
  2. Given that I am logged in as the demo user
    • When I refresh any page
      • Then I should be logged in as the demo user

Questions

  • What route will show a bowsing overview of events to book
    • /
  • What route will show all past/future events I booked
    • /profile/

Acceptance Criteria

  1. Given that I am a logged in user

    • What I will see on all routes

      • i will see a nav bar that has a logo that redirect to the '/' route, a search bar that directs to '/event/"id"' upon a successful search, and navlinks to different routes
    • When I'm on the '/' route

      • Then I will see different categories of events displayed in a carousel with cards that I can choose from. Upon selection I will be redirected to '/category/'
    • When I'm on the '/category' route I will be able to see cards of the different events matching that category sorted by closest to the current date

      • In each card I will be able to see the event title, the description, photo for the event, total review count and the number of reviews
      • when i click the event I will be redirected to the '/event/' route

Events

As a logged in user, I want to be book an event and have it be added to my 'itenary; for my profile

Questions

On what route will I be able to book an event?

  • On the '/event/' route

Acceptance Criteria

  1. Given that I am a logged in user

    • When I navigate to /event/id to book an event

      • I'll see a three dot on the top right to be able to book.
    • When I successfully book an event

      • Then I will be redirected to the 'event/id' but a confirmation will be available .

Delete a bookin

As a logged in user, I want to be able to unbook an event as long as it is 48hrs before the event.

Questions

  • How will a user unbook one of their events?
    • On the user profile there will be upcoming events and on the top right there will be option to unbook
  • Where will the app redirect to when a post is deleted successfully?
    • The app will redirect to the back to the profile page and the event unbook shouldn't be displayed
  • What is the criteria of being unable to unbook an event
    • the event has to be more than 48 hrs away

Acceptance Criteria

  1. Given that I am a logged in user and and I want to unbook an event

    • When I navigate to my profile

      • Then I will see all upcoming booked event with the option to delete them if it is more than 48hrs before the event
    • When I click on the delete button on the post

      • Then I will get rerouted my profile page with a message notifying me that the event was unbooked.

Changing a booking

As a logged in user, I want to be able to change the booking.

Questions

  • How will a user change therir booking?
    • On the user profile there will be upcoming events and on the top right there will be option to unbook as well as an option to change the booking
    • Upon click a modal will apear listing date that the event can be booked for
  • Where will the app redirect when the booking is changed ?
    • The user will remain on profile page,but the upcoming events shouuld be updated to reflect the changes in booking
  • What is the restrictions of changing a booking
    • The event ahs

Acceptance Criteria

  1. Given that I am a logged in user

    • When I navigate to my profile page

      • Then I will see the option to edit it on the events card.
    • When I click on the edit button on the post

      • Then I will see a calendar and able to change the date as long as it is 48hrs before the event and the changed date is at least 48hrs away .
    • When I submit the change in the event

      • i will see a confirmation dialog appear and then i will be redireccted to the profile page where my upcoming events will be updated to reflect the change in the event booking

Create a Event Review

As a logged in user whom attended an event, I want to be able to leave a review on the event

Questions

  • How will a logged in user make a review for the event?
    • On the profile page in past events, there will be an option to leave a review for an attended event.
  • What is the constraints of leaving a review
    • The event must have must be in the past

Acceptance Criteria

  1. Given that I am a logged in user

    • When I navigate to a user profile

      • On the card for the past events there will be an option to leave a review
    • When I click the "leave a review" button an event card, a modal will appear

      • A star review system will appear and I will be able to leave a review based out of how many stars
      • Then I will see an input field that lets me type out my comment and submit.
    • When I submit my review

      • Then I will see my review on that post

See all reviews for an Event

*As a logged in user, I want to be able to see all the reviews on an event, so I can see how other people enjoyed the event.

Questions

  • Where will all the reviews be shown for a event?
    • On that event card
    • The reviews will be displayed as an average of all reviews of the event

Acceptance Criteria

  1. Given that I am a logged in user
    • When I navigate to a event detail page
    • Then I will be able to see all comments made on a events.
    • I will be able to see an average of all the reviews on the event

Embassador Story

Register

As an unauthorized embassador, I want to be able to create an account, so that I can create events that embassadors can attend

Questions

  • Will the embassador enter a embassadorname and an email to signup?
    • Both a embassadorname and email will be required
  • Will we confirm their password during signup?
    • Yes
  • What routes should we use for signup?
    • None, the signup form will be a modal that pops up when called upon
  • Where should the embassador be redirected after signup?
    • The embassador will be redirected to the main page
  • What happens if the embassador with the embassadorname or email already exists?
    • The form will render the error upon submission.
  • What happens if the embassador enters the wrong password confirmation?
    • The form will render the error upon submission.

Acceptance Criteria

  1. Given that I'm a embassador who has not signed up yet and

    • When I first want to Register
      • I will see a form within the initial splash page with an email/embassadorname and password field with a "Log In" button to submit the form.
  2. Given that I'm a embassador trying to make an account,

    • When I try to fill out the form with an email or embassadorname that * already exists with a valid password and press Enter or press the "Register" button
      • At the top of the form, I will see a message that says, "embassador with that embassadorname already exists or embassador with that email already exists."
  3. Given that I'm a embassador trying to make an account,

    • When I try to fill out the form with a valid email, embassadorname, and * password and press Enter or press the "Register" button,

      • I'll be redirected to the Homepage at "/"
  4. Given that I'm a embassador that just signed up

    • When I refresh the homepage at the / route
      • I'll be logged in

Login

As an unauthorized embassador, I want to be able to login to the website via a form, so that I can access my private information.

Questions

  • Will the embassador use a embassadorname or email address to log in?
    • embassador can use either their embassadorname or email address to log in.
  • What routes should we use for log in?
    • embassador will log in via the log in modal that will pop up when called upon.
  • Where should the embassador be redirected after login?
    • embassador will be redirected to / route home page.
  • Will we allow OAuth authentication via a third party?
    • Nope.
  • What happens if the embassador doesn't exist yet or the embassador enters a field with the wrong credentials?
    • Display the message Invalid Login with the wrong credentials.
  • Will the embassador be able to reset their password?
    • Maybe.
  • Should logging in use session-based or token-based authentication?
    • Token-based authentication.

Acceptance Criteria

  1. Given that I'm a logged-out embassador:

    • When I access the Splash page

      • There will be a login form with a "embassadorname or Email" field, a password field, and a "Login" button to submit the form.
    • When I try to fill out the form with an invalid email/embassadorname and * password combination and press Enter or press the "Login" button

      • Then at the top of the form, I will see the message: Invalid Login.
    • When I try to fill out the form with a valid embassadorname/email and * password combination and press Enter or press the "Login" button

      • Then I will be redirected to the '/' route homepage
  2. Given that I'm a logged in embassador

    • When I refresh the homepage at the / route
      • Then I will be logged in

Logout

As an authorized embassador, I want to be able to log out of my account, so that I can hide my account information from others using a public device.

Questions

  • What happens when the embassador logs out?
    • embassador will be redirected to the splash page.
  • How will the embassador log out?
    • embassador will click the Log out button in the embassador menu that is accessible from the profile picture circle button on the NavBar.

Acceptance Criteria

  1. Given that I'm a logged-in embassador and

    • When I'm on any route

      • Then I should be able to access the home, direct messages, explorer feed, likes, profile buttons in the NavBar and log off whenever.
    • When I click the Log out button

      • Then I will be redirected back to the splash page to login or create a new account.

Demo embassador

As a prospective embassador who wants to demo the functionality of Instantaneous Gramme, I want access as a demo embassador by a single click on the splash page.

Questions

  • Will the embassador enter a embassadorname or an email address to login?
    • embassador will can login via the "Demo embassador Login" button if they want.
  • What routes should should we use for login?
    • embassador will log in via splash page login forms.
  • Where should the embassador be redirected after login?
    • embassador will be redirected to /.

Acceptance Criteria

  1. Given that I am a logged-out embassador
    • When I'm on the splash page
      • There will be a button that will let me login as a demo embassador
  2. Given that I am logged in as the demo embassador
    • When I refresh any page
      • Then I should be logged in as the demo embassador

Questions

  • What route will show a bowsing overview of events to book
    • /
  • What route will show all past/future events I booked
    • /profile/

Acceptance Criteria

  1. Given that I am a logged in embassador

    • What I will see on all routes

      • i will see a nav bar that has a logo that redirect to the '/' route, a search bar that directs to '/event/"id"' upon a successful search, and navlinks to different routes
    • When I'm on the '/' route

      • Then I will see different categories of events displayed in a carousel with cards that I can choose from. Upon selection I will be redirected to '/category/'
    • When I'm on the '/category' route I will be able to see cards of the different events matching that category sorted by closest to the current date

      • In each card I will be able to see the event title, the description, photo for the event, total review count and the number of reviews
      • when i click the event I will be redirected to the '/event/' route

Create an event

As a logged in embassador, I want to be create an event and have it be added to owned events for my events

Questions

On what route will I be able to create an event?

  • On the '/create>' route

Acceptance Criteria

  1. Given that I am a logged in embassador

    • When I navigate to /create to book an event

      • I'll will see a multiform with required input fields to have to create
    • When I successfully create an event

      • Then I will be redirected to the 'event/id' but a confirmation will be available .

Delete a bookin

As a logged in embassador, I want to be able to delete an event as long as it is there is no future attendies.

Questions

  • How will a embassador delete one of their events?
    • On the embassador profile there will be owned events and on the top right there will be option to delete that even
  • Where will the app redirect to when a event is deleted successfully?
    • The app will redirect to the back to the profile page and the event deleted shouldn't be displayed
  • What is the criteria of being unable to delete an event
    • the event has no future attendies

Acceptance Criteria

  1. Given that I am a logged in embassador and and I want to delete an event

    • When I navigate to my profile

      • Then I will see all owned event with the option to delete them if there are no future attendies for the event
    • When I click on the delete button on the event

      • Then I will get rerouted my profile page with a message notifying me that the event was delete.

Changing a booking

As a logged in embassador, I want to be able to change the booking.

Questions

  • How will a embassador change their event?
    • On the embassador profile there will be owned events and on the top right there will be option to change the booking
    • Upon click a modal will appear and the forms can be changed
  • Where will the app redirect when the booking is changed ?
    • The embassador will remain on profile page,but the owned events shouuld be updated to reflect the changes in booking
  • What is the restrictions of changing a booking
    • There is none however it may reflect in your rating

Acceptance Criteria

  1. Given that I am a logged in embassador

    • When I navigate to my profile page

      • Then I will see the option to edit it on the events card.
    • When I click on the edit button on the post

      • a modal will appear and in the forms you can change the event
    • When I submit the change in the event

      • i will see a confirmation dialog appear and then i will be redireccted to the profile page where my upcoming events will be updated to reflect the change in the event booking
⚠️ **GitHub.com Fallback** ⚠️