Platform for monitoring and trading on cryptocurrency exchanges
Our customer? A team of traders on cryptocurrency exchanges, needing streams of real-time information on markets, making lightning decisions. So: they are well aware of the advantages/disadvantages of each exchange, deal with various monitoring tools, know how to weigh risks, and so on. And what does their ordinary workday look like? 20 windows open simultaneously on their huge monitors, between which they rush constantly in search of that necessary graph or choice of wallet to sell of a couple of bitcoins. An unenviable pace! Our task was to develop a platform allowing a trader to work with just one webpage, to make decisions based on significant market indicators and, most importantly, be able to buy or sell cryptocurrency on several exchanges all at once.
One of the most important stages of this project was the development of UI/UX. Our customer listed all the necessary tools for market state analysis: a currency pair chart, Market Depth, and visual Market Depth, as well as viewing the history of orders on the exchange. The second important part of the interface was the management of user wallets on all exchanges and cryptocurrency purchases/sales. We had to place all these elements on one page without scrolling so that the trader could very quickly select a wallet, immediately enter the amount in the sale window and click the ‘sell’ button. The system helps the user to eliminate possible errors by alerts and prompts.
The second important point for us was security, of course: we are talking about money here. We made logging through 2-factor authentication. Also, during development, we focused on the following principles:
- HTTPS connection with a high-quality SSL certificate
- Validation and character-escaping of all data from the browser
- Differentiation of access levels
- Lack of unencrypted passwords and keys transfer
- Intensive logging of all calls to the server with all data, which allows tracking of all operations
- Extensive QA by OWASP Testing Guide
We would also like to emphasise the demo mode that we implemented on this platform. Trading cryptocurrencies is not easy. You have hundreds of exchanges, tons of different currencies, multiple wallets. It’s easy to get lost in this crypto world. You must track your investment portfolio, you must be quick while making orders, you must be accurate in calculating your profit. That is why we allowed the user to use fake wallets while completely simulating market behaviour. That is, a trader can learn to buy, sell, analyze for quite a while, without risk.
As a result, we have a product that cannot be overestimated. This tool allows the trader to make and cancel orders on different exchanges simultaneously, to assign wallets to another trader, to control assets. On one page, there is a whole set of tools, quotations and charts in real-time that allow forecasting and market monitoring. It significantly speeds up the work processes of our customer, as he receives a single tool for the entire volume of tasks he usually performs over the working day.
- The platform guarantees complete asset management security
- The demo mode allows attraction of newcomers to work without real money risk
- The platform is scalable: it’s possible to integrate any new exchange when necessary
- We have carefully worked on the performance of the platform: all graphs and tables are updated instantly after changing a currency pair. The trader does not lose precious time
- In a word, this platform is a real Swiss Knife in the crypto world 🙂
Technically this project was quite complicated. It has several main parts:
- Comprehensive frontend with all the security and trading features made on Angular 8
- Java backend which connects to various stock exchanges and acts as an engine
- CI/CD fully built on top of Bitbucket and AWS platform
The frontend part was intended to be constantly evolving, adopting new features, so we decided to go with TypeScript and Angular. For us, only type checking can avoid a lot of bugs that can be easily produced on the frontend side. Also we had to implement a few bits and pieces like ‘Depth of Market’ or ‘Last trades’ and, of course, first we searched that on the market. As you can imagine there were few who asked for such big money for such a simple functionality, so we did that on our own.
The core thing on every trading platform is a Main chart with all currencies, with comprehensive search, zooming capabilities, etc. And fortunately we found a TradingView and integrated their great plugin into our app (https://www.tradingview.com/).
Backend was built on Java 8/Spring Boot and deployed on AWS Elastic Beanstalk, as database we used Postgresql deployed as AWS RDS. Backend was responsible for connecting to exchanges.
CI/CD was built using Bitbucket pipelines and AWS Elastic Beanstalk. So every commit to the repository was triggering Maven build, running integration tests and packaging the bundle, uploading it to S3 and then triggering redeployment on AWS Elastic Beanstalk. Using this scheme, each change takes no more than five minutes to appear on production.