User Stories - OndreWilliams/TownSquare 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 login form.
        • So that I can seamlessly access the site's functionality and redirect me to my home ('/') route
    • 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 the homepage to login once again.
        • So that I can easily log out to keep my information secure.

Questions

Posting New Questions

  • As a logged in user, I want to be able to post new questions.
    • When I'm on the /new-question page:
      • I can write and submit a new question.
        • So that I can ask whatever my heart pleases to the TownSquare community.

Viewing Most Recent Questions

  • As a logged in, I want to be able to view a selection of the most recent questions.

    • When I'm on the / page:
      • I can view the most recently posted questions.
        • So that I can read and interact with the thoughts of the community.
      • I can see the questions according to their published date with the latest ones being shown first
        • I would have a more robust experience in this format.
  • As a logged in user, I want to be able to view specific questions and their associated answers and upvotes and downvotes.

    • When I'm on the /question/:id page:
      • I can view the content of the question.
        • So that I can read and interact with the thoughts and questions of my community, and add my own thoughts to a thread.

Updating Questions

  • As a logged in user, I want to be able to edit my questions by clicking an Edit button associated with the question anywhere that the question appears.
    • When I'm on the /, /question/:id, or /users/:id/questions pages:
    • I can click "Edit" to make permanent changes to the questions I have posted.
      • So that I can fix any errors or mistakes I made in my questions.

Deleting Questions

  • As a logged in user, I want to be able to delete my questions by clicking a Delete button associated with the question anywhere that the question appears.
    • When I'm on the /, /question/:id, or /users/:id/questions pages:
    • I can click "Delete" to permanently delete a question I have posted.
      • So that when I realize I shouldn't have publicly asked something, I can easily remove it.

Searching

  • As a logged in user, I want to be able to search for questions.
    • I am able to clearly see where I must input the information necessary for the search.
      • When I enter the question I want to see, if it already exists in the database, I will be redirected to /question/:id if there is a match.

Answers

Posting New Answers

  • As a logged in user, I want to be able to post new questions.
    • When I'm on the /new-answer page:
      • I can write and submit a new answer.
        • So that I can respond to whatever question I feel like answering for the TownSquare community.

Viewing Most Recent Answers

  • As a logged in user, I want to be able to view a selection of the most recent answers on a question.

    • When I'm on the / page:
      • I can view the most recently posted answers on a question thread.
        • So that I can read and interact with the thoughts of the community.
      • I can see the answers according to their published date with the latest ones being shown first
        • I would have a more robust experience in this format.
  • As a logged in user, I want to be able to view specific answers with their associated questions

    • When I'm on the /question/:id page:
      • I can view the content of the answer in accordance with that specific question.
        • So that I can read and interact with the thoughts and questions of my community, and add my own thoughts to a thread.

Updating Answers

  • As a logged in user, I want to be able to edit my answers by clicking an Edit button associated with the answer anywhere that the answer appears.
    • When I'm on the /, /answer/:id, or /users/:id/answers pages:
    • I can click "Edit" to make permanent changes to the answers I have posted.
      • So that I can fix any errors or mistakes I made in my answers.

Deleting Answers

  • As a logged in user, I want to be able to delete my answers by clicking a Delete button associated with the answer anywhere that the answer appears.
    • When I'm on the /, /answer/:id, or /users/:id/answers pages:
    • I can click "Delete" to permanently delete an answer I have posted.
      • So that when I realize I shouldn't have publicly answered something, I can easily remove it.

Upvoting/Downvoting Answers

  • As a logged in user, I want to be able to upvote or downvote an answer, depending on if I agree with it or not.
    • I will see a tally on each answer, showing the number of upvotes or downvotes a specific answer has.
      • I can gauge the popularity or level of acceptance that people in the community feel about someone's answer, which is helpful if I want to go to a restaurant or activity based on popularity.