ScanCard Pro is a Flutter-based mobile application that allows users to scan business cards, extract contact details using OCR, manage cards digitally, and save contacts to their phone.
The app follows clean architecture, BLoC state management, and Firebase-backed microservice-style separation.
- Email & Password authentication using Firebase Auth
- Email verification flow
- Forgot password support
- Secure logout with confirmation dialog
- Capture card using Camera or Gallery
- Crop card image before processing
- OCR using Google ML Kit
- Automatic field extraction:
- Name
- Phone number
- Company
- Designation
- Website
- Address
- Manual editing before saving
- Card images uploaded to Cloudinary
- Card data stored in Cloud Firestore
- User-specific card collections
- View all saved cards on Home Screen
- Search cards by:
- Name
- Company
- Tags
- Edit existing cards
- Delete cards
- View card details with image preview
- Save extracted contact details directly to phone contacts
- Runtime permission handling for Contacts
The app follows a Microservice-inspired Clean Architecture:
lib/
├── blocs/ # BLoC layer (Auth, Card, OCR, Scanner)
├── models/ # Data models (BusinessCard, OCR Result)
├── repositories/ # Data handling (Firestore, Cloudinary)
├── services/ # OCR, Image Crop, Cloudinary, Firebase
├── ui/
│ ├── screens/ # App screens
│ └── widgets/ # Reusable UI components
| Layer | Technology |
|---|---|
| Frontend | Flutter |
| State Management | flutter_bloc |
| Authentication | Firebase Auth |
| Database | Cloud Firestore |
| Image Storage | Cloudinary |
| OCR | Google ML Kit |
| Image Crop | image_cropper |
| Camera | image_picker |
| Permissions | permission_handler |
| Contacts | flutter_contacts |
git clone <repo-url>
cd scancard_pro
flutter pub get
flutter runYash Chandra
B.Tech ECE – IIIT Kalyani
Flutter | Firebase | Node.js