case video fallback
Case Study

Mobile Banking for 2M+ Users

Mad Devs, in partnership with one of the largest banks in Kazakhstan, developed a mobile banking application with advanced functionality and an excellent user experience. Now users can completely skip going to the bank and immediately get plenty of various services and additional products.

More and more banks are striving to create their ecosystem so customers can get more products and services online. Their number often grows much faster than the teams of specialists who develop and maintain them.

One of the largest banks in Kazakhstan, with 2 million clients and dozens of products, also faced this. Constantly expanding functionality and increasing complexity led to the need for experts capable of quality integrating and empowering internal bank teams. That's why it's turned to Mad Devs.

Due to NDA, we cannot disclose the name of the bank, but we are happy to tell you what challenges we faced, how we approached them, and what solutions we developed.


Our Achievements in Figures

Achievement star


Stars from users in App Markets


Top 10

Finance Apps of 2021 Rated by Forbes Kazahstan

Top 10

Top 10

Apps of 2021 Rated by Sensortower


Top 10 Finance Apps of 2021

  • Apple Store
  • Google Play Store

Mobile Banking Features

Hassle-Free Transfers

Project Issues and How We Resolved Them

The banking system was huge, with many teams and departments. So setting up and managing any task took a lot of time and required more flexibility and transparency. The architecture was initially monolithic, and with the increasing functionality, its transition to microservices became slower and slower. Also, the infrastructure was extremely overcomplicated in delivering new features quickly and efficiently. Testing only covered the core functionality and was mainly manual, not allowed to fix the many accumulated bugs. All this was hurting the development cost, speed, and quality. So we needed to work at all levels and review the entire code base to improve existing features and develop new ones.


Setting up Jira and Confluence, writing tasks and onboarding documentation, helping with team communication, and resolving internal team blockers.


Migrating to microservices, dividing services using Golang, updating Java libraries, fixing authorization problems, and integrating with bank services.


Improving manual testing, writing autotests, setting up CI/CD pipelines, deploying mobile development, developing a new admin panel, and adding metrics.


Integrating Ashyq and Visa Alias services, helping with user story development, developing ILI and ELI functionalities, and adding an online chat feature.


Complete refactoring of the design library, developing a dark theme, updating the design in product details, and synchronizing with iOS and Android app versions.

Processes Implementing

We made many sessions with the bank's sales departments, technical heads, and scrum masters of the teams to agree on all the solutions. Then we implemented processes and tools to ensure agile development and transparent communication.

We helped improve task management in Jira and set up documentation in Confluence.

  • delivered-icon

    Delivered the importance of detailed task descriptions and work logs.

  • types-of-tasks-icon

    Choosed the right types of tasks, added tasks acceptance points.

  • fields-tasks-icon

    Deleted unused and added necessary labels and additional fields in tasks.

  • errors

    Attached screenshots of errors and described the steps to reproduce errors.

  • bugs-icon

    Registered incidents in the form of tasks, collected statistics on fixed errors.

  • set-task-icon

    Set task priorities and distribution between team members and different teams.

We also focused on DevOps and QA processes.

  • devops-workflow-icon

    Implemented remote work for DevOps specialists and supported their workflow.

  • scheduled-tasks-icon

    Scheduled their tasks, created, displayed, and managed them in Jira.

  • devops-daily-links-icon

    Conducted DevOps daily links and weekly meetings for workflow transparency.

  • delivered-architect-icon

    Delivered the need for an architect and helped with sourcing and onboarding.

  • onboarding-icon

    Implemented technical onboarding process for other newcomers and mentored new QA specialists.


We shared our best-proven practices to improve development and communication processes. As a result, the set of tasks, their distribution among the teams, their performance, resources allocation, and reports about it became more agile, transparent, and exhaustive for all parties.

Gaukhar Taspolatova - Delivery Manager, Mad Devs

Architecture Design

We helped with the quality migration of important parts of the monolith to microservice architecture, allocating existing features and services into separate modules and providing their correct interoperability.

The architect and DevOps team performed a detailed review of the existing architecture and then defined a set of technical recommendations for further microservices implementation. So we redesigned the architecture for further more convenient addition of new functionality and more stable and faster operation of the entire solution. Also, we allocated Go and Java services from the monolithic version and performed their complete refactoring.

Infrastructure Building

We analyzed parts of the current infrastructure, which had only the development and production parts, which were heavily overloaded and complicated. We collected resource requirements for the new pre-production environment, and as part of the new infrastructure, we ran all the applications in it.

  • Helped get virtual servers up and running with VMware.
  • Prepared the ansible playbooks to run MongoDB, RabbitMQ, and Redis.
  • Prepared servers for the payment hub, got it up and running, and kept it running stably.
  • Helped with configuring Keycloak + Infinispan clusters, which improved the reliability of the authentication system.
  • Improved infrastructure monitoring system, metrics collection, and visualization for each environment with Grafana and Prometheus stack.
  • Helped integrate, set up, and configure the APM system to get detailed information about the performance of individual applications.
  • Participated in preparing the CI/CD for each application for quality code delivery to all environments and assisted in the CD launch with ArgoCD.
  • Helped launch a new ticketing system for the interaction of departments and teams within the bank, thereby greatly simplifying communications and speeding up processes.
  • In cooperation with QA, we prepared environments for launching automated tests for Android and iOS with Jenkins support.


Such infrastructure changes have helped to significantly reduce cost and time, improving the continuous delivery of new features.

Gaukhar Taspolatova - Delivery Manager, Mad Devs

Tests Automating

When we came to the project, there was only manual testing, which required a lot of time and effort. That is why the QA team mainly focused on the core functionality, so many bugs appeared only on production and often were unexpected.

Our goal was to expand the coverage by autotests, as well as help to choose the right AQAs and properly organize their work. The task consisted of several important points:


We were very pleased with the new practices from Mad Devs because the process of testing and adding new test cases became much easier and faster. And the autotests Mad Devs wrote became the best instance for each our teams, which we are happy to follow.

Mobile Banking Product Owner

Challenges & Solutions

Bank Loans & Other Services

Going to a bank branch is often necessary to become a client. And even as a client, it is still necessary for many operations, such as applying for a loan. A bank agent does many operations manually, communicating with potential clients, checking their documents, and processing applications from current clients. So we helped improve the existing functionality allowing potential clients to access the bank's products directly from the application, and making interaction with this functionality more effective for bank employees.


Our team improved the features, including phone authorization, scoring procedures, document uploading, automatic creation of PDF print forms, and digital signature. Also, we developed an interface for bank employees to analyze and display client data to approve and reject an application or send it for more detailed review.


Now people can become bank customers and even apply for a loan right in the app. This has significantly reduced the bank's employees' workload and continues attracting many new customers. The improvement and launch of this feature brought us a 15% increase in new customers.

Mobile Banking Product Owner

Bank Loans & Other Services

Visa Alias

Sharing your bank card information that must be avoided even if the bank has the highest degree of security. However, if you can avoid it when paying using Apple Pay, Google Pay, or paying for many services directly from the bank app, how about not sharing the bank card details to get a direct transfer of funds from another person? We did one more thing for that.


We added a new type of transfer, which allows sending money from one Visa card to another, knowing only the phone number. To make it possible, we integrated the service Visa Alias and implemented the binding of Visa cards. Also, the user can choose which card the funds come to when using the given phone number and change it in a few clicks. So bank clients got an easier and faster way to transfer funds between visa cards and ultimately better security and card information protection.

VIP Visa

Visa is one of the most popular and advanced payment systems, providing extensive opportunities for banks worldwide. This can be a great cause for encouraging clients who preferentially use it. So we developed the VIP Visa feature, which gives perks for those using Visa cards.


We developed a tutorial, a screen with detailed information on exclusive perks and how to use them. Also, we implemented a screen with a rewards calendar where the clients will see if they are following the spending plan and that the perks will be active.


This way the bank gained loyal clients who happily accepted new, more profitable opportunities from using Visa.

Gaukhar Taspolatova - Delivery Manager, Mad Devs

VIP Visa

Stories on User Actions

Promoting additional products requires interaction with already popular channels or developing your own, which takes up a lot of resources. Also, even an interested user may simply not want to make unnecessary jumps between pages, and even appropriately directed resources may not always work. Because of this, we helped to improve the promotion feature to spread info about new bank products directly in the app and take a more personalized approach to advertising.


We helped improve the user stories feature based on events and allocated it in a separate module independent of application iterations. So bank got an advanced customizable feature for its product promotion right in the application, and clients got personalized advertising based on their actions.

  • Since data is constantly updated, we developed the service that sent the necessary conditions in the JSON Logic format, allowing us to specify the show's logic through the service rather than through an application.
  • The logic sent out usually contained the events that were worth responding to. The app implemented an event hook, which checked all of the user's actions against the required portrait.
  • The stories shown have deep links, which makes users easier navigate to the desired product if they are interested.
  • To prevent the repetition of stories, we started saving the data about the shows to the application's database.
  • The service also sent the data on the maximum number of impressions. It is implemented as a web page where the bank manager can set the required user profile, stories, and transitions inside the application.
  • We wrote additional tests for this feature and implemented multiple security layers to ensure that user data is fully protected.
Stories on User Actions


Typically, large insurance and investment services are offered by individual companies that specialize in this area and require documentation or even in-person visits. While the bank already keeps your documents, knows your income, and has all the necessary data, it may be redundant or even insecure about providing for other companies. Wouldn't it be great if your bank could offer similar services directly in the application without too much hassle?


We developed two additional products available through the banking application, namely Investment Life Insurance and Endowment Life Insurance. They were implemented as a few additional users flows, and the data are taken from Firebase real-time database.

We used quite a few scripts to speed things up. The Generamba library and a Ruby script were used to create new blank screens on the VIPER architecture, and the templates were styled in Liquid (from Shopify). This script creates, assembles, and connects VIPER components, basic tests, and necessary screens. The Phrase service was also used for the tests. A Gradle-based script, which could generate both iOS (.swift) and Android (.kt) files, was used to generate the events.


As a result, the bank got a whole sector of new customers and part of the insurance and investment market, and users got two amazing products right in the app, with secure and seamless transactions for them. And our team was happy to see such significant bank achievements and to realize our involvement in them.

Gaukhar Taspolatova - Delivery Manager, Mad Devs

Ashyq COVID-19 Status

At the pandemic peaked, COVID status was needed to visit any place, from government offices to restaurants. Updating your COVID status on the official state website and downloading a confirmation document or a separate application for one function is not the best solution. So it was a high priority to close such a request as quickly as possible, which we did directly in the mobile banking app.


To handle such inconvenience, we developed a feature for displaying the Covid status of the bank clients. We implemented integration with Ashyq service, the state system for monitoring the health status of individuals (sick/not sick, vaccinated/not vaccinated). And we added fixing the entrance to public places/institutions due to COVID restrictions.


Everyone was shocked by the pandemic and the limitations it brought. The feature of receiving the certificate directly in the app maintained our clients' confidence and helped make their lives easier and safer in such difficult times.

Mobile Banking Team

Dark Theme

A dark theme is a must-have feature for any contemporary app. But for most teams, it's easier to implement it in a new product iteration rather than adding it to the current one because it takes the whole interface. It was even more complex in our case because the design library required complete refactoring. Without fixing this, designers would have to manually draw layouts for each new app screen's light and dark theme. Developers would need to do the double work of adding a light and dark theme to the app, and QA would need to double-check functionality separately in both cases. All of these would multiply the amount of unnecessary work.


In collaboration with the bank’s design department, our design and development teams completely refactored the design library, unified UI elements, and developed the dark theme for all screens and alerts.

  • Redesigned the library of elements that are convenient for both designers and developers to work with in the future.
  • Completely refactored colors for the light and dark theme.
  • Developed a dark theme for the application itself and adapted the splash screen for the dark theme.


Essentially, designers, developers, and QA have reduced their work several times, getting a usable and clear base for the design of new features. And clients got the needed feature in a quality implementation that consistently works on all screens and notifications.

Mobile Banking Product Owner

Dark Theme


We discovered a problem with authorization, which periodically occurred with a large flow of new users. And this was not just an inconvenience but brought the risk of losing user data, which required a solution in the shortest possible time with many unknowns.

That challenge was also greatly complicated because there was no documentation of this feature and no direct specialists among the bank employees. This made it difficult to simulate an error to test the theories and possible solutions. And the process was also delayed by additional communication with previously used services. We have fixed the recurring problems with the authorization in the application, making safe user data and providing the system for its monitoring.


The core problem was with IAM (Identity and Access Management) because of outdated and unsupported Keycloak and Infinispan and their default settings.

  • Studied Keycloak and Infinispan, compatibility of their versions, configs, caches and dependencies; Studied migration from current versions to new ones so we won't lose user data in production
  • Launched the new versions of Keycloak and Infinispan on other servers, using older ones for developers and testers to work in a testing environment
  • Switched between new and old versions to test the functionality of the latest versions and tested the authorization
  • Repeated all this in production, then updated the java adapter for authorization to the new version
  • Added monitoring of development and production systems and passed it to the hotfixes department, making authorization in one tab
  • Writing documentation at all stages, implementing and maintaining it in Confluence

InApp Chat

Despite the quality design and rich functionality, many users still want personal advice or detailed information, not going to the FAQ section. That's why we developed the InApp Chat.


InApp Chat is only one click away for the customers. It lets users immediately get the answers they need and contact the bank operator.

  • The bank's clients do not need to call and wait in line. The operator knows everything they need about the client and their products.
  • Chat allows clients to send screenshots and voice messages and avoid switching to other messengers.
  • Chat can work asynchronously. The client can close and open at any moment and view the history of messages.
InApp Chat

Overall Results

The project entailed multiple improvements to ensure its success. We implemented and optimized many processes and tools to ensure transparency and data-driven results. The architecture was mainly transformed into microservices for greater scalability and ease of management. The team worked on bug fixing, autotest integration, and infrastructure upgrades. Existing services were improved, and new ones were developed to enhance the user experience. Finally, the design library was updated to make the future design simpler and better, and a dark theme was added to give users a choice of visual style. All improvements positively affected the costs, speed, and quality of development and the effect will only get bigger with the company's growth.

Working with Mad Devs was both extremely productive and enjoyable. They greatly helped each of our teams and became like family to us.

Representative of mobile banking in Kazakhstan

Technology stack

  • React


  • Swift


  • Kotlin


  • Go


  • Java


  • Ruby


  • Firebase


  • Jenkins




  • Phrase


  • Generamba




  • Keycloak


  • Infinispan


  • RabbitMQ


  • Redis


Meet the team

  • Gaukhar Taspolatova

    Gaukhar Taspolatova

    Delivery Manager

  • Vladimir Olessov

    Vladimir Olessov

    Delivery Manager

  • Zukhra Alieva

    Zukhra Alieva

    Project Manager

  • Pavel Zverev

    Pavel Zverev

    Tech Architect

  • Alexander Krivov

    Alexander Krivov

    Lead Designer

  • Aibek Nogoev

    Aibek Nogoev

    Mobile Developer

  • Oleg Ten

    Oleg Ten

    iOS Developer

  • Pavel Pushkarev

    Pavel Pushkarev

    iOS Developer

  • Dastan Mamyrov

    Dastan Mamyrov

    iOS Developer

  • Aisalkyn Tashmatova

    Aisalkyn Tashmatova

    Android Developer

  • Rustom Kulbatyrov

    Rustom Kulbatyrov

    Android Developer

  • Evgeniy Fedyanin

    Evgeniy Fedyanin

    Frontend Developer

  • Dmitrii Khalezin

    Dmitrii Khalezin

    DevOps Engineer

  • Kirill Kulikov

    Kirill Kulikov

    DevOps Engineer

  • Marat Bediev

    Marat Bediev

    DevOps Engineer

  • Bekmyrza Dzhekishev

    Bekmyrza Dzhekishev

    Project Manager

  • Maksim Pankov

    Maksim Pankov

    Project Manager

  • Bibigul Beisenova

    Bibigul Beisenova

    Business Analytic

  • Alexey Krivov

    Alexey Krivov

    Backend Developer

  • Belek Abylov

    Belek Abylov

    Backend Developer

  • Meder Akkozov

    Meder Akkozov

    Backend Developer

  • Oleg Katkov

    Oleg Katkov

    Backend Developer

  • Altynay Baitulakova

    Altynay Baitulakova

    Backend Developer

  • Gleb Khegay

    Gleb Khegay

    Quality Assurance Engineer

  • Artem Didenko

    Artem Didenko

    Quality Assurance Engineer

  • Nursultan Tagoev

    Nursultan Tagoev

    Digital Analytic

  • Nikolay Ispandiyarov

    Nikolay Ispandiyarov

    Frontend Developer

  • Artem Trofimenko

    Artem Trofimenko


  • Andrey Ashurov

    Andrey Ashurov

    Android Developer

  • Vyacheslav Razumeenko

    Vyacheslav Razumeenko

    iOS Developer