A professional business card scanner application built with React Native, featuring OCR-powered text extraction and intelligent contact parsing.
- π· Card Scanning: Capture business cards using your device camera
- π OCR Text Extraction: Utilizes Google ML Kit for accurate text recognition
- π₯ Intelligent Contact Parsing: Automatically extracts names, emails, phones, companies, and websites
- πΎ Local Storage: Secure on-device storage with AsyncStorage
- π€ Export Options: Export contacts as VCard files for sharing
- π± Cross-Platform: Available for both iOS and Android
- π§ͺ Comprehensive Testing: 90%+ test coverage with unit and E2E tests
- Features
- Technology Stack
- Getting Started
- Testing
- CI/CD
- Release Process
- App Store Deployment
- Contributing
- License
- Security
- Privacy
| Category | Technology | Purpose |
|---|---|---|
| Framework | React Native 0.84.1 | Cross-platform mobile development |
| Language | TypeScript | Type-safe JavaScript development |
| Camera | react-native-vision-camera | High-performance camera access |
| OCR | rn-mlkit-ocr (Google ML Kit) | Text recognition from images |
| Storage | @react-native-async-storage/async-storage | Persistent local data storage |
| Navigation | @react-navigation/native | Screen navigation and routing |
| File System | react-native-fs | File operations for exports |
| Sharing | react-native-share | Native sharing capabilities |
| UI Components | react-native-vector-icons | Icon library for consistent UI |
- Node.js >= 18.x
- npm or yarn package manager
- Xcode (for iOS development)
- Android Studio (for Android development)
- CocoaPods (for iOS dependencies)
-
Clone the repository
git clone https://github.com/your-username/cardScanner.git cd cardScanner -
Install dependencies
npm install
-
Install iOS dependencies (iOS only)
cd ios && pod install && cd ..
npm run iosnpm run androidWe maintain comprehensive test coverage to ensure reliability and quality.
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in CI mode
npm run test:ci# iOS E2E tests
npm run detox:build:ios && npm run detox:test:ios
# Android E2E tests
npm run detox:build:android && npm run detox:test:android
# Run all E2E tests
npm run e2e:all- Unit Tests: 53+ test cases covering all utility functions and components
- E2E Tests: 12 test files with 65+ test scenarios
- Coverage Threshold: >90% for all source files
Our CI/CD pipeline ensures code quality and automated testing:
-
CI Workflow (
ci.yml)- Runs on every push and pull request
- Linting and TypeScript checks
- Unit tests with coverage enforcement
- E2E tests for both platforms
-
Android Build (
android-build.yml)- Builds Android APK
- Uploads build artifacts
-
iOS Build (
ios-build.yml)- Builds iOS app
- Uploads build artifacts
# Run linting
npm run lint
# Run TypeScript check
npx tsc --noEmit
# Run tests
npm run test:ci# Build iOS release IPA (requires Xcode)
npm run release:ios
# Build Android release APK
npm run release:android
# Verify generated artifacts
npm run release:verify- Code Review: All changes must pass CI and receive approval
- Version Bump: Update version in
package.jsonandapp.json - Changelog: Document changes in release notes
- Build Artifacts: Generate platform-specific artifacts
- GitHub Release: Create tagged release with artifacts
- Store Submission: Submit to App Store and Google Play
- Apple Developer Account ($99/year)
- Xcode with latest SDK
- App Store Connect access
-
Generate Release IPA
npm run release:ios
-
Upload to App Store Connect
- Use Xcode Organizer or
xcrun altool - Verify build in App Store Connect
- Use Xcode Organizer or
-
App Store Listing
- App name: CardScanner
- Subtitle: Business Card Scanner & Contact Manager
- Description: [See app-store-listing.md]
- Keywords: business card, scanner, OCR, contact, vcard
- Screenshots: Device-specific (iPhone 6.7", 6.5", 5.5", iPad)
- Privacy Policy URL: Required
- App Review Notes: Include test account credentials if needed
- App Category: Business or Productivity
- Content Rating: 4+ (No objectionable content)
- Privacy: Camera access for scanning, no data collection
- Google Play Developer Account ($25 one-time)
- Android SDK and build tools
- Google Play Console access
-
Generate Release APK/AAB
npm run release:android
-
Upload to Google Play Console
- Create new release in production track
- Upload signed APK/AAB
- Add release notes
-
Store Listing
- App name: CardScanner
- Short description: Scan business cards and manage contacts
- Full description: [See app-store-listing.md]
- Category: Business
- Content rating: Everyone
- Privacy Policy: Required
- Screenshots: Phone and tablet (7", 10")
- App Category: Business
- Content Rating: Everyone
- Privacy Policy: Required
- Target Audience: Business professionals
- App builds successfully on both platforms
- All tests pass (>90% coverage)
- Privacy policy published and linked
- Screenshots captured for all required device sizes
- App icons generated (1024x1024 iOS, 512x512 Android)
- Store descriptions written and localized
- Keywords researched and optimized
- Test accounts provided for review (if needed)
- Age rating determined
- Export compliance information ready (if applicable)
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and add tests
- Ensure all tests pass:
npm test - Commit changes:
git commit -m 'Add amazing feature' - Push to 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.
Please see SECURITY.md for information about reporting security vulnerabilities.
Your privacy is important to us. See PRIVACY_POLICY.md for details.
Key Privacy Points:
- All OCR processing happens on-device
- No data is sent to external servers
- No user tracking or analytics
- Contact data stored locally only
- β Core features implemented
- β Unit tests with >90% coverage
- β E2E testing framework
- β CI/CD pipeline configured
- β Release infrastructure prepared
- β Store listing documentation ready
If you encounter any issues or have questions:
- Check the documentation
- Search existing issues
- Create a new issue
- React Native - Cross-platform mobile framework
- Google ML Kit - OCR technology
- Vision Camera - Camera implementation
- Detox - E2E testing framework