Scan Smarter. Instantly.
QRYPT is a high-precision Android QR and 13-format barcode scanner, smart result action engine, retail product identifier (powered by Open Food Facts with local Room caching), batch inventory processor, anti-phishing URL inspector, local Room SQLite history vault, and 1024px to 1536px optical QR studio engineered by ArnobRazz with Kotlin, Jetpack Compose (Material 3), CameraX, Google ML Kit, and ZXing.
Download for Android (v1.1.0 APK) | Live Product Page | Release Notes & SHA-256 | Privacy Policy | Security Policy
- Product Overview & Design System
- Verified Features
- Smart Scan Result Actions & Product Identification
- Genuine Application Screenshots
- Supported QR & Barcode Formats
- Technical Architecture & Stack
- Privacy & Permissions Explained
- Installation, Download & SHA-256 Verification
- Building & Testing From Source
- Troubleshooting & FAQ
- Contributing, Security & License
QRYPT combines low-latency on-device optical decoding with a refined Liquid Glass interface crafted for clarity, speed, and user-controlled privacy:
- Midnight Navy Dark Palette: Built around
#070B14primary backgrounds,#0D1424and#121D30elevated surfaces,#00E5FFvivid cyan optical accents,#3B82F6electric blue highlights,#F5FAFFhigh-contrast primary typography, and#A9B7C9readable cool gray copy. - Frosted Daylight Light Theme: Adaptive high-contrast light palette (
#F4F7FBcanvas with#0D1526slate ink and#0284C7optical cyan) with a 1-tap header toggle and Android 12+ Material You Dynamic Color support. - On-Device Optical Engine with Scoped Product Lookup: Every camera frame, gallery image, anti-phishing URL check, batch export, and generated barcode runs 100% locally on your device. When you scan a retail product barcode (
EAN-13,EAN-8,UPC-A,UPC-E,ISBN), QRYPT queries the public Open Food Facts v3 HTTPS endpoint using only the numeric barcode and caches the product locally in Room SQLite.
- Low-Latency Frame Analysis: Uses
ImageAnalysis.STRATEGY_KEEP_ONLY_LATESTbackpressure with bundled Google ML Kit Barcode Scanning (17.3.0) so frames are analyzed immediately on-device. - 3 Viewfinder Target Modes: Switch on the fly between Precision Square (QR and 2D matrix), 1D Laser Slit (narrow horizontal window for dense retail/industrial barcodes), and Full Sensor.
- Optical Controls: Two-finger pinch-to-zoom, smooth zoom slider, tap-to-focus metering, hardware Torch toggle, Front/Back lens switch, and real-time Y-plane ambient luma calculation with automatic Low-Light Exposure Boost (< 45 lux).
- Context-Aware Result Sheet: Every scan opens a structured bottom sheet displaying the decoded payload, detected content type, security verification badge, and one-tap actions: Open Link for websites, View Product for identified retail barcodes, Call for phone numbers, Send Email for email addresses, Send Message for SMS payloads, View Location for geographic coordinates, Add Contact for vCard/MECARD contacts, Add to Calendar for calendar events, Copy, Share, and Search Online.
- Mandatory External Action Confirmation: QRYPT never automatically opens an external link after scanning. Tapping Open Link displays a confirmation dialog showing the full destination URL and any security warnings before opening your browser.
- Unsafe URI Scheme Blocking: Strictly blocks
javascript:,data:,file:,vbscript:,intent:,content:,about:,blob:, andjar:schemes.
- Supported Product Symbologies: Automatically validates and identifies
EAN-13,EAN-8,UPC-A,UPC-E,ISBN-10,ISBN-13, andGTIN-14barcodes with Modulo-10 checksum verification and GS1 country prefix lookup. - Rich Product Metadata: Retrieves product name, brand, product photo, package quantity, categories, ingredients, allergens, Nutri-Score grade (
AtoE), NOVA processing group (1to4), and nutrition facts per 100g (kcal, fat, sugars, proteins, salt) from Open Food Facts (https://world.openfoodfacts.org/api/v3/product/{barcode}.json). - Offline Room Caching & Graceful States: Fetched products are cached in Room SQLite (
product_cache) for instant offline retrieval. Clearly handles Loading, Verified Product, Product Not Found, Offline Mode, Invalid Barcode, and Network Timeout states.
- System Photo Picker (
PickVisualMedia): Decode single or multiple barcodes from saved screenshots and gallery images without requestingREAD_MEDIA_IMAGESorREAD_EXTERNAL_STORAGE. - Multi-Angle ZXing Recovery: Automatically falls back across
HybridBinarizer,GlobalHistogramBinarizer, rotated bitmaps (90,180,270degrees), and center-crop passes for dense or tilted images. - Optical Engine Self-Test: Built-in verification menu that synthesizes real barcode bitmaps (Wi-Fi, Retail EAN-13
3017620422003, vCard, HTTPS URL, and Phishing Warning) and passes them through the optical decoder pipeline on-device.
- Multi-Scan Session Queue: Capture dozens of barcodes in rapid succession with configurable duplicate cooldown suppression (
1to15seconds) and inline smart action buttons (Open Link, View Product, Copy, Share) on every captured item. - Bulk Warehouse Tagging: Attach batch notes/tags to an entire session and export RFC-4180 CSV or structured JSON files via Android's
FileProvidershare sheet.
- Local Optical Vault (
prism_scan_vault.db): Full-text search across titles, raw payloads, and user annotations with 9 category filters (All,Favorites,URLs,Wi-Fi,Products,Contacts,Calendar,Geo/Comms,Created in Studio) and one-tap vault purge. - 13-Format Generator Studio: Generate URL, Wi-Fi Network, vCard 3.0 Contact, Plain Text, Retail GTIN (EAN/UPC), Email, SMS, Phone, Geo Coordinates, and Calendar Event (
VEVENT) codes at512px,1024px HD, or1536px Printresolution.
| Scanned Content Type | Automatic Detection & Validation | Primary & Secondary Smart Actions |
|---|---|---|
Website URL (http / https) |
Validates syntax, blocks unsafe URI schemes, and runs offline anti-phishing checks (Punycode, raw IP, shorteners, cleartext HTTP). | Open Link (with confirmation dialog), Copy, Share, Search Online |
Product Barcode (EAN-13, EAN-8, UPC-A, UPC-E, ISBN) |
Validates GS1 Modulo-10 check digit, resolves GS1 country origin, and queries Open Food Facts v3 over HTTPS with local Room caching. | View Product (opens full product specification modal), Open Food Facts, Copy, Share, Search Online |
Wi-Fi Network (WIFI:) |
Extracts SSID, encryption type (WPA/WPA2/WPA3/WEP), and password. |
Copy Password & Wi-Fi Settings, Copy, Share |
Contact Card (VCARD / MECARD) |
Parses full name, organization, title, phone, email, website, and street address. | Add Contact, Copy, Share |
| Phone / Email / SMS / Geo / Calendar | Detects tel:, mailto:, MATMSG:, smsto:, geo:, VEVENT, plus plain email addresses and phone numbers. |
Call, Send Email, Send Message, View Location, Add to Calendar, Copy, Share |
| Plain Text / Industrial Codes | Decodes raw text and logistics identifiers (Code 128, Code 39, Code 93, Codabar, ITF, PDF417, Aztec, Data Matrix). |
Copy, Share, Search Online, Share Image |
All 8 screenshots below are genuine renders captured directly from QRYPT's Jetpack Compose UI via Robolectric Native Graphics (./scripts/capture-screenshots.sh):
| 2D Matrix Formats (4) | 1D Linear Retail & Industrial Formats (9) | Structured Payload Schemas (12) |
|---|---|---|
1. QR Code (QR_CODE)2. Aztec ( AZTEC)3. Data Matrix ( DATA_MATRIX)4. PDF417 ( PDF417) |
1. EAN-13 & EAN-8 2. UPC-A & UPC-E 3. Code 128, Code 39, Code 93 4. Codabar & ITF (Interleaved 2 of 5) |
1. Website URLs (http://, https://)2. Wi-Fi ( WIFI:S:...;T:WPA;P:...;;)3. vCard 3.0 ( BEGIN:VCARD) & MECARD:4. Calendar ( BEGIN:VEVENT)5. Email ( mailto:, MATMSG:, plain email)6. SMS ( smsto:) & Phone (tel:, plain phone)7. Geo ( geo:lat,lng)8. ISBN-13 / ISBN-10, Retail GTIN, JSON & Text |
app/src/main/java/com/example/
├── MainActivity.kt # Edge-to-edge Compose host, navigation & runtime permission flow
├── data/
│ ├── local/ # Room SQLite v2 (PrismScanDatabase, ScanRecordDao, ProductCacheDao)
│ ├── preferences/ # Jetpack DataStore (SettingsRepository, AppThemeMode, AccentColorPreset)
│ ├── remote/ # OpenFoodFactsService (HTTPS v3 API client with User-Agent & timeouts)
│ └── repository/ # ScanRepository & ProductLookupRepository (Room cache + offline check)
├── domain/
│ ├── model/ # BarcodeModels.kt & ProductModels.kt (ProductInfo, BarcodeValidator)
│ └── parser/ # PayloadParser.kt (12 payload schemas, GS1 lookup, URL phishing analyzer)
├── engine/
│ ├── BarcodeGeneratorEngine.kt # 13-format ZXing generator with rounded modules & color presets
│ ├── BarcodeScannerEngine.kt # CameraX ImageAnalysis + ML Kit BarcodeScanning + multi-angle ZXing
│ └── FeedbackController.kt # Tactile vibration & synthesized acoustic confirmation tones
├── ui/
│ ├── components/ # LiquidGlassComponents.kt, ScanResultSheet.kt, ProductDetailsModalDialog
│ ├── screens/ # ScannerScreen, BatchScannerScreen, HistoryVaultScreen,
│ │ # GeneratorStudioScreen, SettingsScreen
│ ├── theme/ # Color.kt (#070B14 Midnight Navy & Daylight tokens), Theme.kt, Type.kt
│ └── viewmodel/ # PrismScanViewModel.kt (unidirectional StateFlow state holder)
└── util/
└── ActionIntentHelper.kt # Validated system intents, URL scheme guard & FileProvider sharing
| Permission | Protection Level | Why It Is Needed |
|---|---|---|
android.permission.CAMERA |
Runtime (Optional) | Used strictly for real-time optical viewfinder scanning. If denied, users can still scan images from the Photo Library, run Self-Tests, browse the Vault, and generate codes in Studio. |
android.permission.INTERNET |
Normal (Install-Time) | Used strictly to query public product metadata and images from Open Food Facts (world.openfoodfacts.org) over HTTPS when a retail product barcode is scanned. |
android.permission.ACCESS_NETWORK_STATE |
Normal (Install-Time) | Checks whether the device is online or offline before initiating a product barcode lookup. |
android.permission.VIBRATE |
Normal (Install-Time) | Provides tactile haptic confirmation when a barcode locks onto the reticle (can be disabled in Settings). |
- Zero Image or QR Telemetry: Camera frames, gallery photos, QR code payloads, and Vault records are never uploaded to any server.
- Zero Storage Permissions: Uses the zero-permission Android system Photo Picker (
ActivityResultContracts.PickVisualMedia). - Zero Location, Contacts, or Microphone Permissions: Verified in
app/src/main/AndroidManifest.xml.
- Release Page: https://github.com/CodeByArnob/QRYPT/releases/tag/v1.1.0
- Direct APK Download:
QRYPT-v1.1.0-release.apk - Checksums File:
SHA256SUMS.txt - Previous Release (
v1.0.0): https://github.com/CodeByArnob/QRYPT/releases/tag/v1.0.0
sha256sum QRYPT-v1.1.0-release.apk- JDK: Java 17 or Java 21
- Android SDK:
minSdk = 24(Android 7.0),targetSdk = 36,compileSdk = 36 (minorApiLevel = 1) - Gradle: Gradle
9.3.1
# 1. Run all JUnit & Robolectric tests (also renders genuine screenshots into docs/screenshots/)
gradle :app:testDebugUnitTest
# 2. Run Android Lint static analysis
gradle :app:lintDebug
# 3. Assemble Debug APK
gradle :app:assembleDebug
# 4. Regenerate genuine application screenshots via helper script
./scripts/capture-screenshots.shThe automated release workflow (.github/workflows/release.yml) supports persistent production signing via repository secrets:
KEYSTORE_BASE64: Base64-encoded JKS keystore containing theuploadkey alias.STORE_PASSWORD: Keystore password.KEY_PASSWORD: Key password for theuploadalias.
When these secrets are not yet configured in the repository settings, the workflow automatically generates a documented self-signed CI release certificate so tagged releases still build, verify via apksigner, and publish SHA256SUMS.txt.
- Why does Google Play Protect show "Play Protect hasn't seen an app from this developer before" when sideloading?
When installing an independent open-source APK downloaded directly from GitHub Releases rather than the Google Play Store, Play Protect displays an unrecognized-developer prompt on first install. Verify theSHA-256checksum on the release page, then tap More details and Install anyway. - How does Product Identification work when I scan a food or retail barcode?
When you scan anEAN-13,EAN-8,UPC-A,UPC-E, orISBNbarcode, QRYPT validates the GS1 Modulo-10 check digit on-device, checks the local Room cache (product_cache), and queries the Open Food Facts v3 HTTPS endpoint (world.openfoodfacts.org). Once identified, tap View Product to inspect the product photo, brand, package quantity, categories, ingredients, Nutri-Score, NOVA group, and nutrition facts. - Does QRYPT work offline without internet access?
Yes. All QR and barcode scanning, gallery image decoding, URL anti-phishing analysis, Batch mode, Vault history, and Studio barcode generation work 100% offline. If you scan a product barcode while offline, QRYPT serves cached product details if available or displays an offline notice while still providing full barcode details and copy/share actions.
- Contributing Guide: See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
- Changelog: See CHANGELOG.md.
- Security Policy: See SECURITY.md (report vulnerabilities privately to
arnobrazz.dev@gmail.com). - Issues & Feature Requests: https://github.com/CodeByArnob/QRYPT/issues
- Developer: ArnobRazz (@CodeByArnob)
- License: Released under the MIT License | Copyright 2026 ArnobRazz.







