A powerful and feature-rich QR code and barcode scanner mobile application for Android built with React Native and Expo. Scan, generate, and manage various types of codes with an intuitive interface and comprehensive functionality.
- Multi-format Support: Scan QR codes and 12+ barcode types including EAN13, EAN8, UPC-A, UPC-E, Code128, Code39, DataMatrix, PDF417, Aztec, Codabar, and ITF14
- Real-time Camera: Live camera feed with instant code detection
- Torch Control: Built-in flashlight for low-light scanning
- Camera Controls: Switch between front and back cameras
- Zoom Functionality: Adjustable zoom slider for better scanning precision
- Scanning Overlay: Optional visual overlay to guide scanning
-
QR Code Types:
- URLs: Generate QR codes for web links
- Text: Create QR codes for plain text
- WiFi: Generate WiFi connection QR codes with SSID, password, and encryption settings
- Email: Create email QR codes with subject, body, CC, and BCC
- Phone: Generate phone number QR codes
- SMS: Create SMS QR codes with pre-filled messages
- vCard: Generate contact information QR codes
- Location: Create GPS location QR codes
- Cryptocurrency: Generate Bitcoin, Ethereum, and Litecoin payment QR codes
- Events: Create calendar event QR codes
-
Barcode Types: Support for all major barcode formats with customizable styling
-
Customization Options:
- Error correction levels
- Margins and scaling
- Custom colors and styling
- Logo embedding for QR codes
- Text positioning for barcodes
- Scan History: Automatically save all scanned codes
- Result Management: View, share, and manage scanned results
- Smart Actions: Context-aware actions based on code type (open URLs, call numbers, send emails, etc.)
- Bulk Operations: Clear entire history with confirmation
- Modern UI: Clean, dark-themed interface with smooth animations
- Internationalization: Multi-language support (English, French)
- Responsive Design: Optimized for various screen sizes and orientations
- Accessibility: Built with accessibility best practices
- Smooth Animations: Fluid transitions and micro-interactions
- Offline Capability: Core functionality works without internet
- Data Persistence: Local storage using MMKV for fast access
- Image Capture: Take photos and save to device gallery
- Sharing: Share codes via native sharing mechanisms
- Export Options: Save generated codes as images
- React Native
0.81.4- Cross-platform mobile development - Expo
54.0.9- Development platform and tools - TypeScript
5.9.2- Type-safe JavaScript
- Navigation:
@react-navigation/native- App navigation - Camera:
expo-camera- Camera functionality - State Management:
zustand- Lightweight state management - Forms:
@tanstack/react-form- Form handling with validation - Data Fetching:
@tanstack/react-query- Server state management - Storage:
react-native-mmkv- Fast key-value storage - Animations:
react-native-reanimated- Smooth animations - UI Components:
@gorhom/bottom-sheet- Bottom sheet modals - QR Code Generation:
qrcode- QR code creation - Barcode API: Custom service using
barcodeapi.org - Internationalization:
react-i18next- Multi-language support
- Linting:
@biomejs/biome- Fast linter and formatter - Type Checking: TypeScript with strict configuration
- Build System: EAS Build for app compilation
- Android: Full support with APK builds
- iOS: Configured for iOS (requires device for testing)
- Web: Metro bundler for web deployment
- Node.js (v18 or higher)
- npm or yarn
- Expo CLI
- Android Studio (for Android development)
- Xcode (for iOS development, macOS only)
-
Clone the repository
git clone <repository-url> cd code-scanner
-
Install dependencies
npm install
-
Start the development server
npm start
-
Run on device/simulator
# Android npm run android # iOS npm run ios # Web npm run web
# Build APK for Android
eas build --platform android --profile production
# Build for iOS
eas build --platform ios --profile productioncode-scanner/
βββ app/ # App screens (Expo Router)
β βββ index.tsx # Main scanner screen
β βββ barcode.tsx # Barcode display screen
β βββ qr-code.tsx # QR code display screen
β βββ history.tsx # Scan history screen
β βββ new-code.tsx # Code generation screen
β βββ settings.tsx # Settings screen
βββ components/ # Reusable UI components
βββ config/ # App configuration
βββ constants/ # App constants (colors, spacing)
βββ hooks/ # Custom React hooks
βββ i18n/ # Internationalization files
βββ services/ # External API services
βββ stores/ # State management (Zustand)
βββ utils/ # Utility functions
βββ types.ts # TypeScript type definitions
- Uses
expo-camerawith real-time barcode detection - Supports 12+ barcode formats with optimized scanning algorithms
- Custom overlay system using
@shopify/react-native-skiafor visual guidance
- QR codes generated using
qrcodelibrary with SVG output - Barcodes generated via
barcodeapi.orgAPI service - Custom data formatters for different QR code types (WiFi, vCard, etc.)
- Zustand for lightweight, performant state management
- Separate stores for scanner results and app settings
- Persistent storage using MMKV for offline capability
@tanstack/react-formfor complex form validation- Zod schemas for type-safe validation
- Dynamic form fields based on selected code type
The app supports multiple languages with easy extensibility:
- English (default)
- French
- Extensible architecture for additional languages
- Bundle identifier:
com.jmercier.codescanner - Version:
1.0.2 - New Architecture enabled
- Edge-to-edge design for Android
- Development, preview, and production build profiles
- Android APK builds configured
- Auto-increment versioning for production
- Test on real iOS device
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Built with β€οΈ using React Native and Expo