| Splash screen | Onboarding screen |
|---|---|
![]() |
![]() |
| Login screen | Signup screen |
![]() |
![]() |
| Home screen (home tab) | Send Money screen |
![]() |
![]() |
| Transaction history screen | Profile screen |
![]() |
![]() |
Mula is a slang word for money. This is a modern, cross-platform fintech application designed to make money management fast, secure, and effortless. Built with Flutter π and Firebase π₯, Mula delivers a smooth, feature-rich experience on both Android and iOS.
Whether youβre sending money to friends, tracking your spending, or managing your digital wallet, Mula keeps everything at your fingertips with an intuitive design and rock-solid security.
Mula is designed for individuals and groups in Africa and beyond who need fast, secure, and flexible ways to move money. Key user segments include:
- πΌ Freelancers β Professionals on platforms like Upwork or Fiverr receiving international payments.
- π Small Business Owners & Market Vendors β Accepting digital payments instead of cash, enabling safer and faster transactions.
- π Secure Authentication β Login with Firebase Auth, plus app-level PIN protection for extra security.
- π³ Wallet Dashboard β View your balance, recent transactions, and quick actions in one place.
- πΈ Instant Money Transfers β Send and receive money in multiple currencies with real-time processing.
- π Transaction History & Insights β Track your spending, filter by date/type, and view analytics.
- π€ Profile & Settings β Manage your personal details, update your PIN, and customize preferences.
- π Dark & Light Mode β Adaptive themes for a better user experience.
- π¨ Frontend: Flutter v3.38.5, Dart v3.10.4
- βοΈ Backend & Auth: Firebase
- πΎ Storage: Firebase Firestore
- ποΈ Local Storage: SQLite (for offline data and PIN storage)
- β‘ State Management: BLoC
- ποΈ Architecture: MVVM (separation of logic, UI, and services)
- ποΈ Libraries/packages:
- crypto - PIN hashing
- toastification - display toast notifications in the app
- sqlflite - for creating and managing SQLite db
- flutter_native_splash - for creating and generating app splash screen
- flutter_launcher_icons - for creating and generating launcher icons
- uuid - for generating UUID for id fields in Firebase collections
- intl - for applying date and number formats
Mula was born out of a challenge to design and build a user-centered fintech app using Flutter. The task was to create a functional mobile banking prototype for a chosen target audience, focusing on:
- π± Mobile-first product design with strong UX.
- π Modular, maintainable Flutter architecture with clear separation of concerns.
- β‘ Smooth state management, local storage, and routing.
- π€ Real-world problem-solving for underserved markets, especially in Africa.
This wasnβt just a coding challenge β it was an exercise in product thinking, aligning technical execution with genuine user needs while balancing feasibility, scalability, and user experience.
NOTE:
-
To run this project, you MUST install Flutter SDK on your machine. Refer to Flutter's documentation and follow a step-by-step guide on how you can install Flutter SDK on your OS.
-
Make sure you have installed Android Studio or a text editor of your choice - VS Code or XCode.
-
Make sure your machine supports virtualization - required to run an emulator. If it doesn't, don't worry, you can install
scrcpyon your machine or use Android Studio'smirror devicefeature.
Scrcpy Installation guide
- Git clone
Clone this repository by opening your terminal/CMD and change the current working directory to Desktop - use cd Desktop command.
cd Desktop
git clone https://github.com/morikeli/mula.git- Open the cloned repository on your text editor and run this command:
cd mula # or change dir in the terminal and run the `flutter run` command
flutter run- Make sure you have a very strong internet connection so that the necessary gradle files can be downloaded. These files are necessary to build the project
apkfile.
Keep in mind:
- When building the application for the first time, it may take 10 - 15 minutes to finish the installation and build process.
- When running the application using the
flutter runcommand, it may take atleast a minute to install the build files on a physical device.
Incase of a bug or you wish to make a contribution, create a new branch using the git command git checkout -b <name of your branch> and create a pull request. Wait for review.
You can also open an issue using the Issues tab. The reported issue will be reviewed and a solution may be provided.
Don't forget to star the repo ππ
- Non-functional features
The features outlined below are non-functional:
- Some list tile and icons (e.g. icon button to add/update profile pic) in the profile screen are placeholder icon.
- Forgot password functionality. It uses dummy data.
- Profile pictures are static.







