Files
privateqrscanner/README.md
T
Hadrian Burkhardt 3d2d451815 vcard visualiation
2026-02-26 05:11:34 +01:00

56 lines
1.8 KiB
Markdown

# Clean Scanner (MVP)
Offline-first, ad-free QR/barcode scanner built with Kotlin, Jetpack Compose, CameraX, and on-device ML Kit.
## Platform Assumption
- Android mobile app first (phone/tablet).
- Prefer Android-compatible libraries and APIs for parsing/integration decisions.
## Architektur
- `ui/`: Compose screens/components + ViewModels (MVVM)
- `data/`: ML Kit analyzer, Room entities/DAO, repository
- `domain/`: app models (`ScanResult`, `ScanRecord`, `UrlRiskResult`)
- `settings/`: DataStore preferences (history + warnings toggles)
- `util/`: URL risk scoring, clipboard, intents
## Datenschutz
- Keine Werbung
- Keine Tracker/Analytics/Crashlytics
- Kein Backend, keine Servercalls
- Keine `INTERNET`-Permission im Manifest
## MVP Features
- Home: Scan-Button, lokaler Historie-Toggle (Default: OFF), Datenschutz-Dialog
- Scanner: CameraX Live-Preview, Fadenkreuz-Overlay, Taschenlampe, Debounce gegen Doppelscans, Live-Hinweise zu erkannten/lesbaren Codes
- Bild-Scan: Multi-Code-Erkennung aus einem Bild mit Ergebnis-Auswahl
- Ergebnis-Bottom-Sheet: Typ/Inhalt + Copy/Share/Open/Scan again
- URL-Sicherheitswarnung bei lokalem `riskScore >= 3` (kein Blocken, nur Hinweis)
- Historie: Suche, Swipe-to-delete, Alles-löschen, Detailansicht mit Volltext
- Einstellungen: Historie an/aus (mit optionalem Löschen), Warnungen an/aus, About-Infos
## Voraussetzungen
- Android Studio (aktuell stabil)
- JDK 17+
- Android SDK für `compileSdk = 35`
## Build & Run
1. Projekt in Android Studio öffnen.
2. Gradle Sync ausführen.
3. App auf Emulator/Device (API 24+) starten.
CLI:
```bash
./gradlew :app:assembleDebug
./gradlew :app:installDebug
```
## Tests
- Unit tests:
```bash
./gradlew testDebugUnitTest
```
- URL-Risk-Scorer tests: `app/src/test/java/com/clean/scanner/util/UrlRiskScorerTest.kt`