Mobile Wallet is an Android-based framework for mobile wallets based on top of Fineract. The app follows clean architecture and contains a core library module that can be used as a dependency in any other wallet based project. It is developed at MIFOS together with a global community.
mifospay-android
run configuration and click run.mifospay-desktop
run configuration and click run.mifospay-web-js
run configuration and click run.Module | Progress | Desktop supported | Android supported | iOS supported | Web supported(JS) | Web supported(WASM-JS) |
---|---|---|---|---|---|---|
mifospay-android | Done | ✅ | ✅ | ❔ | ✅ | ❔ |
mifospay-desktop | Done | ✅ | ✅ | ❔ | ✅ | ❔ |
mifospay-web | Done | ✅ | ✅ | ❔ | ✅ | ❔ |
mifospay-ios | NO OP | ❌ | ❌ | ❌ | ❌ | ❌ |
:core:analytics | Done | ❌ | ✔️ | ❔ | ❌ | ❔ |
:core:common | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:core:data | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:core:datastore | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:core:datastore-proto | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:core:designsystem | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:core:domain | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:core:model | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:core:network | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:core:ui | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:auth | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:editpassword | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:faq | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:history | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:home | Done | ✅ | ✅ | ❔ | ✅ | ❌ |
:feature:profile | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:settings | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:payments | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:finance | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:account | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:invoices | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:kyc | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:make-transfer | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:merchants | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:notification | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:qr | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:receipt | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:request-money | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:saved-cards | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:send-money | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:standing-instruction | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
:feature:upi-setup | Done | ✅ | ✅ | ❔ | ✅ | ✅ |
✅: Functioning properly
❔: Not yet tested, but expected to work
✔️: Successfully compiled
❌: Not functioning, requires further attention
:warning: We are fully committed to implement Jetpack Compose and moving ourself to support
kotlin multi-platform
. If you are sending any PR regarding XML changes
we will not
consider at this moment but converting XML to jetpack compose are most welcome. If you sending any PR regarding logical changes in Activity/Fragment you are most welcome.
Development | Chat |
---|---|
Mifos boasts an active and vibrant contributor community, Please join us on slack. Once you've joined the mifos slack community, please join the #mobile-wallet
channel to engage with mobile-wallet development. If you encounter any difficulties joining our Slack channel, please don't hesitate to open an issue. This will allow us to assist you promptly or send you an invitation.
Thank you for your interest in contributing to the Mobile Wallet project by Mifos! We welcome all contributions and encourage you to follow these guidelines to ensure a smooth and efficient collaboration process.
The issues should be raised via the GitHub issue tracker. For Issue tracker guidelines please click here. All fixes should be proposed via pull requests. For pull request guidelines please click here. For commit style guidelines please click here.
We have the following branches :
dev All the contributions should be pushed to this branch. If you're making a contribution, you are supposed to make a pull request to dev. Please make sure it passes a build check on Travis.
It is advisable to clone only the development branch using the following command:
git clone -b <branch> <remote_repo>
With Git 1.7.10 and later, add --single-branch to prevent fetching of all branches. Example, with development branch:
git clone -b dev --single-branch https://github.com/username/mobile-wallet.git`
master The master branch contains all the stable and bug-free working code. The development branch once complete will be merged with this branch.
Fineract Instance: demo.mifos.io
Username: venus
Password: Venus2023#
Before you begin, you should have already downloaded the Android Studio SDK and set it up correctly. You can find a guide on how to do this here: Setting up Android Studio.
Fork the Git Repository
Forking the repository is the first step to start contributing. Click on the "Fork" button in the top right corner of the Mobile Wallet (Mifos Pay) repository to create your own fork.
Forking creates a copy of the project under your GitHub account. This enables you to work on changes without affecting the original repository directly.
Clone the Forked Repository
Once you have forked the repository, you need to clone it to your local development environment. Open a terminal or Git Bash and use the following command:
git clone https://github.com/yourUsername/mobile-wallet.git
Replace yourUsername
with your actual GitHub username. Cloning creates a local copy of the repository on your machine, allowing you to make changes and contributions.
Working Locally on Your Cloned Repository
After cloning, navigate to the project directory using the terminal or Git Bash.
Before making any changes, create a new branch dedicated to the feature or bug fix you'll be working on:
git checkout -b "new-branch-name"
Ensure that new-branch-name
reflects the purpose of your changes (e.g., add-payment-feature
or fix-bug-123
).
Make the necessary changes to the files to address the issue you're working on. Once you're done, you will be ready to proceed with verifying and committing your changes.
Perform a Gradle Check
All your pull requests must pass the CI build only then, it will be allowed to merge. Sometimes, when the build doesn't pass you can use these commands in your local terminal and check for the errors,
We've commited to use Material3 design in our project. And added lint check for not to use any M2 libraries in our project. And when adding new library, please make sure to follow the naming convention and place in sequential order(A->Z).
In MacOS, Windows or Linux, you should run the following commands before opening a PR, and make sure to pass all the commands:
In order to enhance our development process, we have implemented Git hooks in our project.
To install these hooks locally, simply run the command ./gradlew installGitHooks
.
This will ensure that the Git hooks are installed on your local machine.
./gradlew check -p build-logic
this checks build-logic configured properly../gradlew spotlessApply --no-configuration-cache
an check and apply formatting to any file../gradlew dependencyGuardBaseline
to generate dependency-guard baseline../gradlew detekt
to check detekt error../gradlew testDemoDebug :lint:test :mifospay:lintProdRelease :lint:lint
to check lint and test error../gradlew build
to build the project../gradlew updateProdReleaseBadging
to update the badging for the project.Or Run the ci-prebuild.sh
or ci-prebuild.bat
script to run all the above commands in one go.
When you've finished making your changes and have tested them locally, it's time to commit your work:
Stage Changes
Use the following command to stage all changes:
git add .
This adds all modified and new files to the staging area, preparing them for the commit.
Commit Changes
Commit your changes with a meaningful commit message that describes the purpose of your changes:
git commit -m "Your commit message goes here"
A good commit message is concise and provides enough context about the changes made. Mifos follows its own commit style guidelines that you must follow. Learn more about it here.
Push Changes
Push your changes to your forked repository on GitHub:
git push origin new-branch-name
Replace new-branch-name
with the name of the branch you created earlier.
Once your changes are pushed to your forked repository, you can initiate a pull request to merge your changes into the main project:
dev
. kotlin-migration-common
.It is common for pull requests to undergo multiple rounds of review before being merged. To keep the Git history clean and organized, you should always squash your commits before finalizing the merge. Here's how you can do it:
Squash your commits:
git rebase -i HEAD~x
Replace x
with the number of commits you want to squash. An interactive rebase will open, allowing you to choose how to combine the commits. Change pick
to squash
(or simply s
) for all but the topmost commit. Save and exit the editor.
Amend the commit message if needed.
git commit --amend
Force push the changes to your forked repository:
git push --force origin your-branch-name
Please note that force pushing rewrites the Git history, so use it with caution.
In some cases, your pull request might encounter merge conflicts when the changes cannot be automatically merged with the main branch. To resolve merge conflicts:
Update your local branch with the latest changes from the main repository:
git fetch upstream
git checkout your-branch-name
git rebase upstream/master
Git will pause when encountering conflicts. Open the affected files, resolve the conflicts manually, and save the changes.
After resolving all conflicts, stage the changes and continue with the rebase:
git add .
git rebase --continue
Finally, force push the changes to your forked repository:
git push --force origin your-branch-name
Your pull request will be updated with the resolved conflicts, and the reviewers can proceed with the review process. Again, don’t forget to squash your commits.
By following these contribution guidelines, you're all set to start contributing to the Mobile Wallet (Mifos Pay) project. We appreciate your efforts and look forward to your valuable contributions. Happy coding!
To get the latest apk fom the Github actions artifacts, follow these steps:
https://github.com/openMF/mobile-wallet/wiki
Click here for more screenshots
Special thanks to the incredible code contributors who continue to drive this project forward.