A transaction management android app which allows you to verify records from both parties before addition.

Overview

Transact - Transaction Management Application

Description

Whenever we lend money to some people, friends, colleagues, we need to keep track of it to return the money to them timely. The same goes the other way round when others lend money from us. In earlier times, people used to use a personal notebook for tracking these details. However, the notebook is very fragile and can be easily lost, corrupted, or damaged.

Keeping transaction records in the notebook can prove to be very disadvantageous for the people who significantly remain dependent on the records. Few examples of this could be the small businesspersons, store owners. Customers buy products from them, and they tend to pay later. Businesspersons have to enter all the records in the notebook manually. The major problem comes when they need to query the whole manually and need to filter out all the records of a particular person from the whole list of data. This process was tiresome, and the store owner could run into a significant loss if he could not recollect the money back.

So we need an affordable application that can keep track of all the transactions that users make. The purpose of the application would be to automate all of these mentioned limitations. The user needs to filter records and based on the filter. All the records would be displayed to the user in a list. Thus it would save time and energy, and also, the user will not run at a loss.

One of the most popular applications in the current market related to Transaction Management Application is “KhataBook.” It currently features over 10 Million+ downloads by users around the Globe. However, the application as of now has one considerable disadvantage. It does not ensure verification of the transaction records.

Suppose there are two parties involved in the transaction. Let us name them Party A and the other one Party B. Suppose A lends money to B. Let it be amount X. In the KhataBook application, the user can enter any amount, and it goes into the recordings without any verification. Now let us assume there were any malpractices involved from Party A, then he could record it any number, suppose ten times of X. That where the present “KhataBook” application does not provide trusted recordings.

So the primary motivation in building this transaction recording application is to build a verification layer over the recordings so that any of the transactions recorded in this application is adequately trusted and verified by both parties involved in that transaction.

Usage

For installation and usage of this application Navigate to: /APK/Transact.apk download and install the application into your android phones. <Recommended Android 8.0(Oreo) version and above>

Demo Video

Application Screenshots

  • First the user must be authenticated. Here user needs to supply his mobile number, which is followed by an OTP verification.

  • Following is the home screen for the application. It holds 3 major buttons, i.e, to view transactions, to add transaction, or to verify transaction.

  • Now suppose Person A, having Mobile Number +918016314309 wants to add a record about Person having mobile number +919434792685. He enters all the details and thus the required QR is generated.

  • To verify, person B now scans the QR. He then accepts the transaction request.

  • Now we can see that both records got successfully stored in their respective mobile. Left image is corresponding to Person A and right image is of Person B.

  • Also additionally we can query transaction record based on a particular contact.

Code structure

This application is created mainly by keeping Clean Code MVVM Architecture into our point of vision.

What are the Different Layers of the Project?

  • Data layer: Would dispense the required data for the application to the domain layer by implementing interface exposed by the domain.

    • Remote Database: Firebase Realtime Database is used to exchange the acceptance/rejecection states for the transaction records.
    • Local Database: The Room persistence library provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite. Defining the Room entity, setting up the DAO Interface and building the Database Builder is done in this layer.
  • Domain layer: This will be the most generic layer of the three. It will connect the presentation layer with the data layer. This is the layer where app-related business logic will be executed. All the application use-cases and the repositories interfaces reside in the domain layer.

    • Use Cases: Use cases are the application logic executor. As the name depicts each functionality can have its separate use case. With more granularity of the use case creation, it can be reused more often.
    • Repositories: It specifies the functionalities required by the use cases which is implemented by the data layer.
  • Presentation layer: The presentation layer provides the UI implementation of the application. This layer internally implements MVVM (Model-View-ViewModel) architecture.

    • Why MVVM Architecture over other patterns: MVVM architecture is a Model-View-ViewModel architecture that removes the tight coupling between each component. Most importantly, in this architecture, the children don't have the direct reference to the parent, they only have the reference by observables. Also View Model store and manage UI-related data in a lifecycle conscious way. It allows data to survive configuration changes such as screen rotations.

Package Structure

com.sayantanbanerjee.transactionmanagementapp    # Root Package
.
├── data                         # For data handling.
│   ├── db                       # Local Persistence Database. Room (SQLite) database.
│   ├── model                    # Model Classes.
|   ├── preference               # Shared Preference.
│   └── repository               # Defining the AppRepository class which provides connection 
│ 			               to LocalDataSource and RemoteDataSource classes.
|
├── domain                       # Serves connection between Data layer to Presenter Layer.          
│   ├── repository               # Defining the AppRepository interface.
│   ├── usecases                 # Use Cases of the Project.      
|
├── presenter                    # Activity/View layer.
│   ├── di                       # Dependency Injection module classes.  
│   ├── AddRecord                # Add Record Activity(to add a new record) related View Model and View Model Factory class.
│   ├── ScanningActivity         # Scanning Activity(to verify other records) related View Model and View Model Factory class. 
│   ├── TransactionActivity      # Transaction Activity(to view all the transactions) related View Model, Factory and Adapter class.
|
└── utils                        # Utility Classes / Kotlin extensions

Technologies and Libraries

  • Kotlin - Official programming language for Android development.
  • Coroutines - For working with asynchronous threading related task.
  • 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. Thus they help us to separate business logic apart from the UI logic and helps us in designing proper architecture.
    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on configuration changes.
    • DataBinding - The Data Binding Library is a support library that allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
    • Room - The Room persistence library provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite.
  • Dependency Injection -
    • Hilt - Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
  • Firebase Realtime Database - The Firebase Realtime Database is a cloud-hosted database. Data is stored as JSON and synchronized in realtime to every connected client.
  • Zxing - ZXing ("zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages.

Built With

  • Android Studio

Author

License

MIT License

Copyright (c) 2021 Sayantan Banerjee

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
You might also like...
This component allows you to interact with remote machine via SSH. You can execute commands or run scripts located on that machine

th2 act ssh (1.2.0) Overview Provides user with the ability to execute specified scripts or commands with the parameter he needs Custom resources for

A mobile application that allows you to get random information every time you enter the application.
A mobile application that allows you to get random information every time you enter the application.

Knowledge Repository A mobile application that allows you to get random information every time you enter the application. Google Play Store : Screensh

Application that allows to search some products and display them in a list, also allows to add some product to the shopping cart and remove it
Application that allows to search some products and display them in a list, also allows to add some product to the shopping cart and remove it

Application that allows to search some products and display them in a list, also allows to add some product to the shopping cart and remove it

A Task Management and Habit-building App, representating my journey in Android as well as my first Kotlin App. 🤗 ✨
A Task Management and Habit-building App, representating my journey in Android as well as my first Kotlin App. 🤗 ✨

A Task Management and Habit-building App, representating my journey in Android as well as my first Kotlin App. 🤗 ✨

jtx Board allows you to manage your Journals (like meeting minutes), Notes and Tasks in one Android app. The app is compatible with the iCal standard (RFC5545) and is integrated with DAVx5 to allow the synchronisation of entries through CalDAV. ApnaKhata is a free staff attendance and payroll management android app
ApnaKhata is a free staff attendance and payroll management android app

ApnaKhata ApnaKhata is a free staff attendance and payroll management android app that can be used by owners and employees according to their perspect

This todolist android app is for task management and it is made using kotlin
This todolist android app is for task management and it is made using kotlin

This new android application named 'TODO-LIST APP' is created by Biswarup Bhattacharjee, student of BTECH, in University of Engineering and Management, Kolkata.

An android app which allows users to display the data of any excel sheet in rows and columns
An android app which allows users to display the data of any excel sheet in rows and columns

ExcelReader App description An android app which allows users to display the data of any excel sheet in rows and columns. Features Display data of an

Android app that helps you keep track of the medical supplements you need to take and how you spend your days
Android app that helps you keep track of the medical supplements you need to take and how you spend your days

Android app that helps you keep track of the medical supplements you need to take and how you spend your days, similar to a bullet journal. It also allows you to reflect on your day, week, year, etc.

Owner
Sayantan Banerjee
Google Android Study Jams Facilitator | Dual Android Startup Internship | Competitive Coder | Blogger | IIIT Gwalior '23
Sayantan Banerjee
An Android app that pulls the credit score information from a given endpoint and displays the records as a donut view

ClearScoreTest This is an Android app that pulls the credit score information fr

Abayomi Akanji 1 Jan 13, 2022
Whatsapp based Phone number verification.Verify your phone number easily through whatsapp

Whatsapp Based Login Try this to implement fastest phone number verification system [ ⚡ ] Verify your phone number through whatsapp android LinkedIn B

MorningStar 10 Jun 21, 2022
Tidy up your Android status bar before taking screenshots for the Play Store

DEPRECATED This project no longer works on recent versions of Android. Use Android's build-in Demo mode instead. For the curious, more information abo

Emma Vanbrabant 891 Nov 10, 2022
SimpleTodo - An android app that allows building a todo list and basic todo items management functionality

Pre-work - SimpleTodo SimpleTodo is an android app that allows building a todo l

null 0 Dec 31, 2021
SimpleToDo is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item.

SimpleToDo is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item.

null 0 Jan 3, 2022
Todo List Application is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item

Todo List Application is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item

null 0 Jan 22, 2022
A console-based productivity app involving both To-Do Lists and Goal tracking

This is a console-based productivity app involving both To-Do Lists and Goal tracking. It allows users to create To-Dos, check them off, and filter the display between complete/incomplete items

Joel Jossie 3 Dec 25, 2022
An Animated Scrolling View for React Native applications, supported on both iOS and Android

react-native-focused-scroll An Animated Scrolling View for React Native applications, supported on both iOS and Android Preview react-native-focus-scr

Fatemeh Marzoughi (Saba) 3 Aug 12, 2022
React Native Stone SDK Implementation (Support for both Mobile and POS versions)

react-native-stone-pos Stone Android POS Native Module Installation Stone has a private packageCloud repository, so we need to have your token before

8Sistemas 9 Dec 10, 2022
App that allows you juice lemons until you have a glass of lemonade!! 🍹

Project: Lemonade App - Starter Code Starter code for the first independent project for [Android Basics in Kotlin] Introduction This is the starter co

Shaima Alghamdi 4 Nov 28, 2022