Skip to content

zenmobiledev/Kophi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Technology Used / Tech Stack

JDK Android Studio Android Gradle Plugin Kotlin KSP Gradle Hilt Navigation lifecycle retrofit Gson Converter Logging Interceptor Data Store Room Database Splash Screen Coil Shimmer Android Swipe Refresh Layout View Pager 2 Firebase

Table of Contents

Preview

App Introduction
App Introduction

KOPHI adalah aplikasi untuk pecinta kopi yang memudahkan pengguna menemukan kopi berdasarkan kategori dan memesan kopi dengan preferensi pengguna.

Aplikasi KOPHI menyediakan sistem pembayaran yang fleksibel, mendukung berbagai metode transaksi termasuk debit maupun kredit.

Demo

demo.mp4

Features

  • Preferensi: Pengguna bisa menyesuaikan pemesanan kopi dimulai dari penyajian, jenis susu dan tingkat kemanisan.
  • Pembayaran: Pengguna bisa membayar tagihan dengan berbagai metode pembayaran yang tersedia.
  • Transaksi: Pengguna bisa melihat daftar transaksi dari berbagai status(Expired, Cancelled, Paid dan Pending), pengguna juga bisa melanjutkan pembayaran apabila status tersebut masih pending atau pengguna juga bisa membatalkan pesanan tersebut.
  • Pengaturan: Pengguna bisa mengaktifkan Mode Gelap ataupun mengubah bahasa.

Installation (How to run the project)

To run the project locally, follow these steps:

1. Clone the repository

  • https://github.com/zenmobiledev/kophi.git
  • cd kophi

2. Open the project

  • Launch your preferred Integrated Development Environment (IDE), such as Android Studio or IntelliJ IDEA. Then, open the kophi project directory within the IDE.

3. Build the project

Ensure that all necessary dependencies are installed. In Android Studio or IntelliJ IDEA, you can typically do this by:

  • Syncing the Project: The IDE should automatically prompt you to sync the project with the Gradle files. If not, you can manually sync by clicking on the "Sync Project with Gradle Files" button.
  • Building the Project: Navigate to the Build menu and select Build Project. This process will compile the code and prepare the application for running.

4. Run the application

After the build process completes successfully:

  • Select a Device: Choose an emulator or a physical device connected to your computer where you want to run the application.
  • Launch the App: Click on the green 'Run' button (usually depicted as a play icon) in the IDE toolbar, or navigate to Run > Run 'app'. This action will install and start the application on the selected device.

Tree / Folder Structure

.
└── app
    └── src
        └── main
            └── java
                └── com
                    └── mobbelldev
                        └── kophi
                            ├── data
                            │   ├── mapper
                            │   │   └── Mapper.kt
                            │   ├── repository
                            │   │   └── CoffeeRepositoryImpl.kt
                            │   └── source
                            │       ├── local
                            │       │   ├── dao
                            │       │   │   └── CoffeeCartDao.kt
                            │       │   ├── database
                            │       │   │   └── AppDatabase.kt
                            │       │   ├── datasource
                            │       │   │   ├── CoffeeLocalDataSource.kt
                            │       │   │   └── CoffeeLocalDataSourceImpl.kt
                            │       │   ├── entity
                            │       │   │   └── CoffeeCartEntity.kt
                            │       │   └── preference
                            │       │       ├── PreferenceDataStore.kt
                            │       │       └── PreferenceParameter.kt
                            │       └── remote
                            │           ├── api
                            │           │   └── CoffeeService.kt
                            │           ├── datasource
                            │           │   ├── CoffeeRemoteDataSource.kt
                            │           │   └── CoffeeRemoteDataSourceImpl.kt
                            │           └── model
                            │               ├── request
                            │               │   ├── ContinueWithGoogleRequest.kt
                            │               │   └── OrderRequest.kt
                            │               └── response
                            │                   ├── AuthenticationResponse.kt
                            │                   ├── CancelOrderResponse.kt
                            │                   ├── CoffeeResponse.kt
                            │                   ├── OrderSnapResponse.kt
                            │                   └── OrdersResponse.kt
                            ├── di
                            │   ├── AppModule.kt
                            │   ├── LocalModule.kt
                            │   └── NetworkModule.kt
                            ├── domain
                            │   ├── interactor
                            │   │   └── CheckoutInteractor.kt
                            │   ├── model
                            │   │   ├── Authentication.kt
                            │   │   ├── CancelOrder.kt
                            │   │   ├── Coffee.kt
                            │   │   ├── CoffeeCart.kt
                            │   │   ├── ContinueWithGoogle.kt
                            │   │   ├── Order.kt
                            │   │   ├── OrderSnap.kt
                            │   │   └── Orders.kt
                            │   ├── repositories
                            │   │   └── CoffeeRepository.kt
                            │   └── usecase
                            │       ├── AuthenticationUseCase.kt
                            │       ├── CancelOrderUseCase.kt
                            │       ├── CheckoutUseCase.kt
                            │       ├── CoffeeUseCase.kt
                            │       ├── DecrementQuantityUseCase.kt
                            │       ├── DeleteAllOrdersUseCase.kt
                            │       ├── DeleteCoffeeCartUseCase.kt
                            │       ├── GetAllCartCoffeesUseCase.kt
                            │       ├── GetDarkModeUseCase.kt
                            │       ├── GetEmailUseCase.kt
                            │       ├── GetLanguageUseCase.kt
                            │       ├── GetOnBoardingUseCase.kt
                            │       ├── GetOrdersUseCase.kt
                            │       ├── GetTokenUseCase.kt
                            │       ├── GetUserIdUseCase.kt
                            │       ├── IncrementQuantityUseCase.kt
                            │       ├── InsertCoffeeCartUseCase.kt
                            │       ├── LogoutUseCase.kt
                            │       ├── SaveTokenUseCase.kt
                            │       ├── SaveUserIdUseCase.kt
                            │       ├── SetDarkModeUseCase.kt
                            │       ├── SetEmailUseCase.kt
                            │       ├── SetLanguageUseCase.kt
                            │       ├── SetOnBoardingUseCase.kt
                            │       └── UpdateQuantityAndSubtotalUseCase.kt
                            ├── presentation
                            │   └── ui
                            │       ├── authentication
                            │       │   ├── AuthenticationActivity.kt
                            │       │   └── AuthenticationViewModel.kt
                            │       ├── coffee
                            │       │   ├── adapter
                            │       │   │   └── CoffeeAdapter.kt
                            │       │   ├── ads
                            │       │   │   ├── adapter
                            │       │   │   │   └── AdsAdapter.kt
                            │       │   │   └── AdsActivity.kt
                            │       │   ├── checkout
                            │       │   │   ├── adapter
                            │       │   │   │   ├── AdapterCallback.kt
                            │       │   │   │   └── CheckoutAdapter.kt
                            │       │   │   ├── CheckoutActivity.kt
                            │       │   │   └── CheckoutViewModel.kt
                            │       │   ├── detail
                            │       │   │   └── CoffeeDetailActivity.kt
                            │       │   ├── payment
                            │       │   │   └── PaymentActivity.kt
                            │       │   ├── CoffeeFragment.kt
                            │       │   └── CoffeeViewModel.kt
                            │       ├── main
                            │       │   └── MainActivity.kt
                            │       ├── onboarding
                            │       │   ├── adapter
                            │       │   │   └── AppIntroViewPager2Adapter.kt
                            │       │   ├── AppIntroActivity.kt
                            │       │   └── AppIntroViewModel.kt
                            │       ├── profile
                            │       │   ├── language
                            │       │   │   ├── LanguageActivity.kt
                            │       │   │   ├── LanguageViewModel.kt
                            │       │   │   └── Languages.kt
                            │       │   ├── ProfileFragment.kt
                            │       │   └── ProfileViewModel.kt
                            │       └── transaction
                            │           ├── adapter
                            │           │   ├── ItemDetailTransactionAdapter.kt
                            │           │   ├── ItemTransactionAdapter.kt
                            │           │   └── OnItemClickListener.kt
                            │           ├── StatusPayment.kt
                            │           ├── TransactionFragment.kt
                            │           └── TransactionViewModel.kt
                            ├── utils
                            │   ├── CapitalizeFirst.kt
                            │   ├── ConvertDateTime.kt
                            │   ├── IDRCurrency.kt
                            │   └── ResultResponse.kt
                            └── MyApp.kt

Architecture

Architecture
Architecture

Design Pattern

  • Clean Architecture Pattern: Data Layer, Domain Layer, Presentation Layer
  • Repository Pattern
  • Dependency Injection Pattern
  • Use Case Pattern
  • MVVM (Model-View-ViewModel) Pattern
  • Adapter Pattern
  • Data Source Pattern
  • DAO (Data Access Object) Pattern
  • Factory Pattern
  • Observer Pattern
  • Mapper Pattern
  • Singleton Pattern

Todos

  • Unit Testing

Done

Point Penilaian:

  • Local Storage CRUD
  • API Integration
  • Payment Integration
  • State Management
  • Data Preferences
  • Alert Dialog
  • Firebase Crashlytics
  • Dependency Management
  • Firebase Authentication
  • Code Obfuscation
  • Code Quality
  • App Distribution

Fitur Aplikasi:

  • Preferensi
  • Pembayaran
  • Transaksi
  • Pengaturan

Bugs

  • Network Handling

Credit / Contributor(s)

About

Final Project - Phincon Academy Batch 3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages