# wewewe718/qrandbarcodescanner architecture

> Architecture diagram of the GitHub repository wewewe718/qrandbarcodescanner, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/wewewe718/qrandbarcodescanner
- Repository: https://github.com/wewewe718/qrandbarcodescanner

## Overview

QR & Barcode Scanner is an Android app for reading and creating QR codes and barcodes. Its main workflow is scanning with the camera or from an image, then viewing a result; the app also supports creating codes, managing scan history and favorites, and exporting history. The tree identifies UI screens and use-case modules, while the README documents supported read and create formats. Source excerpts were not provided, so the links below express only the high-level workflows indicated by those materials; detailed call ownership and integrations remain unverified.

Main entry points: [`app/src/main/java/com/example/barcodescanner/feature/tabs/create/barcode/CreateBarcodeAllActivity.kt`](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/create/barcode/CreateBarcodeAllActivity.kt) (Format forms), [`app/src/main/java/com/example/barcodescanner/usecase/BarcodeImageScanner.kt`](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeImageScanner.kt) (Image scanner), [`app/src/main/java/com/example/barcodescanner/feature/tabs/scan/ScanBarcodeFromCameraFragment.kt`](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/scan/ScanBarcodeFromCameraFragment.kt) (Camera scan), [`app/src/main/java/com/example/barcodescanner/feature/tabs/scan/file/ScanBarcodeFromFileActivity.kt`](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/scan/file/ScanBarcodeFromFileActivity.kt) (Image scan)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scan["Scan and results"]
  node_camera_scan["Camera scan"]
  node_file_scan["Image scan"]
  node_result["Barcode result<br/>[BarcodeActivity.kt]"]
end

subgraph group_create["Code creation"]
  node_create_ui["Create code"]
  node_create_formats["Format forms"]
  node_otp["OTP codes<br/>[OtpActivity.kt]"]
end

subgraph group_history["History management"]
  node_history_ui["Scan history"]
  node_export["Export history"]
end

subgraph group_core["Domain and use cases"]
  node_scanner["Image scanner"]
  node_parser["Barcode parser<br/>[BarcodeParser.kt]"]
  node_parsed["Parsed barcode<br/>[ParsedBarcode.kt]"]
  node_generator["Image generator"]
  node_save_barcode["Save barcode<br/>[BarcodeSaver.kt]"]
  node_database[("Barcode database<br/>[BarcodeDatabase.kt]")]
  node_formats["Supported formats"]
end

subgraph group_settings["App configuration"]
  node_settings_ui["Settings"]
end

node_user(("App user"))

node_user -->|"starts scan"| node_camera_scan
node_user -->|"selects image"| node_file_scan
node_camera_scan -->|"scans image"| node_scanner
node_file_scan -->|"scans image"| node_scanner
node_scanner -->|"decodes content"| node_parser
node_parser -->|"produces"| node_parsed
node_user -->|"creates code"| node_create_ui
node_create_ui -->|"chooses format"| node_create_formats
node_create_formats -->|"generates image"| node_generator
node_create_formats -->|"saves code"| node_save_barcode
node_user -->|"opens history"| node_history_ui
node_history_ui -->|"reads records"| node_database
node_user -->|"exports history"| node_export
node_user -->|"changes settings"| node_settings_ui
node_user -->|"opens OTP"| node_otp

click node_camera_scan "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/scan/ScanBarcodeFromCameraFragment.kt"
click node_file_scan "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/scan/file/ScanBarcodeFromFileActivity.kt"
click node_scanner "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeImageScanner.kt"
click node_parser "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeParser.kt"
click node_result "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/barcode/BarcodeActivity.kt"
click node_parsed "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/model/ParsedBarcode.kt"
click node_create_ui "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/create/CreateBarcodeActivity.kt"
click node_create_formats "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/create/barcode/CreateBarcodeAllActivity.kt"
click node_generator "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeImageGenerator.kt"
click node_save_barcode "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeSaver.kt"
click node_history_ui "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/history/BarcodeHistoryFragment.kt"
click node_database "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeDatabase.kt"
click node_export "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/history/export/ExportHistoryActivity.kt"
click node_settings_ui "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/settings/SettingsFragment.kt"
click node_formats "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/SupportedBarcodeFormats.kt"
click node_otp "https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/barcode/otp/OtpActivity.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_camera_scan,node_file_scan,node_result,node_user toneBlue
class node_create_ui,node_create_formats,node_otp toneAmber
class node_history_ui,node_export toneMint
class node_scanner,node_parser,node_parsed,node_generator,node_save_barcode,node_database,node_formats toneRose
class node_settings_ui toneIndigo
```

## Components

### Scan and results

- [Camera scan](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/scan/ScanBarcodeFromCameraFragment.kt): `app/src/main/java/com/example/barcodescanner/feature/tabs/scan/ScanBarcodeFromCameraFragment.kt`
- [Image scan](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/scan/file/ScanBarcodeFromFileActivity.kt): `app/src/main/java/com/example/barcodescanner/feature/tabs/scan/file/ScanBarcodeFromFileActivity.kt`
- [Barcode result](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/barcode/BarcodeActivity.kt): `app/src/main/java/com/example/barcodescanner/feature/barcode/BarcodeActivity.kt`

### Code creation

- [Create code](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/create/CreateBarcodeActivity.kt): `app/src/main/java/com/example/barcodescanner/feature/tabs/create/CreateBarcodeActivity.kt`
- [Format forms](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/create/barcode/CreateBarcodeAllActivity.kt): `app/src/main/java/com/example/barcodescanner/feature/tabs/create/barcode/CreateBarcodeAllActivity.kt`
- [OTP codes](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/barcode/otp/OtpActivity.kt): `app/src/main/java/com/example/barcodescanner/feature/barcode/otp/OtpActivity.kt`

### History management

- [Scan history](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/history/BarcodeHistoryFragment.kt): `app/src/main/java/com/example/barcodescanner/feature/tabs/history/BarcodeHistoryFragment.kt`
- [Export history](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/history/export/ExportHistoryActivity.kt): `app/src/main/java/com/example/barcodescanner/feature/tabs/history/export/ExportHistoryActivity.kt`

### Domain and use cases

- [Image scanner](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeImageScanner.kt): `app/src/main/java/com/example/barcodescanner/usecase/BarcodeImageScanner.kt`
- [Barcode parser](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeParser.kt): `app/src/main/java/com/example/barcodescanner/usecase/BarcodeParser.kt`
- [Parsed barcode](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/model/ParsedBarcode.kt): `app/src/main/java/com/example/barcodescanner/model/ParsedBarcode.kt`
- [Image generator](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeImageGenerator.kt): `app/src/main/java/com/example/barcodescanner/usecase/BarcodeImageGenerator.kt`
- [Save barcode](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeSaver.kt): `app/src/main/java/com/example/barcodescanner/usecase/BarcodeSaver.kt`
- [Barcode database](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/BarcodeDatabase.kt): `app/src/main/java/com/example/barcodescanner/usecase/BarcodeDatabase.kt`
- [Supported formats](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/usecase/SupportedBarcodeFormats.kt): `app/src/main/java/com/example/barcodescanner/usecase/SupportedBarcodeFormats.kt`

### App configuration

- [Settings](https://github.com/wewewe718/qrandbarcodescanner/blob/master/app/src/main/java/com/example/barcodescanner/feature/tabs/settings/SettingsFragment.kt): `app/src/main/java/com/example/barcodescanner/feature/tabs/settings/SettingsFragment.kt`

### Other components

- **App user**

## Connections

- App user → Camera scan: starts scan
- App user → Image scan: selects image
- Camera scan → Image scanner: scans image
- Image scan → Image scanner: scans image
- Image scanner → Barcode parser: decodes content
- Barcode parser → Parsed barcode: produces
- App user → Create code: creates code
- Create code → Format forms: chooses format
- Format forms → Image generator: generates image
- Format forms → Save barcode: saves code
- App user → Scan history: opens history
- Scan history → Barcode database: reads records
- App user → Export history: exports history
- App user → Settings: changes settings
- App user → OTP codes: opens OTP
