case video fallback
Case Study

BandPay: A tool
to run business

Mad Devs created a complete B2B payment management solution
that enables freelancers to promote their business, make
agreements, and get paid quickly and securely.

Many freelancers and small businesses have little knowledge of how to write contracts and arrange payments. Still, it is essential to guarantee that the work will be paid in full and on time. BandPay intended to take charge of legal and financial matters, thus allowing people to focus entirely on their work. Mad Devs helped BandPay turn their idea into a valuable tool used for project-based partnerships to automate agreements, process payments, and fulfil other functions.

Achievements in figures

payments

1M

volume of payments processed

accounts

+15K

number of accounts

transactions

+75K

active users transactions

users

2.5K

monthly active users

Opportunities with BandPay

Promote business across the web and via SMS
Receive payments automatically
Deposit funds to start projects

Who can benefit most from BandPay?

BandPay is a milestone based payments platform that takes on the duties of a project manager, a lawyer, and an accounting officer, enabling people to run their business effectively. This service is well suited for artists, musicians, designers, and freelancers and businesses that choose project-based cooperation.

The project’s initial idea was to help people from the music industry, such as musicians, singers, or songwriters, receive payment for their work. Unfair practices are common in this industry, so one of the problems music bands face is that they don’t get paid by clients who hire them. Thus the name “BandPay”. Nevertheless, the project gradually expanded with time and became a handy tool for freelancers working in various fields, not necessarily the music industry.

BandPay addresses the needs and interests of both the client (buyer) and the contractor (seller). On the one hand, it makes sure the contractor is paid; on the other hand, no money will be transferred unless the work is completed. The parties can specify all conditions and responsibilities in an online contract to protect each other from negligence and misbehaviour.

Mad Devs was chosen to bring the BandPay project to life, which we did successfully by creating the entire solution from scratch, including the infrastructure, backend, iOS and Android applications, and web components

Challenges & solutions

An enhanced user experience makes a product more compelling and valuable for its users. That is why building an intuitive dashboard was instrumental in giving a boost to the GuardRails solution. The data dashboard developed by Mad Devs from scratch allowed the app users to have a look inside their code and visualize its vulnerabilities. While working on this project, we created two versions of the dashboard.

Freelancers had problems getting paid for their work. For their part, freelancers’ clients wanted to pay in installments and transfer money only when the work is completed. Both parties required a fast and transparent way of cooperation and needed to feel secure when working with one another. Moreover, clients and freelancers wanted to send and receive money quickly and conveniently.

Icon

Mad Devs ensured timely payments directly to freelancers’ bank accounts by integrating BandPay with a reliable payment processor

Icon

Our engineers developed full-featured Android and iOS applications where users can complete profiles, send project requests, negotiate terms, and communicate via chat

Icon

The Mad Devs team implemented instant deposits so that freelancers could send invoices over emails to any potential partner

Icon

We divided projects into milestones and adjusted the payment procedure so that the money could be transferred after the completing and approval of each milestone

Icon

Users wanted to feel secWe implemented BandPay’s own KYC (Know Your Customer) procedures to verify identities and protect users from fraud ure when working with one another

Icon

We enabled freelancers to get paid in 1-2 business days by adding a non-prepaid US debit card

Looking at the frontend

We chose React.js to develop the frontend of the BandPay solution, taking advantage of the library’s opportunities, such as the following:

High performance
Flexibility

We used Stripe.js and Stripe elements to integrate Stripe in the BandPay React app and create custom payment forms. The Mad Devs engineers made it possible to send an agreement via email with an inserted link that leads to the payment form UI.

Integrating online payment processing

Payment processing is an integral part of the BandPay solution. So one of the essential project tasks was integrating with a payment processor to accept and send payments online.

Payment processor for businesses

We used Stripe to enable BandPay users to easily and quickly accept payments and send payouts

Payment processor for businesses

Stripe is a top-ranked payment processing platform that enables businesses to accept payments quickly and safely. By granting access to its infrastructure through APIs (application programming interfaces), the platform assists in launching bespoke financial services. We chose Stripe for the BandPay project based on the following advantages:

  • It is easy to use and customise It is easy to use and customise
  • It is quick and scalable It is quick and scalable
  • It accepts all major credit and debit cards It accepts all major credit and debit cards
  • It detects and prevents fraudulent transactions It detects and prevents fraudulent transactions

In addition to taking payments from buyers, BandPay was supposed to send payouts to sellers. Mad Devs met this challenge using Stripe Connect—a solution provided by the Stripe platform. By integrating Stripe Connect into the project, we made it possible to collect payments from buyers and route funds to sellers’ bank accounts. Now, BandPay is an official Stripe Partner.

To deposit funds and start a project, a buyer should open the app and enter the card details. The funds will be deposited to the seller’s BandPay account. To receive the payment, the seller should add a valid US non-prepaid debit card. Once the milestone is completed and approved by the buyer, the money will be sent to the seller automatically. The seller will see the amount and the number of the milestone and agreement.

The BandPay Mobile Applications.

What is in the backend?

To build the backend, we opted for Go, which offered the following benefits for the project:

  • Speed is one of the main advantages of this language: having a small footprint, Go allowed us to create a lightweight application that can run fast and have low CPU usage Speed is one of the main advantages of this language: having a small footprint, Go allowed us to create a lightweight application that can run fast and have low CPU usage
  • The other important advantages of the Go language are concurrency and scalability, which enable the BandPay app to process multiple tasks and have many users online simultaneously The other important advantages of the Go language are concurrency and scalability, which enable the BandPay app to process multiple tasks and have many users online simultaneously
  • Although the language is relatively new, it has a great community of developers and therefore its own high standards. These standards help developers to code instead of arguing with one another about the format of the language, which significantly improves the project onboarding Although the language is relatively new, it has a great community of developers and therefore its own high standards. These standards help developers to code instead of arguing with one another about the format of the language, which significantly improves the project onboarding
  • Go is great for writing unit and integration tests, so we increased code coverage for the project from the very beginning Go is great for writing unit and integration tests, so we increased code coverage for the project from the very beginning
  • All the necessary integrations had Go libraries with the communities that support and develop them, so finding an existing library was not a problem All the necessary integrations had Go libraries with the communities that support and develop them, so finding an existing library was not a problem
  • Go is a statically-typed language, which is always a preferred option for fintech projects Go is a statically-typed language, which is always a preferred option for fintech projects

A great choice for efficient backend

We maximized the potential of Go to develop high-performance backend for the BandPay app

A great choice for efficient backend

The BandPay backend interacts with various platforms and services intended for email and text messaging, handling marketing activities, error tracking, crash monitoring and fixing, data storage, and many other functions and features. The scheme below shows the environment and services involved in the BandPay backend functionality

To enable the app to communicate with the database in an easy and effective way, we refactored the heavy database interface, making it more readable, convenient, and failproof.

BandPay app architecture

When building mobile apps for the BandPay project, we first released the versions for internal testing. Once the successful test results were achieved, we released the apps to production. Both iOS and Android applications have similar architectures, which include the following components:

Icon

Activity / Fragment

Handles UI events

Icon

View model

Stores logic with related features and uses (Repository/Service)

Icon

Repository / Service

Sends requests related to the feature group (Profile, Agreement, Chat, Sign In/Sign Up)

Icon

Network module

Makes requests, initiates connections, adds tokens to headers, and handles expired tokens

Below are the integrations of the iOS and Android apps.

Implementing CI/CD pipelines

The Mad Devs developers set up CI/CD pipelines to automate the delivery of the BandPay mobile apps using Fastlane and GitLab CI. The CI/CD pipelines we implemented include a range of automated procedures, such as:

  1. Linting - Checks the code for programmatic and stylistic errors
  2. Unit testing - Verifies the individual components of the app
  3. Integration testing - Checks how different components of the app work together
  4. End-to-end testing - Verifies the entire flow of the app from start to finish
  5. Code coverage reporting - Shows how much of the code is tested
  6. Build & deployment - Builds and deploys the code to staging and production

Buyer registration

Registration with BandPay takes place only in the mobile application. However, the buyer and the seller can start cooperating via a webform, too.

For example, the buyer can go to the seller’s public profile and create a project request. With that, the system will ask the buyer to add contact information. The confirmation link will then be sent to the buyer’s email address for verification. The buyer then becomes a registered user. After that, the seller sees the request and creates an agreement.

Alternatively, the seller can create an instant deposit in the app and notify the buyer via email. At the same time, BandPay will send an invoice to the buyer’s email address. After paying the invoice, the buyer becomes a registered user.

Buyer Registration

Project development workflow

Transparency is the fundamental principle that Mad Devs applies in project development and communication either within the internal team or in customer relationships. By combining transparency with the agile method, we keep the project team continually engaged and allow for relevant adjustments at the right time and at any stage of the project.

Project planning and management

The size of the development team changed throughout the whole project. The group was relatively small initially, but it scaled up sharply as we moved forward with the project and onboarded new team members, such as frontend, backend, and mobile developers. At that time, we used the Agile Scrum methodology, that is, divided the project into incremental phases or 2-week sprints and held regular demo and retrospective sessions.

After the active development phase changed for the support phase, the team size decreased, and we switched to Kanban. This methodology has no fixed sprints and timeframes, and it focuses more on the flow of the project. By applying Kanban, we prioritised tasks by pulling them into the workflow from the backlog.

Project Planning
Project Planning

Key achievements

The outcome of the work completed by the Mad Devs team is a fully-fledged platform where users can build partnerships, make agreements, pay, and get paid. BandPay safeguards its users and ensures that everyone remains satisfied with the final results, such as the desired deliverables and timely payments.

While working on the BandPay solution, we managed to simplify onboarding and improve project visibility.

Easy onboarding

To facilitate the onboarding process, we prepared sufficient project documentation and adopted a containerisation strategy using Docker container technology. Once assigned, a developer, be it a frontend or backend engineer, can quickly test and deploy the project regardless of the operating system. In addition, we obtained good test coverage for the code (65% coverage for 82,000 lines of the backend code).

Consequently, it takes around 2 days to onboard a new team member in the BandPay project, while in other projects, the onboarding process may last up to 2 weeks.

Increased project visibility

Mad Devs works in close collaboration with our partners from Peklo, a digital marketing studio engaged in BandPay’s marketing strategies and campaigns, including metrics and analytics. Our engineers implemented a variety of metrics in the iOS and Android applications to improve the visibility of the project.

We added a news feed, which shows all recent activities on the platform, such as successful and unsuccessful payouts, generated agreements, registered and banned accounts, as well as other activities and events. We also added regular reports that provide information about the key metrics and alerts that notify about errors.

Project visibility
Project visibility

As a result, BandPay is 100% visible and transparent for both the business owner and developers, who can see everything happening in the project. This system allows for tracking the activity of the users and collecting their feedback in real time. Moreover, our developers can instantly detect and fix problems, even before users report them. For this purpose, we extensively apply Sentry.io—a helpful tool for error handling and alerting.

Project sentry
Project sentry

Technology stack

  • Swift

    Swift

  • Kotlin

    Kotlin

  • Go

    Go

  • React.js

    React.js

  • Twilio

    Twilio

  • Slack

    Slack

  • Firebase

    Firebase

  • Stripe

    Stripe

  • Heroku

    Heroku

  • SimpleTexting

    SimpleTexting

  • PostgreSQL

    PostgreSQL

  • Redis

    Redis

  • Docker

    Docker

  • Retrofit

    Retrofit

  • Moya

    Moya

  • Fastlane

    Fastlane

  • GitLab CI

    GitLab CI

Meet the team