- Technology Used / Tech Stack
- Preview
- Demo
- Features
- Installation (How to run the project)
- Tree / Folder Structure
- Architecture
- Design Pattern
- Todos
- Done
- Bugs
- Credit / Contributor(s)
| 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.mp4
- 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.
To run the project locally, follow these steps:
https://github.com/zenmobiledev/kophi.gitcd kophi
- Launch your preferred Integrated Development Environment (IDE), such as Android Studio or IntelliJ IDEA. Then, open the
kophiproject directory within the IDE.
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
Buildmenu and selectBuild Project. This process will compile the code and prepare the application for running.
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.
.
└── 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 |
|---|
- 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
- Unit Testing
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
- Network Handling