Build a mobile application for finance and technology company
The client is a Hong Kong company that is well-experienced in finance and technology.
They focus on revolutionizing the personal lifecycle of the average mass-market user and help re-balance the global scales of and normalize Financial Analysis & Investment Management Wealth Income Inequality. Furthermore, the client also aims to generate, disseminate, preserve knowledge and augment the collective human intellect through curiosity and challenge provided by the synergy of state-of-the-art technologies.
They are oriented to building and growing their company to become the first Metaverse Giant for Gamification and Social Media Networking in the Virtual World of Investing.
The client wanted to build a mobile application to keep track of investments and approach most potential stock assets with main requirements, including:
- Build mobile applications for both iOS and Android devices.
- Migrate your server from on-premises to AWS Server to ensure scalability and cost savings.
- Have unique charts containing historical data from Yahoo to help users have a deep insight into that stock and make decisions more quickly. Still, current libraries don’t support this feature.
The project’s requirements presented our team with several challenges to overcome:
Big data problem
- DB needs to store about 120000 assets. Each asset has about 2610 records, so the historical data table has about 313200000 records.
- The number of assets will increase in the future, so that table will scale up significantly.
- We need to update the historical data of each asset, which is almost real-time. Therefore, the server must have many I/O to read and write into hard disks.
Use the Yahoo Screener API to get the asset list
- Yahoo checks cookies for each request.
- Yahoo responds to only 200 assets per 1 request.
- The Yahoo Screener API has a 10,000 asset limit.
Import 10 years of historical data
- Yahoo blocks our server if we send requests too fast.
- Historical data is extensive.
Update asset quotes and historical asset data
- We need to update every 5 and 15 minutes
- Execute update query to our database
Crawl asset logo
- Trading View does not have an API to get the asset’s logo
- Tickers from Trading View and Yahoo are different
TECHVIFY’s size team included 14 members, including a PM, a Business Analyst, 4 mobile developers, 2 backend developers, and 2 Testers, with the duration of the project being 8 months.
Tools used throughout the project:
- React Native (Cross-platform)
- Use Amazon AWS Aurora Server in a production environment to store all databases. It also configures a backup plan, auto-scalable.
- Amazon EC2 for backend server (backend built by PHP Laravel)
- Yahoo Screener API to get the asset list
- Customized charts based on Figma and requirements
The technical solutions that we implemented effectively:
Use AWS Aurora because it is auto-scalable and able to guarantee server performance.
Yahoo Screener API
- Request the Yahoo homepage to get the cookie and then append that cookie to every request
- Use the paginated API to get the full asset list.
- If the region has an asset count greater than 10,000, apply a sector filter to this API to bring the total lower than 10,000.
Import historical data
- Delay the request to the Yahoo server
- Chunk the data too small before inserting it into the database
- Separate asset list to priority and normal list
- Run job updates every 5 minutes for the priority list and every 15 minutes for the normal list.
Get all tickers from the Trading View, and check if they have logos. Then they will look back to our database and store it on our server. Apply some logic to match tickers between Trading View and Yahoo
Well prepared for every release brought us confidence for any case that could happen:
- Release and process guidelines (for team and developer).
- Person in charge of each release when it happens in parallel
- Set up automation testing for regression and manual testing for the detailed cases to find out most bugs before release.
The client was able to shorten the project’s development time and lessen project costs with the help of the rich experienced team at TECHVIFY. By utilizing cutting-edge technologies, future maintenance expenses are cut off.
The end product ensured it was equipped required features, including:
- Authentication: sign up/sign in with Emails and Facebook, delete accounts, and forget passwords.
- Most popular assets: view 20 most popular assets.
- Discovera: filter assets with different criteria.
- Asset Detail: view market information, market chart, and news of assets. Users can add asset transactions to My Portfolios.
- My Library: view portfolio detail information, reorder the list of saved portfolios, delete portfolios from saved portfolios, and saved/unsaved news.
- Portfolio Management: view performance and portfolio holdings. Users can also add assets to My Portfolio and see asset performance in a doughnut chart.
- Google Admob: view Google Admob advertisement
- Admin Panel: view, filter by date, and export Userbase Profiles
Users particularly praise the apps’ smooth performance and feel.
Technologies and Tools
- Cloud servers & Databases: Database MySQL, Yahoo! Finance
- Core application: Laravel, PHP, Nginx, Ubuntu
- API - Gateway
- Dashboard Management & Administration
- React Native, Android - Java, iOS - Objective C
- AWS Well-architected