Develop an app that will simulate a `real-time` stock market. You may use [Yahoo](https://algotrading101.com/learn/yahoo-finance-api-guide/#:~:text=Why%20should%20I%20use%20the%20Yahoo%20Finance%20API%3F,-Free&text=One%20good%20reason%20is%20because%20it%20can%20be%20completely%20free.) API for data retrieval.
Upon signing up, users will be given `1,000,000` fake dollars to use within the app for buying and holding stocks. The app should have the following features:
- A page displaying historical data for the chosen stock
You should fetch all data in real-time and choose 20 stocks to monitor. The objectives of this exercise are to practice fetching data in real-time, visualizing custom widgets in real-time, and implementing authentication and authorization services.
To complete this exercise, you will need to do the following:
- Research the Yahoo API and determine how to use it to retrieve stock data.
- Implement the login/logout functionality and user account management.
- Allow users to buy and hold stocks within the app, using the fake dollars provided to them.
- Implement the ability to view historical charts of stock prices.
- Retrieve data for a particular stock for the last year or since the company went public.
- Update stock data in real-time, at least 5 times per second.
- Choose 20 stocks to monitor and display their data within the app.
- Use one of the specified patterns (BLoC, Provider, MVC) to manage state within the app.
- Implement the specified routes for the login/signup page, purchased stocks page, and historical data page.
- Test the app thoroughly to ensure that it is functioning correctly and all objectives have been met.
- Remember to follow best practices for coding and app development, and be sure to document your code and any decisions made during the development process. Good luck!