Trading System
Go through success, loading, all expected/unexpected error states, empty states, multiple page stages for each component
- Links to each major page
- Use React Router
- Using Passport or provider like Auth0 or Okta (recommended because it takes care of a lot of security, logging, etc)
- OAuth?
- Twilio for 2FA?
- Signup flow
- Discuss with marketing and PM
- FB Ads/Google Ads tracking for conversions
- Able to see the stocks page before signup? Any other pages? What are protected pages?
- Limited dashboard view?
- Clicking "Buy" starts the signup process
- What does copy/screen look like? Same as regular flow?
- What is the expected conversion funnel?
- What is strategy for testing use segments for conversions
- Profile Creation
- risk tolerance, favorite stocks, etc
- How does this affect features shown to the user?
- Feature Flagging
- Add Bank Account
- Fund Bank Account
- Close Account
- Needs Flow for retention
- Account Stats
- Statements (links to pdfs)
- Logout
- Available on initial sign up and afterwards from Settings page
- Using Plaid?
- KYC? Uploading Docs?
- Multiple Accounts?
- Verification? Deposits? Emails that it's verified?
- Custodial Account - something like Unit?
- Display Clearing Time
- Amount of Cash in Account Now, Cash Pending
- Choose Account Source (for multiple accounts)
- Allow adding cash amount
- Validation (Min, Max?)
- Current Transfers? Multiple Transfers ok?
- Check if $ in account
- Display when deposit will clear
- Send email when deposit clears
- Withdraw Funds
- pick bank account
- Validation (too much)
- Display pending withdrawals and estimated time
- Email when complete
- Error if it fails
- Not enough $?
- Other
- Handling bouncing back of funds after clearing?
- Selling stock, etc, talk to legall
- Portfolio Over Time Graph - HighCharts
- Filter 1D, 1W, 3M, 6M, 1Y, ALL
- Portfolio Total Worth
- Account Cash Available To Buy
- Your Stocks
- List
- Shares Owned
- Current Stock Price
- Current Position $
- Up/Down over last day
- Sort By Up/Down in last day, amount
- Click on stock goes to stock page
- Basic Line Chart over last 1m
- Favorite/Watched Stocks (didn't buy yet)
- Same metrics (- owned)
- Stock Search
- Autocomplete with AJAX call
- Click on stock goes to stock page
- Stocks By Category
- List of Categories
- Click in, lists top stocks
- Graph over last year
- Candlestick vs Line
- How much of the stock you own
- Stats on stock (highs and lows)
- Company history and blurbs
- News feed
- Follow stock
- Buy stock
- Buy/sell history
- Recommended related stocks
- Operations
- Buy: text for how many shares, auto update cash needed, validate that it's not too much
- Sell
- Limit
- Schedule a future purchase
- Account for pending transactions
- Confirmation Email
- AJAX Search
- Works like the one in portfolio, probably using same(ish) component
- Filters like category
See history of transactions
- Explanations of trading
- Ancillary pages
- Help and contact
- Legal pages
- Landing Pages? Home Page?
- auth: Describes the authorization object, follows Passport or Auth0 standards
- bank: Describes user's bank account, such as routing, balance, and status information
- stock: Describes a stock, including current price,
- portfolio: Describes
- stocks: in the user's portfolio (stock object)
- ownershipDetails: additional info on stock related to user (average bought price, total value
- portfolioStats: describes the portfolio as a whole (stock value, cash value)
- portfolioHistory: lists the ups and downs of a portfolio over time
- transactions: Lists transactions a user made
- doTransaction: allows to perform buy/sell etc txn
- profile: user details and administrations
- 200: OK, JSON Response
- 500: Server Error (retry 3x automatically, then fail)
- 404: Resource not found
- 403: Unauthorized (redirect to Auth Screen)
- 400: Known error message (display via Toast)
- Pagination
- Results Pointer
- With offset, if new items are added, it will miss results
- Query Params
- Arrays Serialization
- Wrapping 1st level objects
- Retry Mechanism
- Request Tracing (Datadog)
Standard Passport Authentication returning JWT
GET
- []
- uuid
- bankName: Chase
- bankRouting: 0000009
- bankAccountLast4: 0323
- status: CONNECTED | AWAITING_VERIFICATION | INVALID | FROZEN
- bankBalance: 32000
POST (follow Plaid's Docs)
DELETE
Query Params:
- uuid
Res:
- 200: Deleted
Describes a stock, including current price,
GET
Query Parms
- searchString
- category: Tech | Education | ...
- Page
Response
- uuid
- tickerSymbol
- stockName
- stockPrice
- metadata
- companyDescription
- stats
- lastYearsProfits
Used for displaying the user's stock portfolio and basic details
GET
- cashBalance: 10000
- buyingPower: 20000
- currentStockValue: 20000
- ownedStocks[]:
- uuid
- stock
- uuid
- tickerSymbol
- stockName
- stockPrice
- metadata
- companyDescription
- stats
- lastYearsProfits
- ownershipDetails
- amountShares
- currentValue
- []
- date: 2021-06-07 10:00
- value: 19000
GET
- []
- triggerDate
- settlementDate
- type: STOCK | ACH
- subType: BUY | SELL | LIMIT WITHDRAWAL | DEPOSIT | BOUNCEBANK
- status: pending | settled | failed
- triggeredBy: USER | SYSTEM (margin call)
- stockDetails
- dollarAmount
- stockAmount
- stockPrice
- transactionRules
- type: LIMIT | BUY
- limitPrice: 300
-
Last modified 11mo ago