The client is a South American Cryptocurrency / Fintech company that provides customers with a secure wallet and debit card for their Bitcoins. Xapo was founded by a well-known South American entrepreneur with the goal of making buying, selling, and using Bitcoin as safe and accessible as accessing a traditional bank account.
The competition for the contract was a two-week long assessment process against other outsource software development vendors. Senior and select members of the AccelOne team attended daily meetings at the client’s offices to receive instructions and explanations of what the client needed. The AccelOne team was asked to present a recommended software architecture, software team configuration, and estimate for the number of work hours needed to build the cryptocurrency transaction platform.
Additionally, the new platform had to incorporate the client’s new business model directive. Their goal was to deliver crypto transactions to serve as the future enabler for transactions between buyers and sellers of all kinds, not exclusively for Bitcoin. They also wanted a quick and easy-to-use platform to attract consumers beyond the early adopters. In order for this to be possible, the platform would have to enable integrations to other financial services and institutions. Ultimately, the software platform would become the hub of all of the client’s future transactions, becoming the first of its kind worldwide.
A further challenge was that the prior platform was constructed largely by the client’s human operators using internal proprietary tools. The entire project presented many challenges for the AccelOne team who hoped their recommendations would impress the client’s senior engineers.
After reviewing the various vendor recommendations, the client selected AccelOne as the chosen outsource vendor to deliver their platform.
The first step was to onboard the AccelOne team and introduce us to the client’s teams and worldwide project stakeholders. AccelOne was then familiarized with the practices and tools used by the rest of the developers, operators, and administrators across the company.
Our team was integrated by a senior solution architect and two senior enterprise-level Python developers into tech stacks that the client used which included:
- Python 3.6 with the light Flask framework
- REST full API to expose process information: Flask Restful plugin
- APS Scheduler Python library used for transactions processing and as a foundation for a decoupled transaction processing engine
- React.js + Redux for the front end
The system that our team worked on was integrated with the client’s proprietary admin tool and with a group of Cryptocurrencies Exchanges through the use of their APIs.
There are three main environments which host the system:
- Development (on the developer’s workstations)
- Staging (for the client’s stakeholders evaluations)
- Production (for the final release product)
Everything runs in Amazon Web Services (AWS) infrastructure and two main services are used among others:
- S3 to store digital assets, all stored data needs to be heavily encrypted
- ECS to run the Docker containers with the app
The main challenge of the execution was to organize all the stakeholders from different areas of the client’s company and our team to avoid project blockers and to allow a smooth and accurate process integration with the rest of the customer systems.
Before beginning development, a prototype of the process was created to define the logic, rules, parameters, and to simulate possible scenarios. Once the prototype was approved, all the related framework and middleware was created. Lastly, the integrations were analyzed and we designed a data-driven model to empower a multisource architecture. The transaction processing engine was designed to be a multisource data loader, parser, and interpreter. With extensibility in mind, we integrated the client’s systems, payment networks, and exchanges in a modular way — allowing new sources with different levels of initial capabilities going from simple value range and similarity matching to more complex rules.
During the entire project duration, Scrum framework was used to assign tasks and keep track progress, milestones, deadlines, and blockers. Orchestration of the interaction with all the rest of the client’s resources was key to the success of the project, including constant communication with the client’s CTO.