A modern, privacy-first React Native app for validating Swiss QR bills with real-time camera scanning and advanced image processing.
- Local Processing Only: All QR code detection happens on your device
- No Cloud Dependencies: No data sent to external servers
- Zero Data Collection: Complete privacy protection
- Dark Theme: Sophisticated Material Design 3 Dark Theme
- Swiss Branding: Custom Swiss cross logo and red accent colors
- iOS Navigation: Native iOS-style navigation and interactions
- Real-Time Camera Scanning: Instant QR code detection with live camera feed
- Flashlight Support: Built-in flashlight for low-light conditions
- ZXing Image Processing: Industry-standard Zebra Crossing library for image analysis
- Multi-Strategy Detection: 5 different image processing approaches for maximum success rate
- High-Resolution Upscaling: Automatically enhances images up to 1600px for better detection
- Multiple Processing Strategies:
- Original image processing
- Enhanced contrast (1.5x)
- Reduced contrast (0.7x) for overexposed images
- Grayscale conversion with contrast boost
- Edge sharpening with binary conversion
- Complete Validation: Full Swiss QR bill format compliance
- Payment Information: Displays amount, currency, and payment details
- Creditor & Debtor Info: Shows complete payment party information
- Reference Validation: Validates Swiss QR reference numbers
- Optional Fields: Proper handling of optional street address fields
- Node.js 18+ and npm
- Expo CLI
- iOS Simulator or Android Emulator (or physical device with Expo Go)
-
Clone the repository
git clone https://github.com/kukshaus/qr-bill-validator.git cd qr-bill-validator/qr-bill-validator-app -
Install dependencies
npm install
-
Start the development server
npx expo start
-
Run on your device
- iOS: Press
ito open iOS simulator - Android: Press
ato open Android emulator - Physical Device: Scan QR code with Expo Go app
- iOS: Press
qr-bill-validator/
├── qr-bill-validator-app/ # React Native app
│ ├── src/
│ │ ├── components/ # React components
│ │ │ └── RealZXingProcessor.tsx # ZXing image processing
│ │ ├── screens/ # App screens
│ │ │ ├── HomeScreen.tsx # Main landing screen
│ │ │ ├── ScannerScreen.tsx # QR code camera scanner
│ │ │ └── ValidationScreen.tsx # QR bill validation results
│ │ ├── services/ # Business logic
│ │ │ ├── QRBillValidator.ts # Swiss QR bill validation
│ │ │ └── ImageProcessingService.ts # Image processing service
│ │ └── types/ # TypeScript type definitions
│ ├── App.tsx # Main app component
│ └── package.json # Dependencies and scripts
├── PRD/ # Product Requirements
└── REQ/ # Requirements and Documentation
- Framework: React Native with Expo SDK 52
- Language: TypeScript
- UI Library: React Native Paper (Material Design 3)
- Camera: Expo Camera with CameraView
- Image Processing: Expo Image Manipulator + ZXing
- QR Detection: ZXing (Zebra Crossing) library via WebView
- Navigation: Custom navigation with state management
Advanced QR code detection using ZXing library with:
- High-resolution image processing
- Multiple detection strategies
- Error handling and timeouts
- Privacy-focused local processing
Swiss QR bill validation with:
- Complete format compliance checking
- Payment information extraction
- Reference number validation
- Optional field handling
Real-time camera scanning with:
- Live QR code detection
- Flashlight toggle
- Smooth camera permissions handling
- Instant feedback
- Launch the app and tap "📷 Scan QR Code" for real-time scanning
- Or upload an image with "📷 Upload Image" for advanced processing
- Choose processing method when uploading:
- 🦓 ZXing Processing: Advanced image analysis with 5 strategies
- 📱 Camera Scanner: Switch to real-time camera scanning
- View validation results with complete QR bill information
- Scan another or return to home screen
- No Network Requests: All processing happens locally on your device
- No Data Storage: No QR code data is saved or cached
- No Analytics: No tracking or usage analytics
- Open Source: Full transparency of all code and functionality
Fully compliant with Swiss QR bill standards:
- ✅ QR-IBAN validation
- ✅ Swiss franc (CHF) and Euro (EUR) support
- ✅ Structured and unstructured reference support
- ✅ Complete creditor and debtor information
- ✅ Additional information and alternative procedures
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- ZXing (Zebra Crossing): Industry-standard barcode scanning library
- Expo Team: Excellent React Native development platform
- Swiss QR Bill Standard: Official Swiss payment standard documentation
- React Native Paper: Beautiful Material Design components
Built with ❤️ for Swiss QR bill validation