This project is a QR Code Generator App that dynamically generates a QR code based on user input and selected payment options. The QR code updates every 5 seconds and includes encrypted user information and payment details.
This link to download APK: https://github.com/mahmmedn19/QRCode-Generator/blob/main/app/release/app-release.apk
- User input form to capture user details (Name, Age, Gender, Phone Number)
- Payment options selection
- Dynamic QR code generation every 5 seconds
- Encrypted text in QR code containing user and payment information
REC-20240608022053.mp4
The project follows the MVVM architecture pattern, which separates the user interface (View) from the business logic (ViewModel) and data (Model). This approach promotes a clear separation of concerns, making the codebase more modular, testable, and maintainable.
- DataStoreManager: Interface to manage data persistence.
- DataStoreManagerImpl: Implementation of DataStoreManager using Jetpack DataStore for local storage.
- UiStates: Data class representing the state of each screen.
- ViewModel: The ViewModel manages the UI-related data in a lifecycle-conscious way. It interacts with the Model to fetch data and prepares it for the View.
- Clone the repository:
git clone https://github.com/mahmmedn19/QRCode-Generator.git
cd qrcode-generator-app
Open the project in Android Studio.
Build the project to download all necessary dependencies.
Run the application on an Android device or emulator.
Navigate through the app:
Fill in the user details on the User Form screen. Select a payment option on the Payment Options screen. View the dynamically updating QR code on the QR Code screen.
- Jetpack Compose: Modern UI toolkit for building native Android UI.
- Jetpack DataStore: Jetpack library for data storage, used for local storage of user and payment information.
- Hilt: Dependency injection library for Android, used for managing dependencies.
- Airbnb Lottie: Library for adding animations to Android apps, used for displaying animated QR code.
- ZXing: Library for QR code generation, used for dynamically generating QR codes.