A Flutter application that scans visiting/business cards and automatically extracts contact information, storing it locally for easy access and communication.
- 📸 Scan Business Cards — Capture visiting cards using the device camera
- 🤖 Auto Extract Info — Automatically parses name, mobile, email, company, designation, website, and address from scanned cards
- 💾 Local Storage — All contacts saved locally using SQLite (no internet required)
- 📞 One-tap Call — Call any contact directly from the app
- 💬 One-tap SMS — Send an SMS without leaving the app
- 📧 One-tap Email — Opens your mail app pre-filled with the contact's email
- 🌐 Website Launch — Opens contact's website in the browser
- 🗺️ Open in Maps — View the contact's address in Google Maps
- ⭐ Favourites — Mark important contacts as favourites
- 📝 Add / Edit Manually — Add or update contacts via a form
lib/
├── db/
│ └── db_helper.dart # SQLite database setup & CRUD operations
├── model/
│ └── contact_models.dart # Contact data model & table constants
├── pages/
│ ├── home_page.dart # Contact list & search
│ ├── scan_page.dart # Camera & card scanning
│ ├── form_page.dart # Add / Edit contact form
│ └── contact_details_page.dart # Full contact detail view
├── provider/
│ └── contact_provider.dart # State management (Provider)
├── utils/ # Utility/helper functions
└── main.dart # App entry point
| Layer | Technology |
|---|---|
| Framework | Flutter |
| Language | Dart |
| Database | SQLite (sqflite) |
| State Management | Provider |
| URL Actions | url_launcher |
| Camera / Scan | Flutter Camera / ML Kit |
Add these to your pubspec.yaml:
dependencies:
flutter:
sdk: flutter
provider: ^6.1.2
sqflite: ^2.3.3
path: ^1.9.0
url_launcher: ^6.3.1
image_picker: ^1.1.2-
Clone the repository
git clone https://github.com/your-username/visiting-card-scanner.git cd visiting-card-scanner -
Install dependencies
flutter pub get
-
Android — add permissions in
android/app/src/main/AndroidManifest.xml:<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.SEND_SMS"/>
-
Android — add url_launcher queries in
AndroidManifest.xmlinside<manifest>:<queries> <intent> <action android:name="android.intent.action.DIAL"/> </intent> <intent> <action android:name="android.intent.action.SENDTO"/> <data android:scheme="mailto"/> </intent> <intent> <action android:name="android.intent.action.SENDTO"/> <data android:scheme="sms"/> </intent> <intent> <action android:name="android.intent.action.VIEW"/> <data android:scheme="https"/> </intent> </queries>
-
Run the app
flutter run
Table: tbl_contact
| Column | Type | Description |
|---|---|---|
id |
INTEGER (PK) | Auto-increment primary key |
name |
TEXT | Contact full name |
mobile |
TEXT | Phone number |
email |
TEXT | Email address |
company |
TEXT | Company name |
designation |
TEXT | Job title |
website |
TEXT | Website URL |
address |
TEXT | Physical address |
image |
TEXT | Local path to scanned card image |
favourite |
INTEGER | 1 = favourite, 0 = normal |
| Home | Scan | Details |
|---|---|---|
| (Add screenshot) | (Add screenshot) | (Add screenshot) |
- Dark mode support
- Export contacts to CSV / vCard
- Cloud backup & sync
- Search & filter by company
- Share contact as QR code
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License.
Built with ❤️ using Flutter