WhiteFlo – Crypto processing and universal platform for operations with cryptocurrency

Task

AXIOMA creates and develops its own product – crypto processing, which is delivered as a standalone solution.

Also, this product serves as a platform to provide customers with financial services in different configurations. This is a modular system that contains the components of a crypto bank.

We use this platform to create custom projects for our clients, as well as to launch our own projects together with business partners.

The website of the product: whiteflo.com

Result

WhiteFlo is a set of Symfony 5 modules that are reusable across projects.

<img-group>

Modules

Currently, there are more than 20 modules that implement the functionality of the product at various levels:

  • Operations with currencies and rates
  • Operations with users and roles
  • Business functions: crypto wallet, crypto processing, crypto exchange, crypto acquiring
  • Merchant API; frontend and integration into a third-party system
  • Web cabinets: merchant, user, administrator, onboarding
  • Payments web interface and widgets
  • Integrations with: exchanges, acquiring, payment systems, blockchains, KYC providers
  • Settings management
  • Text editing
  • Common Components and Abstractions

The connection between modules are organized in such a way that allow connect the necessary parts of the functionality at the requested level, and implement the rest by yourself. For example, connect only the business logic of cryptoprocessing and API, then integrate it into your product.

You can configure each module and redefine its functionality in various ways: extend the model, redefine any service, create your own command, request, and event handlers.

High-level code and business logic are covered by tests.

Scaling

Most commands and events can be processed asynchronously. For a highly loaded distributed system, you can use any message broker that is supported by Symfony Messenger, such as Amazon SQS or RabbitMQ. The standard delivery usually uses a queue in the SQL, which simplifies the architecture and reduces costs.

Launch of the project

To launch a specific project, the necessary modules are included in a project, usually built as a web application with a monolithic architecture, that is, single Symfony project for the public part of the site, the client part, the admin panel and the REST API.

Creating a new project consists of the following steps:

  1. the required modules are connected to an existing or new empty project on Symfony 5 through Composer dependencies;
  2. module configuration is added;
  3. the schema and data migration completes;
  4. functionality is checked to make sure the project launched correctly.

Stack

  • PHP 7.4
  • MariaDB10/MySQL8
  • Redis 7
  • Symfony framework 5
  • Sonata admin 4
  • Vue.js 3
  • Docker
  • Integration with blockchains through the API of block explorers and Infura.

Deployment

We deploy projects on AWS. We create a site using Terraform. On Gitlab CI, the project is assembled in docker images, automatic testing is carried out. The required version is deployed to the site on command, blue / green deployment is applied.

A detailed description of business processes and use cases of the product can be found on the product website: whiteflo.com

Other projects
Back to Portfolio