Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

🇨🇭 QR Bill Validator App

A modern, privacy-first React Native app for validating Swiss QR bills with real-time camera scanning and advanced image processing.

✨ Features

🔒 Privacy-First Design

  • 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

📱 Modern iOS Interface

  • 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

🎯 Advanced QR Detection

  • 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

🔍 Enhanced Image Processing

  • High-Resolution Upscaling: Automatically enhances images up to 1600px for better detection
  • Multiple Processing Strategies:
    1. Original image processing
    2. Enhanced contrast (1.5x)
    3. Reduced contrast (0.7x) for overexposed images
    4. Grayscale conversion with contrast boost
    5. Edge sharpening with binary conversion

✅ Swiss QR Bill Validation

  • 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

🚀 Getting Started

Prerequisites

  • Node.js 18+ and npm
  • Expo CLI
  • iOS Simulator or Android Emulator (or physical device with Expo Go)

Installation

  1. Clone the repository

    git clone https://github.com/kukshaus/qr-bill-validator.git
    cd qr-bill-validator/qr-bill-validator-app
  2. Install dependencies

    npm install
  3. Start the development server

    npx expo start
  4. Run on your device

    • iOS: Press i to open iOS simulator
    • Android: Press a to open Android emulator
    • Physical Device: Scan QR code with Expo Go app

📁 Project Structure

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

🛠️ Technical Stack

  • 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

🔧 Key Components

RealZXingProcessor

Advanced QR code detection using ZXing library with:

  • High-resolution image processing
  • Multiple detection strategies
  • Error handling and timeouts
  • Privacy-focused local processing

QRBillValidator

Swiss QR bill validation with:

  • Complete format compliance checking
  • Payment information extraction
  • Reference number validation
  • Optional field handling

ScannerScreen

Real-time camera scanning with:

  • Live QR code detection
  • Flashlight toggle
  • Smooth camera permissions handling
  • Instant feedback

📱 Usage

  1. Launch the app and tap "📷 Scan QR Code" for real-time scanning
  2. Or upload an image with "📷 Upload Image" for advanced processing
  3. Choose processing method when uploading:
    • 🦓 ZXing Processing: Advanced image analysis with 5 strategies
    • 📱 Camera Scanner: Switch to real-time camera scanning
  4. View validation results with complete QR bill information
  5. Scan another or return to home screen

🔒 Privacy & Security

  • 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

🇨🇭 Swiss QR Bill Support

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

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages