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