User Stories - ChrisPHong/Sea GitHub Wiki

User Stories

Sign Up / Registration

  • 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 /users/register page:
    • I would like to be able to enter my first name, last name, email, 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
    • After completion of the sign-up form, a portfolio will be created and associated with my account. Then I would like to be redirected to the portfolio page to start adding stocks
  • 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 /users/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
      • After completion of the log in form I would like to be redirected to the portfolio page.
    • 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 recent Stories.
        • So that I can easily log out to keep my information secure.

Create Portfolio

  • When I create an account, a new portfolio will be made for me.
    • I will be able to add stocks to the new portfolio.

Viewing Dashboard + Portfolio

  • As a logged in user, I want to be able to view the portfolio that I have created.
    • When I'm on the / page:
      • I can view the content of the portfolio as well as the associated stocks.
      • So that I can view which stocks are helping my portfolio.
      • I can also view recent news and watchlists on my dashboard.

Updating Portfolio

  • As a logged in user, I want to be able to edit my portfolio by clicking an Edit button associated with the portfolio anywhere that portfolio appears.
    • When I'm on the home page:
      • When I click the "Edit" button a modal confirmation will be shown
      • I can click "Confirm Edit" to make permanent changes to portfolio I have posted.
        • So that I can add or remove stocks associated with that portfolio and change the name.

Viewing Stocks

  • As a logged in user, I want to be able to view stocks that I can buy.
    • When I'm on the /stocks page:
      • I can view all available stocks.
      • I can see how well each stock is doing.
      • I want to be able to view a specific stocks and its associated details.
    • When I'm on the /stocks/:id page:
      • I can view the details of the stock.
      • So that I can make a decision add the stock to a portfolio.
      • I can also buy or sell stocks from stocks details page.

Create Watchlist

  • As a logged in user, I want to be able to create a watchlist.
    • When I'm on the /watchlists/new page:
      • I can create and submit a new watchlist.

Viewing Watchlist

  • As a logged in user, I want to be able to view watchlists that I have created.
    • When I'm on the /watchlists page:
      • I can view all my watchlists.
      • I want to be able to view a specific watchlist and its associated stocks.
    • When I'm on the /watchlists/:id page:
      • I can view the stocks of the watchlist.
      • So that I can see any changes in specific stocks faster.

Updating Watchlist

  • As a logged in user, I want to be able to edit my watchlists by clicking an Edit button associated with the watchlist anywhere that watchlist appears.
    • When I'm on the /watchlists or /watchlists/:id pages:
      • When I click the "Edit" button a modal confirmation will be shown
      • I can click "Confirm Edit" to make permanent changes to watchlists I have made.
        • So that I can add or remove stocks associated with that specific watchlist.

Deleting Watchlist

  • As a logged in user, I want to be able to delete my watchlists by clicking an Delete button associated with the watchlist anywhere that watchlist appears.
    • When I'm on the /watchlists or /watchlists/:id pages:
      • When I click the "Delete" button a modal confirmation will be shown
      • I can click "Confirm Delete" to permanently delete a watchlist I have posted.
        • So that when I realize there's nothing important to follow in that watchlist, I can delete it.

Viewing search

  • As a logged in user, I want to be able to search for available stocks.
    • When I'm on the /search page:
      • I can view the results from the search bar input.
      • I want to be able to view a specific stock and its details after clicking a result.

Create Transaction

  • As a logged in user, I want to be able to create a transaction.
    • When I buy or sell a stock:
      • A transaction will be created.

Viewing Transaction

  • As a logged in user, I want to be able to view transactions that I have made.
    • When I'm on the /transactions page:
      • I can view all my transactions.
      • I want to be able to view a specific transaction and its details.
    • When I'm on the /transactions/:id page:
      • I can view the price, type, and date of the transaction.
      • So that I can see a specific transaction.