My Experience Building Banking Mobile Apps
I had the opportunity to work on the banking application for Crédit Agricole du Maroc a while back — and like most financial apps, it came with its own set of challenges. From ensuring strict security and performance standards to delivering a clean, reliable user experience, it pushed me to think critically, solve problems efficiently, and collaborate closely with a great team.
That experience taught me a lot about balancing functionality with security and user-friendly design, something every fintech developer needs to master sooner or later.
Projects I Worked On
At PUMP – DIGITAL AGENCY, I started as a mobile developer and later became team lead. During this time, I worked on multiple projects for Crédit Agricole du Maroc, including:
-
Mobile Banking (Android & iOS): Native apps built using Java (Android SDK) and Swift, with SQLite for local storage and SOAP/REST APIs for server communication.
-
Creation of Bank Account (Android): An app allowing agents to remotely open bank accounts by scanning the Moroccan national ID (CNIE). Initially attempted with a hybrid framework but switched to native Android for security and OCR performance.
-
Simulateur de Crédit (Hybrid): A credit simulation app developed with Ionic, AngularJS, and REST APIs, deployed on in-branch tablets for public use.
-
Fiches Produits, Recueil Tarifaire, and Catalogue Produits: Hybrid apps built with Ionic and AngularJS for agents and clients to browse product info, tariffs, and catalogs within bank agencies.
Later at ADRIA BT, I joined as a mobile engineer, where I contributed to:
-
Mobile Banking iOS (Crédit Agricole du Maroc): A native iOS app using Swift, RESTful services, and Keycloak for secure authentication and access management.
-
Mobile Wallet iOS (MANSA BANK): A native iOS app using Swift, RESTful services, and Keycloak for secure authentication and access management.
-
Other enterprise mobile apps: I also supported additional mobile banking projects at ADRIA BT, contributing to iOS builds, API integrations, and modular architecture improvements.
Why Native, Why Hybrid?
Not every app needs to be native, and not every app can afford to be hybrid. We made our choices based on:
-
Public-facing, non-sensitive apps (like credit simulators or product catalogs) installed on in-branch tablets were hybrid, using Ionic/AngularJS. This was cost-effective, quick to build, and worked well for offline browsing and simple REST communication.
-
Agent or client apps handling sensitive operations (like account creation, money transfers, or identity verification) had to be native for security, stability, and performance reasons. For instance, integrating OCR for CNIE scanning demanded native support for camera control and text recognition, which hybrid frameworks couldn't deliver.
Key Technical Challenges
One of the toughest technical challenges I faced was building an offline OCR module to read CNIE cards. Initially, I attempted to implement it in Ionic, but performance and camera access limitations made it unworkable. I pivoted quickly to native Android and Swift apps, using native libraries for text recognition.
On the security side, we worked with a mix of SSL certifications, token-based authentication, and personal certificates per agent device. Certain apps required personal certificates to be installed on a specific device, enabling access through a secure token generated after login. This was crucial for protecting sensitive banking data and complying with internal IT policies.
Teamwork and Process
We managed our projects in Agile, working in sprints, with regular client feedback loops. I collaborated closely with other developers, designers, QA teams, and client IT teams from Crédit Agricole du Maroc. As a team lead at PUMP, I mentored junior developers, reviewed code, and helped plan technical strategies for mobile projects.
A Lesson from the Field
One valuable lesson I took away from these projects is that not every client idea is feasible, especially when it comes to security or mobile device constraints. Clear, honest technical advice can prevent future problems. I also learned that framework flexibility matters: sometimes you need to pivot from a quick hybrid prototype to a native build to meet performance and security standards.
Final Thoughts
Working on financial apps is a unique challenge. It taught me how to deliver secure, high-performance mobile solutions while navigating complex client needs and tight deadlines. The projects I led and contributed to at PUMP and ADRIA BT gave me a solid foundation in mobile banking development, experience that continues to shape how I approach fintech and enterprise mobile solutions today.