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
1M
volume of payments processed
+15K
number of accounts
+75K
active users transactions
2.5K
monthly active users
Opportunities with BandPay
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.
Mad Devs ensured timely payments directly to freelancers’ bank accounts by integrating BandPay with a reliable payment processor
Our engineers developed full-featured Android and iOS applications where users can complete profiles, send project requests, negotiate terms, and communicate via chat
The Mad Devs team implemented instant deposits so that freelancers could send invoices over emails to any potential partner
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
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
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:
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.
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.
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
- 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
- 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
- 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
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:
Activity / Fragment
Handles UI events
View model
Stores logic with related features and uses (Repository/Service)
Repository / Service
Sends requests related to the feature group (Profile, Agreement, Chat, Sign In/Sign Up)
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:
- Linting - Checks the code for programmatic and stylistic errors
- Unit testing - Verifies the individual components of the app
- Integration testing - Checks how different components of the app work together
- End-to-end testing - Verifies the entire flow of the app from start to finish
- Code coverage reporting - Shows how much of the code is tested
- 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.
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.
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.
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.
Technology stack
Swift
Kotlin
Go
React.js
Twilio
Slack
Firebase
Stripe
Heroku
SimpleTexting
PostgreSQL
Redis
Docker
Retrofit
Moya
Fastlane
GitLab CI