This article is a case study in systems design. The premise of the project is fictitious, but the concepts demonstrate how you might design a system like Robinhood or Fidelity.
This particular case study is presented from a Full Stack perspective and dives into details of both the back end and front end.
Product Requirements
Background
- We need to design a mobile-friendly trading app that allows a user to buy and sell an asset.
- We are making use of an exchange API, so the technical complexities of creating and executing an order book are not covered in this design.
User Stories
- As a user, I want to be able to log into a demo account to access the MVP.
- As a user, I want to be able to view a list of the top stocks by market cap.
- As a user, I want to be able to see a list of the assets I own.
- As a user, I want to be able to select an asset and view the real-time price.
- As a user, I want to be able to place a limit or market order to buy the asset.
- As a user, I want to be able to place a limit or market order to sell the asset (if I already own it, short-selling is not supported yet).
Non-Functional Requirements
- All major modern browsers should be supported, except for internet explorer.
- The first release will be an MVP, so we do not need to worry too much about scalability yet, although we should make sure that we can support the scale in the future.
- The MVP should be installable on a mobile phone.
- Latency is important, we do not want a user to be surprised by sudden price swings and should make our best effort to secure the lowest price.
- Prices should be updated in real-time so that a user can make a decision based on confidence in the current market price.
User Interaction Considerations