Hi, Iβm Jilakara Revanth Kumar, a B.Tech student in Computer Science and Engineering at RGUKT RK Valley. Iβm passionate about Android development and excited to contribute to Mifos Mobile Applications as part of Mifos Summer of Code (MSOC) 2025.
As a part of this summer under MSOC, I am focusing on migrating the Mifos Android Client Field Officer Application to Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP). This migration will help the app become more modern, maintainable, and scalable across platforms, ultimately improving accessibility and performance for field officers and end users.
This blog will serve as a weekly progress tracker of my contributions, learnings, and challenges throughout the program. I hope it inspires and informs future contributors!
The goal of this project is to migrate the existing Mifos Android Field Officer application to Kotlin Multiplatform (KMP) while enhancing its architecture, performance, and maintainability.
This migration aims to make the app run seamlessly across Android, iOS, Desktop, and Web, reducing code duplication and improving the developer experience.
Key aspects of this project include:
- π Replacing the existing RxJava-based network layer with
fineract-client-kmp-sdk
using Kotlin coroutines and Flow. - π² Introducing dynamic navigation graphs based on user roles to support multiple user types, not just Field Officers.
- π‘ Implementing offline sync functionality for uninterrupted access.
- β Increasing testing coverage with unit and integration tests.
- π Enhancing CI/CD automation using GitHub Actions and Fastlane for streamlined Play Store releases.
By the end of this project, the Mifos Android Client will be a modular, scalable, and cross-platform solution, delivering a better experience for both developers and users.
π For more details, have a look at my comprehensive proposal submitted as a GSoC Proposal to Mifos.
Before officially beginning my Mifos Summer of Code (MSOC) 2025 journey, I actively contributed to the Mifos Mobile Applications for over 7 months. My focus was primarily on:
- Migrating the existing Mifos Android applications to Kotlin Multiplatform (KMP).
- Fixing UI/UX bugs and improving code structure across modules.
π Highlights:
- 19 Pull Requests successfully merged before MSOC.
- Migrated 7 modules in the
mifos-mobile
repository. - Contributed to 2 modules in the legacy
android-client
project.
Iβm incredibly thankful to the amazing Mifos community for their constant support and guidance throughout this journey.
Thanks to Mifos:
- I gained in-depth knowledge of Kotlin Multiplatform (KMP).
- Improved significantly in Android architecture patterns, SOLID principles, and clean code practices.
- Sharpened my version control and collaborative development skills.
This strong foundation has set me up to confidently take on the challenges of MSOC!
This section will document my weekly progress throughout the Mifos Summer of Code (MSOC) 2025 journey. Each row summarizes the work done during a specific week, and links to a dedicated README for more in-depth insights.
Week | Timeline | Worked On | Detailed Explanation |
---|---|---|---|
Week 0 | May 25 β May 31 | Setup application modules for CMP, Migrated Home Drawer to Compose Multiplatform | Week 0 Details |
Week 1 | June 1 β June 7 | Resolved unauthenticated error, started migrating Collection Sheet, Center, and Document modules (draft PRs); Search module migrated | Week 1 Details |
Week 2 | June 8 β June 14 | Migrated Center, Collection Sheet, and enhanced Settings module; reviewed 5+ module migration PRs | Week 2 Details |
Week 3 | June 15 β June 21 | Migrated Document Module, Co-Authored Loan Module; reviewed 2 PRs | Week 3 Details |
Week 4 | June 22 β June 28 | Finalized Report Module Migration, Cleaned Up Loan & Group Modules, Reviewed 8+ PRs | Week 4 Details |
Week 5 | June 29 β July 5 | Addressed Client Image Fixes, Removed unnecessary Module, Refactored SignatureScreen, Reviewed 9+ PRs | Week 5 Details |
Week 6 | July 6 β July 12 | Enhanced Create Client to align with development branch, fixed Create Loan API, applied Survey Screens fixes | Week 6 Details |
Week 7 | July 13 β July 19 | No major contributions done; no PR merged | Week 7 Details |
Week 8 | July 20 β July 26 | Implemented Transaction Screen item UI, fixed Customer Account validation, developed Charges Screen UI | Week 8 Details |
Week 9 | July 27 β Aug 2 | Added Charges paid/unpaid views, Payfrom Dropdown Card UI, username-to-email change, Transaction Screen & Filter UI, updated progress bars & states, QR code binding, API updates, Transaction empty UI fixes, loan account filter fixes, new Make Transfer UI | Week 9 Details |
Week 10 | Aug 3 β Aug 9 | Added Beneficiary new UI, Beneficiary details screen, removed Withdraw option from savings account details, Transaction Filter fixes, Beneficiary list filters, navigation setup from settings, new Help, About Us, App Info, Authorization Passcode, and Password UIs, fixed FAQ navigation | Week 10 Details |
Week 11 | Aug 10 β Aug 16 | Commented out unused settings options, added localization strings for Home module | Week 11 Details |
Week 12 | Aug 17 β Aug 23 | Cleaned up unused dependencies, enabled previews in all modules, added DesignToken file for new UI screens, implemented listing & new UI components, developed Client List, Client Profile, and Client Profile Details UIs | Week 12 Details |
Week 13 | Aug 24 β Aug 30 | Updated client photo flow, implemented Assign/Unassign Staff UI, Client Transfer, Update Default Account, Client Closure, and Client Collateral UIs, added Stepper component, fixed Firebase distribution issues | Week 13 Details |
Week 14 | Aug 31 β Sep 6 | Migrated navigation to Type Safe Navigation, added navigation breadcrumbs, developed New Loan Account Details & Loan Terms pages, created Compose Preview files | Week 14 Details |
S.No | Week | Title | JIRA Ticket | Pull Request Link |
---|---|---|---|---|
1 | Week 0 | SetUp Application Modules | MIFOSAC-446 | PR #2375 |
2 | Home Drawer migrated to CMP | MIFOSAC-447 | PR #2387 | |
3 | Activate module migrated to CMP | MIFOSAC-413 | PR #2388 | |
4 | Week 1 | Settings module migrated to CMP (Co-Authored) | MIFOSAC-429 | PR #2390 |
5 | Resolve UnAuthorized error | No JIRA ticket created | PR #2397 | |
6 | Search module migrated to CMP | MIFOSAC-428 | PR #2399 | |
7 | Week 2 | Center module migrated to CMP | MIFOSAC-415 | PR #2391 |
8 | Collection Sheet module migrated to CMP | MIFOSAC-418 | PR #2396 | |
9 | Settings Module Enhancements (Theme Change and Clean Up) | MIFOSAC-450 | PR #2403 | |
10 | Week 3 | Document Module Migration | MIFOSAC-420 | PR #2402 |
11 | Loan Module Migration (Co-Authored) | MIFOSAC-422 | PR #2404 | |
12 | Week 4 | Report Module Migration (Co-Authored) | MIFOSAC-426 | PR #2392 |
13 | fix : image rendering in client and payment screen (Co-Authored) | MIFOSAC-455 | PR #2410 | |
14 | fix : Loan Module clean up (Api , Viewmodel ) | MIFOSAC-456 | PR #2411 | |
15 | fix : Group Module (api), added Navigations in Feature Nav Host | MIFOSAC-475 | PR #2413 | |
16 | fix : UpdateServerConfig (navigation,ui) | MIFOSAC-476 | PR #2414 | |
17 | fix : Replace Result With DataState in core:dataStore | MIFOSAC-477 | PR #2416 | |
18 | fix : Create Client | MIFOSAC-469 | PR #2420 | |
19 | Week 5 | fix : Client Image (Edit , Delete Dialog) | MIFOSAC-480 MIFOSAC-483 |
PR #2421 |
20 | feat : Removed mifosng-android module | MIFOSAC-484 | PR #2422 | |
21 | fix : SavingsAccount With Drawl and Saving Account Deposit screens not loading Serializable error | MIFOSAC-485 | PR #2423 | |
22 | feat: Refactor SignatureScreen to CommonMain using Compose-Signature Library | MIFOSAC-482 | PR #2425 | |
23 | Week 6 | fix : Enhance Create Client to Align with development Branch | MIFOSAC-486 | PR #2426 |
24 | fix: Create loan API fix | MIFOSAC-473 | PR #2429 | |
25 | fix : Survey Screens Fixes | MIFOSAC-466 MIFOSAC-467 MIFOSAC-468 |
PR #2436 | |
26 | Week 8 | feat : Transaction Screen item UI | MM-284 | PR #2864 |
27 | fix: Customer Account Validation | No Jira Ticket Created | PR #2866 | |
28 | feat : Charges Screen UI | MM-280 | PR #2863 | |
29 | Week 9 | feat : Charges paid and unpaid views | MM-287 | PR #2871 |
30 | feat: Payfrom DropDown Card UI | MM-291 | PR #2873 | |
31 | fix: changed username to email | No Jira Ticket Created | PR #2876 | |
32 | feat: Transaction screen UI | MM-278 | PR #2874 | |
33 | feat: Transaction screen Filter UI | MM-288 | PR #2878 | |
34 | updated progess bars and states | MM-296 | PR #2881 | |
35 | fix : Make Filter Checkbox Title Clickable Horizontally (Not Just Checkbox) | MM-297 | PR #2882 | |
36 | feat : bind qr code with savings and loan details screens | MM-302 | PR #2887 | |
37 | fix : changed apis to self | MM-315 | PR #2891 | |
38 | fix : transaction_screen empty ui update | MM-300 | PR #2894 | |
39 | fix: loan account Filter logic and states | MM-305 | PR #2896 | |
40 | feat: new ui for make transfer | MM-324 MM-292 |
PR #2893 | |
41 | Week 10 | feat : ADD Beneficiary new UI | MM-322 | PR #2899 |
42 | feat: beneficiary details screen | MM-321 MM-348 |
PR #2905 | |
43 | fix: Remove Withdraw option from saving account details | MM-335 | PR #2907 | |
44 | fix : Transaction Filter | MM-334 | PR #2908 | |
45 | feat : Beneficiary List filters | MM-336 | PR #2909 | |
46 | feat: navigation setup from settings screen and Help Screen UI | MM-347 | PR #2911 | |
47 | feat: About us New Ui | MM-343 | PR #2912 | |
48 | feat: App info New UI | MM-344 | PR #2913 | |
49 | feat: Authorization Passcode New UI | MM-340 | PR #2915 | |
50 | feat : Password screen UI | MM-339 | PR #2920 | |
51 | fix : Home Screen Faq still navigating to old ui screen | MM-353 | PR #2921 | |
52 | week 11 | feat: Comment settings unused options | MM-338 | PR #2925 |
53 | feat: localisation strings for home module | MM-361 | PR #2927 | |
54 | week 12 | chore: clean up unused dependenciese | MIFOSAC-343 | PR #2453 |
55 | fix : enable previews in all modules | MIFOSAC-511 | PR #2454 | |
56 | feat: Add DesignToken file to adapt new ui screens | MIFOSAC-515 | PR #2455 | |
57 | feat : added listing components ui | MIFOSAC-513 | PR #2456 | |
58 | feat : added new ui components | MIFOSAC-516 | PR #2457 | |
59 | feat : Client List New U | MIFOSAC-510 | PR #2458 | |
60 | feat : Client Profile UI | MIFOSAC-519 | PR #2462 | |
61 | feat: Client Profile Details UI | MIFOSAC-520 | PR #2463 | |
62 | week 13 | feat :update client photo flow | MIFOSAC-522 | PR #2464 |
63 | feat: Assign and Unassign Staff UI | MIFOSAC-565 | PR #2465 | |
64 | feat: Client Transfer New UI Screens | MIFOSAC-564 | PR #2466 | |
65 | feat: Update Default Account New Screens | MIFOSAC-568 | PR #2467 | |
66 | feat : Client Closure New UI Screens | MIFOSAC-563 | PR #2468 | |
67 | feat: Client Collateral New UI Screens | MIFOSAC-567 | PR #2469 | |
68 | feat : Stepper Component | MIFOSAC-526 | PR #2473 | |
69 | fix: Firebase distribution | No Jira Ticket Created | PR #2474 | |
70 | fix: firebase distribution | No Jira Ticket Created | PR #2478 | |
71 | week 14 | feat: Migrate Navigation to Type Safe Navigation | MIFOSAC-583 | PR #2476 |
72 | feat: navigation bread crumbs | MIFOSAC-580 | PR #2487 | |
73 | feat:New Loan Account β Details Step Page | MIFOSAC-528 | PR #2491 | |
74 | feat:New Loan Account β Loan terms Page | MIFOSAC-529 | PR #2494 | |
75 | feat: Compose Preview Files | MIFOSAC-591 | PR #2496 | |
76 | Week 15 | feat : New Loan Account β Charges Step Implementation | MIFOSAC-525 | PR #2497 |
77 | fix : Updated Review Transfer bottomSheet | MW-308 | PR #1923 | |
78 | feat : send money flow change | MW-313 MW-314 MW-315 |
PR #1926 | |
79 | fix : Specific Transaction History Screen | No Jira Ticket Created | PR #1930 | |
80 | fix: Send Money Flow Fixes | MW-318 | PR #1933 | |
81 | feat: Add History Screen filter Bottom Sheet | MW-319 | PR #1935 |
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 | Readme Updated | No Jira Ticket Created | PR #1818 |
13 | Readme Updated | No Jira Ticket Created | PR #1819 |
14 | Update Zoom Link with Current Standup Link | No Jira Ticket Created | PR #1854 |
15 | feat: Migrate :core:ui to KMP | MIFOSAC-401 | PR #2327 |
16 | fix : changed some Files to make app run | MIFOSAC-434 | PR #2345 |
17 | refactor (core:network ) Network converted to KMP | MIFOSAC-402 | PR #2346 |
18 | feat : Implementing intent platform Specific and added other Share Utils | MIFOSAC-436 | PR #2347 |
19 | feat (core:dataStore) Migrated to KMP | MIFOSAC-330 | PR #2352 |