![]() Scan |
![]() Generate |
![]() History |
The full UI for all three screens (Scan, Generate, History) is built and styled. Functionality is still being wired up:
| Screen | UI | Logic |
|---|---|---|
| Scan | ✅ Done | 🟡 Pending — camera permission & live scanning |
| Generate | ✅ Done | 🟡 Pending — QR generation logic |
| History | ✅ Done | 🟡 Pending — search & real data source |
(Design is finished; these describe intended behavior once wired up.)
- Live camera viewfinder with an alignment frame to guide QR placement
- Upload a QR code image from your gallery instead of scanning live
- Clean, minimal scanning UI with clear on-screen instructions
- Create QR codes for multiple content types: Website, Text, Email, Phone, and more
- Live input field with contextual hints (e.g. paste a URL, hit Enter to generate)
- Keyboard shortcut support —
Ctrl+Sto save the generated code straight to your gallery - Instant preview of the generated QR code
- Unified history view with two tabs: Generated and Scanned
- Search bar to quickly filter past entries
- Smart icons per entry type — website, Wi-Fi network, Instagram, LinkedIn, plain text, barcode, and more
- Each entry shows a timestamp and opens into full detail on tap
The entire app follows one consistent dark, glassmorphism-inspired theme:
| Token | Value | Usage |
|---|---|---|
| 🟣 Primary Accent | #7A5EAD |
Headers, buttons, dividers, highlights |
| ⚫ Background | Dark / near-black with bokeh overlay | All screens |
| ⚪ Text (primary) | #FFFFFF |
Body text, hints |
| 🔤 Display Font | Luckiest Guy | Screen titles (SCAN QR CODE, HISTORY, etc.) |
| 🟪 Cards | Rounded, semi-transparent purple-grey | List rows, input fields, preview boxes |
Consistent touches across every screen:
- Soft bokeh/blur background for visual depth
- Rounded corners on all cards, inputs, and buttons
- Thin purple
MaterialDividerlines separating list content - Bold, chunky display type for headers vs. clean sans-serif for body copy
- Language: Kotlin
- UI: Android XML layouts with
ConstraintLayout - Lists:
RecyclerViewfor dynamic, searchable history - Components: Material Components (
MaterialDivider, etc.) - Min SDK: add your
minSdkVersion - Target SDK: add your
targetSdkVersion
app/
├── src/main/
│ ├── java/.../
│ │ ├── HistoryFragment.kt
│ │ ├── ScanFragment.kt
│ │ ├── GenerateFragment.kt
│ │ └── adapters/
│ │ └── HistoryAdapter.kt
│ └── res/
│ ├── layout/
│ │ ├── fragment_history.xml
│ │ ├── fragment_scan.xml
│ │ └── fragment_generate.xml
│ ├── drawable/
│ └── font/
Screenshots/
├── SCAN.png
├── Generate.png
└── HISTORY.png
(Adjust to match your actual package/module layout.)
- Clone the repository
git clone https://github.com/your-username/your-repo.git
- Open the project in Android Studio
- Let Gradle sync and download dependencies
- Run on an emulator or physical device — UI is fully browsable; live camera/scanning is pending
Camera permission is declared in AndroidManifest.xml. Runtime permission request handling is pending, so the app doesn't yet prompt the user to allow camera access.
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />Core functionality (pending)
- Request camera permission at runtime and launch live camera preview
- Implement actual QR code scanning (e.g. via CameraX + ML Kit or ZXing)
- Implement QR code generation logic for each content type
- Connect History to a real data source (e.g. Room database) instead of static rows
- Wire up live search filtering in History
Nice-to-haves
- Add QR code type detection with per-type icons on scan
- Export/share generated QR codes directly from the preview screen
- Dark/light theme toggle
Add your license here (MIT, Apache 2.0, etc.)
Built with 💜 using Kotlin and Android XML.


