All Projects β†’ SayantanBanerjee16 β†’ Transact

SayantanBanerjee16 / Transact

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

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Transact

Dagger-Hilt-MVVM
Sample app that demonstrates the usage of Dagger Hilt with Kotlin & MVVM
Stars: ✭ 62 (+195.24%)
Mutual labels:  room, mvvm-architecture, hilt-android, hilt-dependency-injection
Compose-BreakingBad
πŸ§ͺ ☠︎ Jetpack Compose - Breaking Bad ☒︎
Stars: ✭ 26 (+23.81%)
Mutual labels:  room, clean-architecture, hilt-android
CleanArchitectureMVVM
Example of Clean Architecture of Android app using MVVM, Koin, Coroutines, Retrofit, Room, Solid Principle, DRY, KISS, OOP
Stars: ✭ 60 (+185.71%)
Mutual labels:  room, clean-architecture, mvvm-architecture
LetsChat
LetsChat is a Sample Messaging Android application built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Flow, Dagger-Hilt, Architecture Components, MVVM, Room, Testing, Coil, DataStore) and Firebase
Stars: ✭ 71 (+238.1%)
Mutual labels:  room, firebase-auth, hilt-android
Android Kotlin Mvi Cleanarchitecture
Android + Kotlin + Modularization + Gradle Depedency managment + Gradle written in Kotlin DSL + Custom Gradle Plugin + MVVM + MVI + Clean Architecture + Repository Pattern + Coroutines + Flows + Koin + Retrofit2 + ROOM + Kotlin-Android-Extension + KtLints
Stars: ✭ 187 (+790.48%)
Mutual labels:  room, clean-architecture, mvvm-architecture
News Sample App
A sample news app which demonstrates clean architecture and best practices for developing android app
Stars: ✭ 334 (+1490.48%)
Mutual labels:  room, clean-architecture, mvvm-architecture
ChatApp
Chat app based on Firebase tools.
Stars: ✭ 88 (+319.05%)
Mutual labels:  room, firebase-auth, mvvm-architecture
Offlinesampleapp
Sample Offline-First MVVM app that uses Android Priority Job Queue, Room, Retrofit2, LiveData, LifecycleObserver, RxJava2, Dagger Android
Stars: ✭ 653 (+3009.52%)
Mutual labels:  room, clean-architecture, mvvm-architecture
Android Clean Architecture Mvvm Dagger Rx
Implemented by Clean Architecture, Dagger2, MVVM, LiveData, RX, Retrofit2, Room, Anko
Stars: ✭ 138 (+557.14%)
Mutual labels:  room, clean-architecture, mvvm-architecture
Muvi
Very simple project to show a collection of Movie from MovieDb with a minimalist design
Stars: ✭ 46 (+119.05%)
Mutual labels:  room, clean-architecture, mvvm-architecture
MVI-Clean-Architecture
MVI + Clean Architecture + Best Practices | Example of Clean Architecture of Android app using MVI design pattern with Jetpack and popular libraries
Stars: ✭ 50 (+138.1%)
Mutual labels:  room, clean-architecture, mvvm-architecture
Nit Talk
Group Messaging Chat (Discord Clone πŸ‘€) App Using Firebase Cloud-Firestore following MVVM Architecture
Stars: ✭ 27 (+28.57%)
Mutual labels:  firebase-auth, mvvm-architecture
Simple-Notes-Kotlin-App
✍️ Simple Note Making App use mvvm architecture , dagger , coroutines and navigation component. Features includes πŸ—’οΈ create , edit and ❌ delete notes
Stars: ✭ 40 (+90.48%)
Mutual labels:  room, mvvm-architecture
flutter-fitness-app
Fitness app using Flutter
Stars: ✭ 30 (+42.86%)
Mutual labels:  firebase-auth, firebase-database
BirthdayReminder
Open source Android application which keeps track of and reminds users of their loved ones birthdays. View on the PlayStore here: https://play.google.com/store/apps/details?id=website.julianrosser.birthdays
Stars: ✭ 29 (+38.1%)
Mutual labels:  firebase-auth, firebase-database
BooksApp
Book selling application with MVVM (Model, View, ViewModel), LiveData, DataBinding, Retrofit, Room Database, Navigation Component(NavGraph, BottomNav), ViewPager2 in TabLayout, SearchView, Vertical Adapter(BestSellers) and Horizontal Adapter(All Books) with ConcatAdapter for Main Screen, Firebase Auth, SearchView in Adapter, Picasso, Lottie, Ani…
Stars: ✭ 53 (+152.38%)
Mutual labels:  firebase-auth, mvvm-architecture
IoT-Modelling-Tool
IoT Modelling Tool is a platform which allows users to have their own devices and components modeled in order to represent and manage a physical environment.
Stars: ✭ 16 (-23.81%)
Mutual labels:  firebase-auth, firebase-database
firebase
Modular Firebase πŸ”₯ implementation for NativeScript. Supports both iOS & Android platforms for all Firebase services.
Stars: ✭ 36 (+71.43%)
Mutual labels:  firebase-auth, firebase-database
Clean-MVVM-NewsApp
Android News app developed using Clean + MVVM architecture
Stars: ✭ 52 (+147.62%)
Mutual labels:  clean-architecture, mvvm-architecture
Android-Kotlin-MVVM-Template
[In progress...] Chat APP | MVVM + Clean Architecture | Kotlin, LiveData, Koin, Databinding, Navigation Fragments, Rx, Room, Crashlytics, Circle CI config, commons classes for UI.
Stars: ✭ 314 (+1395.24%)
Mutual labels:  room, mvvm-architecture

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].