Fintech in Practice: How Quadcode Develops Technology for Trading and Banking
Tags: fintec, saas
Published: 2022-10-25 13:30:15

Hello, DEV community! I am Aleksandr Ivanov, CTO at Quadcode. We came here to show the fintech “kitchen”; we’ve been at it for 8 years, so we can already share our experience. In our blog we will talk about architectures, technologies, tools and management.

This post is the first on the list and can be considered an introduction. I will tell you about the structure of our team, about Quadcode products — a platform for trading, banking and our internal development tools, as well as about our first steps towards an IPO.

## Our Team

The Quadcode team has been working in fintech for eight years. The company’s goal is to create user-friendly tools for B2B clients from all over the world.

In development we are guided by Agile principles, and generally we are inclined to flexible methodologies. They allow us to achieve a balance in the speed and quality of product development, so development is a set of Agile trains.

A train is a set of agile teams that work on a specific business area of the company. We launch trains for long-term roadmaps, when we are sure that the implementation of tasks will lead to business development and growth of business metrics. The train includes all the specialists that are needed to implement projects and features in a particular product or infrastructure area, for example:

- Developers.
- QA engineers.
- Team leaders.
- Analysts.
- Product managers.
- Designers.
- Technical writers. 
- HR business partners. 

Now we have 260+ experienced specialists in the development department. We rarely take on juniors. But every year it becomes more and more difficult to find experienced professionals, so we are looking more and more in this direction.

A roadmap is built for each product and can be made for different time periods: six months, a year, three years, etc. From ready-made product roadmaps we build a general plan: when, what features and for what products should be made. A roadmap, as we understand it, is a link between business, product and development.

Every quarter there is an important event in the life of the company — quarterly planning. From the overall timeline, we highlight the features that we need to implement first. The result is a blueprint for what we can really do with current resources. We don’t welcome the emergency style, so we learn to catch the zen and find the optimal balance between work and personal life. Every employee can enter and view the company’s roadmap to properly plan and allocate their time to important and interesting tasks.

We work remotely or in the offices in Cyprus, The United Arab Emirates, Australia and The United Kingdom; everyone chooses for themselves.


![Quadcode office life](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i3flij8lwzdrrrvv496m.jpeg)

## Technological Stack

Our main languages are Golang and C++. Among аdditional technologies on the back end — PHP, Python, NodeJS; on the front end — JavaScript (ReactJS); in analytics — Python, Scala; and Java for autotests.

The infrastructure in the company is hybrid. We rent our own servers in data centers. We try to use all stateless applications in Kubernetes, if there are no restrictions for this, although this also happens. Kubernetes clusters also predominantly run on our servers. Things that require guaranteed resources, such as loaded databases, we operate on “hardware”. Of course, we also use the cloud where it is useful. For example, in tasks where you need to process a large amount of data to provide a report to the customer. For such tasks, you need to get resources for analysis temporarily, but you don’t need them after you get the result.

For pinpoint purposes, we apply technologies that allow us to solve specific problems. For example, our Desktop application for Windows, Mac and Web is written in C++ and has the same code base. In this case, C++ gives us cross-platform advantages and excellent graphics rendering performance. However, we hardly ever use C++ for back-end development because it is expensive. Our main language for the back end is Go. At the same time, we do not use it as a testing tool. For these purposes, we use Java, because it is much more convenient and is already practically an industry standard.

## Our Products 

Our flagship product is the trading platform. In seven years of development, the number of platform users has grown from 950,000 to 88 million in 150+ countries.

Since 2020, we have been developing the trading platform as a SaaS solution, on the basis of which anyone can organize their own broker. And we already have our first clients in this area. In addition, we plan to enter the American and Australian markets. To do this, we are updating the platform taking into account all the technical and legal requirements of these regions.

And now for a brief summary of our products.

### SaaS Trading Platform
The team has developed a platform with 99.5% uptime from scratch, on the basis of which the broker has been successfully functioning for more than 7 years.

The platform provides clients for Windows, MacOS, Android, iOS, as well as web trade room.

On the platform you can trade the following instruments:

- CFD.
- Forex.
- Digital options.
- FX options.
- CFDs on crypto.


![Fully operational trading platform: web trade room, Windows desktop app, MacOS desktop app, Android APK file, Google Play app, progressive web app](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ad0a7gdqw981d5of557.png)

The main programming language for platform development is Golang. The platform started with a monolithic architecture of the classical stack for its time: PHP + PostgreSQL + Redis + JS.

After 3 years of operation, we decided to switch to a microservice architecture, as the monolith was no longer flexible and could not provide the necessary development pace. With the migration to a microservice architecture, we also left PHP for Go, and we don’t regret it.

Go is an excellent language that provides good performance with a fairly low entry threshold. For the development of microservices it’s just the perfect candidate.

As I said before, since 2020 our platform has been developing as a SaaS solution. Based on the solution, anyone can organize their own broker without much effort; everything is in a box: trading service, KYC procedures, billing, support, CRM. In short, everything to get the business off to a quick start. Any new broker can be up in a month. To provide variability in functionality, we develop a flexible system of modules for the SaaS solution.


![SaaS as Pizza](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ersibren9g0i2mblxvya.png)


![What is SaaS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5e3t0bttalrbibuah2ef.png)

The Quadcode team provides internal risk management, back office and antifraud services, so the broker doesn’t have to think about all that. As a result, the client gets a fully working cross-platform solution. We also solved the registration and authorization issue. All IT maintenance rests on our shoulders. We help with building a legal structure and much more.

Now we want the platform ecosystem to have the widest possible range of instruments: Forex, CFD and investment products in a user-friendly form. The ideal option is to make the platform suitable for both banks and their customers. We assemble the product puzzle from the smallest details. It’s not a quick process, either legally or technologically, but so far it’s working out. 

Examples of the challenges facing the team this year:

1. Platform configurator. As an example, let’s take the BMW car assembly configurator. You can go to the site and assemble “your” car, that is, choose the color, rims, additional features. We want to make exactly the same functionality, only with the ability to build your own broker right on the site.
2. The development of our own Margin Forex & MCFD engine.
3. Elaboration of Prediction Churn. The feature is based on data analysis and predicts the moment when the user decides to leave. Now the Prediction Churn result is 82% reliable. When the system predicts that the user is ready to leave the platform, managers are involved to create a comfortable environment for the trader on the platform. This allows you to extend the period of work with the trader. The further along, the more accurately Prediction Churn will work, and the better we will be able to keep in touch with the user.

### Banking

This is our second product. At the heart of the product line is its own licensed provider of financial services, which is registered in the UK. The product provides the following features to B2B and B2C customers:

- Remote onboarding for individuals and legal entities.
- Access to the account via mobile application and online banking.
- Multicurrency accounts in IBAN format.
- SEPA, FSP and SWIFT transfers.
- Issuance of plastic and virtual cards.

The technology stack is classic: the core of the system runs on Java. It also uses PHP+JS to implement administrative management interfaces and web applications.

Near future plans — to complement the product with new local and alternative methods of payment, build additional banking products, build partnership programs, including reward and bonus programs for existing and potential customers. Expanded functionality will allow building an extensive network of channels in order to simplify cross-border payment processing around the world and provide customers with the most comprehensive range of services.

### Internal developments
In addition to projects directly tied to profits and clients, we invest in developing our own solutions to provide a comfortable and flexible professional environment for employees to work in.

Among the most interesting ones are the following:

1. IQ Bus. We practise microservice architecture. In the beginning, when the question arose as to what to choose to provide communication between microservices, we decided to create our own solution — the IQ Bus. It is a data bus that abstracts services from the transport layer and gives them a simple unified protocol to communicate.
2. Sandbox. In complex multi-component systems, and in our case systems with a large number of services, there is always a problem with testing. It is important to be able to get a reproducible environment for testing. At the very beginning of our journey, we created a Sandbox system with which you can build copies of the platform with various configurations. This is a kind of constructor, where you can go, choose what functionality you need, and the build will be created, the necessary microservices will be launched and you can test. It all runs on Docker + Kubernetes.
3. Central Information System. There is always a need for a tool that can integrate all the systems of the company. It’s not just about development, but also about personnel records management, HR, Finance. Such a system should help find answers to various questions. For example, what kind of team “A” is, what kind of employees it has, who the manager is, what its payroll is, what it did in the last quarter. And then there’s all sorts of individual wants. Finding such a product that has everything in it is quite problematic, and such systems look pretty monstrous. A good example is SAP. We invest in our own development of such a system, which realizes all the needs of various departments and integrates with other systems: Gitlab, task tracker, financial systems.

## In lieu of a conclusion

We have come a long way to develop a SAAS solution and implement a new banking product, and now there are a few more important goals. The company is using strategic planning, we are moving towards being present in all markets, doubling EBITDA and going for an IPO.

In future articles, we’ll talk in more detail about our approach to development, planning, and working with teams.