This repository documents my MSoC 2025 work with the Mifos Initiative, along with contributions before the official coding period.
My MSoC project focused on Migration of Mifos Field Officer Application to Kotlin MultiPlatform, but my work extended across multiple repositories to enhance functionality, fix bugs, and strengthen the Kotlin Multiplatform ecosystem within Mifos.
🙏 Thank you Mifos for offering me the Mifos Summer of Code (MSoC) — a program awarded to contributors who narrowly missed Google Summer of Code but had made significant prior contributions.
My GSoC 2025 Proposal (Reference)
If you’d like to see a concrete example of structure, milestones, and visuals:
View my GSoC 2025 proposal to Mifos »
My week-wise progress can be found here:
MSOC Progress on GitHub »
Tip
Org-wide contributions (openMF)
Quickly browse everything I’ve merged across the organization:
All merged PRs by me »
Repo: openMF/android-client
About: A Kotlin Multiplatform application built on the MifosX core banking platform, designed for field officers to efficiently process transactions, manage client data, track center and group records, and handle accounts (loans, savings, recurring deposits). The goal is to streamline field operations with a shared cross-platform codebase (domain, data, networking), while delivering a polished Android experience and paving the way for additional platforms.
A standout capability is robust offline support, enabling officers to work in remote areas and sync when connectivity returns—so underserved clients can still access essential financial services.
- Authored 50+ pull requests across the Android client.
- Migrated UI from Jetpack Compose to KMP and CMP, aligning with the org’s cross-platform strategy.
- Refactored client screens to match latest Figma designs, ensuring consistency and modern UX.
- Fixed crashes, improved state handling, and streamlined code for better readability and maintainability.
🔗 View merged PRs » auto-updating
| S.No | Title | JIRA Ticket | Pull Request Link |
|---|---|---|---|
| 1 | feat: Migrate :core:ui to KMP | MIFOSAC-401 | PR #2327 |
| 2 | fix : changed some Files to make app run | MIFOSAC-434 | PR #2345 |
| 3 | refactor (core:network) Network converted to KMP | MIFOSAC-402 | PR #2346 |
| 4 | feat : Implementing intent platform Specific and added other Share Utils | MIFOSAC-436 | PR #2347 |
| 5 | feat (core:dataStore) Migrated to KMP | MIFOSAC-330 | PR #2352 |
| 6 | SetUp Application Modules | MIFOSAC-446 | PR #2375 |
| 7 | Home Drawer migrated to CMP | MIFOSAC-447 | PR #2387 |
| 8 | Activate module migrated to CMP | MIFOSAC-413 | PR #2388 |
| 9 | Resolve UnAuthorized error | No JIRA ticket created | PR #2397 |
| 10 | Search module migrated to CMP | MIFOSAC-428 | PR #2399 |
| 11 | Center module migrated to CMP | MIFOSAC-415 | PR #2391 |
| 12 | Collection Sheet module migrated to CMP | MIFOSAC-418 | PR #2396 |
| 13 | Settings Module Enhancements (Theme Change and Clean Up) | MIFOSAC-450 | PR #2403 |
| 14 | Document Module Migration | MIFOSAC-420 | PR #2402 |
| 15 | fix : Loan Module clean up (Api , Viewmodel ) | MIFOSAC-456 | PR #2411 |
| 16 | fix : Group Module (api), added Navigations in Feature Nav Host | MIFOSAC-475 | PR #2413 |
| 17 | fix : UpdateServerConfig (navigation,ui) | MIFOSAC-476 | PR #2414 |
| 18 | fix : Replace Result With DataState in core:dataStore | MIFOSAC-477 | PR #2416 |
| 19 | fix : Create Client | MIFOSAC-469 | PR #2420 |
| 20 | fix : Client Image (Edit , Delete Dialog) | MIFOSAC-480 MIFOSAC-483 |
PR #2421 |
| 21 | feat : Removed mifosng-android module | MIFOSAC-484 | PR #2422 |
| 22 | fix : SavingsAccount With Drawl and Saving Account Deposit screens not loading Serializable error | MIFOSAC-485 | PR #2423 |
| 23 | feat: Refactor SignatureScreen to CommonMain using Compose-Signature Library | MIFOSAC-482 | PR #2425 |
| 24 | fix : Enhance Create Client to Align with development Branch | MIFOSAC-486 | PR #2426 |
| 25 | fix: Create loan API fix | MIFOSAC-473 | PR #2429 |
| 26 | fix : Survey Screens Fixes | MIFOSAC-466 MIFOSAC-467 MIFOSAC-468 |
PR #2436 |
| 27 | chore: clean up unused dependenciese | MIFOSAC-343 | PR #2453 |
| 28 | fix : enable previews in all modules | MIFOSAC-511 | PR #2454 |
| 29 | feat: Add DesignToken file to adapt new ui screens | MIFOSAC-515 | PR #2455 |
| 30 | feat : added listing components ui | MIFOSAC-513 | PR #2456 |
| 31 | feat : added new ui components | MIFOSAC-516 | PR #2457 |
| 32 | feat : Client List New U | MIFOSAC-510 | PR #2458 |
| 33 | feat : Client Profile UI | MIFOSAC-519 | PR #2462 |
| 34 | feat: Client Profile Details UI | MIFOSAC-520 | PR #2463 |
| 35 | feat :update client photo flow | MIFOSAC-522 | PR #2464 |
| 36 | feat: Assign and Unassign Staff UI | MIFOSAC-565 | PR #2465 |
| 37 | feat: Client Transfer New UI Screens | MIFOSAC-564 | PR #2466 |
| 38 | feat: Update Default Account New Screens | MIFOSAC-568 | PR #2467 |
| 39 | feat : Client Closure New UI Screens | MIFOSAC-563 | PR #2468 |
| 40 | feat: Client Collateral New UI Screens | MIFOSAC-567 | PR #2469 |
| 41 | feat : Stepper Component | MIFOSAC-526 | PR #2473 |
| 42 | fix: Firebase distribution | No Jira Ticket Created | PR #2474 |
| 43 | fix: firebase distribution | No Jira Ticket Created | PR #2478 |
| 44 | feat: Migrate Navigation to Type Safe Navigation | MIFOSAC-583 | PR #2476 |
| 45 | feat: navigation bread crumbs | MIFOSAC-580 | PR #2487 |
| 46 | feat: New Loan Account – Details Step Page | MIFOSAC-528 | PR #2491 |
| 47 | feat: New Loan Account – Loan terms Page | MIFOSAC-529 | PR #2494 |
| 48 | feat: Compose Preview Files | MIFOSAC-591 | PR #2496 |
| 49 | feat : New Loan Account – Charges Step Implementation | MIFOSAC-525 | PR #2497 |
| 50 | fix : Loading and Empty states in Client Profile General flows | No Jira Ticket Created | PR #2538 |
| 51 | feat : New Recurring deposits details screen | MIFOSAC-550 | PR #2539 |
| 52 | feat : collateral data screen added | No Jira Ticket Created | PR #2546 |
| Previous UI of Android Client | Current UI of Android Client |
|---|---|
|
|
Repo: openMF/mobile-wallet
About: A Kotlin Multiplatform (KMP) reference implementation of a digital wallet built on Apache Fineract. It supports Android, iOS, desktop, and web platforms using Compose Multiplatform, Ktor/Ktorfit, and Koin to deliver a clean architecture-based wallet with payment capabilities. Developed for both client and merchant use cases, this wallet is optimized for financial inclusion scenarios and aligned with open digital finance frameworks.
- Migrated existing APIs to Self API and updated the flows accordingly.
- Refactored and enhanced UI screens based on the new Self API flows.
- Improved user experience by aligning the app with updated API responses and designs from mentor.
🔗 View merged PRs » auto-updating
| S.No | Title | JIRA Ticket | Pull Request Link |
|---|---|---|---|
| 1 | Readme Updated | No Jira Ticket Created | PR #1818 |
| 2 | Readme Updated | No Jira Ticket Created | PR #1819 |
| 3 | Update Zoom Link with Current Standup Link | No Jira Ticket Created | PR #1854 |
| 4 | fix : Updated Review Transfer bottomSheet | MW-308 | PR #1923 |
| 5 | feat : send money flow change | MW-313 MW-314 MW-315 |
PR #1926 |
| 6 | fix : Specific Transaction History Screen | No Jira Ticket Created | PR #1930 |
| 7 | fix: Send Money Flow Fixes | MW-318 | PR #1933 |
| 8 | feat: Add History Screen filter Bottom Sheet | MW-319 | PR #1935 |
| 9 | feat: Home Transactions Filter | MW-321 | PR #1936 |
| 10 | fix: Handle No Accounts in Home and Serializable Error in Transactions | No Jira Ticket Created | PR #1938 |
Repo: openMF/Mifos-mobile
About: A Kotlin Multiplatform client for end users, built on the MifosX Self-Service platform. It lets customers securely view and transact on their own accounts and loans. Compared to staff apps, data is a curated subset appropriate for self-service. Shared KMP modules power business logic across Android, iOS, Desktop, and Web, with Kotlin/Compose UIs providing a streamlined, consistent experience.
- Authored 39+ pull requests in the mifos-mobile.
- Migrated modules such as :core:datastore, :core:ui, :libs:passcode, settings, savings, help, and location to KMP/CMP.
- Implemented new UIs for Transaction, Charges, Beneficiary, About Us, App Info, Authorization Passcode, and Password screens based on Figma.
- Fixed issues including API updates, account validation, filter logic, navigation mismatches, and empty states, improving stability and usability.
- Added enhancements like Scaffold structure, QR code binding, localization strings, and progress/state handling for a modern UX.
🔗 View merged PRs » auto-updating
| S.No | Title | JIRA Ticket | Pull Request Link |
|---|---|---|---|
| 1 | Update Status Bar to Match Theme Colors Dynamically | No Jira Ticket Created | PR #2722 |
| 2 | feat: Migrated :core:datastore module to KMP | MM-108 | PR #2737 |
| 3 | Feat: [:core:ui] - Migrated to KMP | MM-113 | PR #2749 |
| 4 | Feat: [:libs:passcode] - Migrated to KMP | MM-122 | PR #2753 |
| 5 | feat(feature:help) migrate to cmp | MM-187 | PR #2780 |
| 6 | feature/Savings converted to CMP | No Jira Ticket Created | PR #2804 |
| 7 | feat: Migrated :feature:settings module to CMP | No Jira Ticket Created | PR #2806 |
| 8 | Updated zoom link | No Jira Ticket Created | PR #2813 |
| 9 | feat(feature:location) Migrated to CMP | MM-218 | PR #2820 |
| 10 | Added Scaffold to AboutUs Page | MM-230 | PR #2825 |
| 11 | fix: Top Bar Titles updation | MM-231 | PR #2827 |
| 12 | feat: Transaction Screen item UI | MM-284 | PR #2864 |
| 13 | fix: Customer Account Validation | No Jira Ticket Created | PR #2866 |
| 14 | feat: Charges Screen UI | MM-280 | PR #2863 |
| 15 | feat: Charges paid and unpaid views | MM-287 | PR #2871 |
| 16 | feat: Payfrom DropDown Card UI | MM-291 | PR #2873 |
| 17 | fix: changed username to email | No Jira Ticket Created | PR #2876 |
| 18 | feat: Transaction screen UI | MM-278 | PR #2874 |
| 19 | feat: Transaction screen Filter UI | MM-288 | PR #2878 |
| 20 | updated progress bars and states | MM-296 | PR #2881 |
| 21 | fix: Make Filter Checkbox Title Clickable Horizontally (Not Just Checkbox) | MM-297 | PR #2882 |
| 22 | feat: bind qr code with savings and loan details screens | MM-302 | PR #2887 |
| 23 | fix: changed apis to self | MM-315 | PR #2891 |
| 24 | fix: transaction_screen empty ui update | MM-300 | PR #2894 |
| 25 | fix: loan account Filter logic and states | MM-305 | PR #2896 |
| 26 | feat: new ui for make transfer | MM-324 MM-292 |
PR #2893 |
| 27 | feat: ADD Beneficiary new UI | MM-322 | PR #2899 |
| 28 | feat: beneficiary details screen | MM-321 MM-348 |
PR #2905 |
| 29 | fix: Remove Withdraw option from saving account details | MM-335 | PR #2907 |
| 30 | fix: Transaction Filter | MM-334 | PR #2908 |
| 31 | feat: Beneficiary List filters | MM-336 | PR #2909 |
| 32 | feat: navigation setup from settings screen and Help Screen UI | MM-347 | PR #2911 |
| 33 | feat: About us New Ui | MM-343 | PR #2912 |
| 34 | feat: App info New UI | MM-344 | PR #2913 |
| 35 | feat: Authorization Passcode New UI | MM-340 | PR #2915 |
| 36 | feat: Password screen UI | MM-339 | PR #2920 |
| 37 | fix: Home Screen Faq still navigating to old ui screen | MM-353 | PR #2921 |
| 38 | feat: Comment settings unused options | MM-338 | PR #2925 |
| 39 | feat: localisation strings for home module | MM-361 | PR #2927 |
This summer has played a key role in my development through the Mifos Summer of Code internship. My journey with Mifos has been truly transformative—from starting as an open-source contributor struggling to raise a single PR, to becoming a Mifos Summer of Code Intern, having raised 100+ PRs and reviewed 150+ PRs. I contributed to redesigning the Mifos Mobile UI and Android Client UI, and helped migrate both Mifos Mobile and Android Client modules to Kotlin Multiplatform (KMP), modernizing legacy code and improving maintainability across platforms.
Through this experience, I gained hands-on knowledge in building stunning UIs, resolving complex API and network issues, working with Room-based data layers, Jetpack Compose, multi-modular architecture, and understanding and improving legacy code across multiple repositories. Participating in daily standups, reviewing peers’ work, and incorporating feedback helped me grow not only technically, but also in communication, collaboration, and ownership.
I hope to remain involved with the project and the open-source community, contributing to its ongoing development and helping new contributors ramp up. Huge thanks to Mifos, and especially my mentor Rajan Maurya, for their guidance, trust, and fast feedback loops that made this journey possible.
In addition to feature work, I actively reviewed PRs to help maintain consistency and quality across the Mifos ecosystem.















