BillBuddy is a powerful and intuitive bills and expense management application built using the Multi-Module architecture. With its easy-to-use interface, BillBuddy allows users to keep track of their expenses and bills in a smart and efficient way. With BillBuddy, users can monitor their spending, track their bills and payments, and get reminders when payments are due.

Tech stack & Open-source libraries

  • Minimum SDK level 21
  • Kotlin - First class and official programming language for Android development.
  • Jetpack
    • Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.
    • ViewModel: Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
    • Room: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
  • Jetpack Compose - Jetpack Compose is Android’s modern toolkit for building native UI
  • Coroutines - For asynchronous and more..
  • Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
  • Dependency Injection -
    • Hilt-Dagger - Standard library to incorporate Dagger dependency injection into an Android application.
    • Hilt-ViewModel - DI for injecting ViewModel.
      Firebase Authentication - Firebase Authentication provides backend services, easy-to-use SDKs.
  • Coil - An image loading library for Android backed by Kotlin Coroutines.


NoteApp adopted modularization strategies below:

  • Reusability: Modulizing reusable codes properly enable opportunities for code sharing and limits code accessibility in other modules at the same time.
  • Parallel Building: Each module can be run in parallel and it reduces the build time.
  • Strict visibility control: Modules restrict to expose dedicated components and access to other layers, so it prevents they're being used outside the module
  • Decentralized focusing: Each developer team can assign their dedicated module and they can focus on their own modules.

For more information, check out the Guide to Android app modularization.


Developed by 2022 arfinhosainn (Arfin Hosain)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.