Scan paper business cards, turn them into shareable digital cards with a QR code β all on-device.
Website Β· Report Bug Β· Request Feature
Tapcard turns the paper business cards piling up in your drawer into clean, shareable digital cards β and lets you hand out your own with a single QR code. Point your camera at a card, Tapcard reads the details on-device, you confirm them, and you get a polished digital card you can share, save, or beam straight into anyone's address book.
It's a native Android companion to the Tapcard digital business-card platform, built with Jetpack Compose and Material 3.
- π· On-device card scanning β Google ML Kit text recognition, no network and no API keys
- π§ Automatic field detection β name, job title, company, phone, email, website, address
- βοΈ Review & edit β fix anything before you save; nothing is locked in
- π³ Shareable QR code β anyone can scan it to save the contact (iPhone, Android, Google, Outlook)
- π€ One-tap contact export β add the card straight to your address book as a vCard
- β‘ Quick actions β call, WhatsApp, email, or open the website right from the card
- ποΈ My Cards β every card you create, stored privately on your device
- β¨οΈ Add by hand β no card? Type the details in and still get a QR
- π Material 3 design with automatic light & dark mode
- π 100% private β no account, no cloud, no ads, no analytics
| Category | Technology |
|---|---|
| Language | Kotlin 2.1 |
| UI | Jetpack Compose Β· Material 3 |
| Architecture | MVVM (AndroidViewModel + Compose state) |
| OCR | Google ML Kit Text Recognition (on-device) |
| Camera | CameraX (preview + still capture) |
| QR codes | ZXing core |
| Persistence | kotlinx.serialization β SharedPreferences |
| Build | Gradle 8.11 Β· AGP 8.10 Β· compileSdk 36 |
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MainActivity β
β (Compose + TapcardTheme) β
βββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β
βββββββββββΌββββββββββ
β RootScreen β Crossfade router
βββββββββββ¬ββββββββββ
ββββββββββββ¬βββββββββΌββββββββββ¬ββββββββββββ
βΌ βΌ βΌ βΌ βΌ
Home Scan Review CardDetail (alerts)
(My Cards) (CameraX) (edit) (QR + share)
β β β β
ββββββββββββ΄βββββ¬ββββ΄βββββββββββ
βΌ
βββββββββββββββββββββ
β CardViewModel β single source of truth
βββββββββββ¬ββββββββββ
βββββββββββββββββΌβββββββββββββββββ
βΌ βΌ βΌ
CardScanner CardParser CardStore
(ML Kit OCR) (text β fields) (local JSON)
β
VCard (vCard + QR + share)
tapcardapp/
βββ app/
β βββ build.gradle.kts
β βββ src/main/
β βββ AndroidManifest.xml
β βββ java/com/tertiaryinfotech/tapcard/
β β βββ MainActivity.kt
β β βββ TapcardApplication.kt
β β βββ model/ # DigitalCard, AppScreen
β β βββ ocr/ # CardScanner (ML Kit)
β β βββ util/ # CardParser, CardStore, VCard
β β βββ vm/ # CardViewModel
β β βββ ui/ # Home, Scan, Review, CardDetail, theme
β βββ res/ # icons, themes, strings
βββ scripts/make_keystore.sh # release signing helper
βββ store/ # Play Store listing, privacy policy, assets
βββ PLAY_STORE_SETUP.md
βββ README.md
- Android Studio (Ladybug or newer) with Android SDK 36
- JDK 17 (Android Studio's bundled JBR works)
- An Android device or emulator running Android 8.0 (API 26)+
git clone https://github.com/alfredang/tapcardapp_android.git
cd tapcardapp_android
# Debug build + install on a connected device
./gradlew :app:installDebugOr open the project in Android Studio and press Run.
# 1. Create your upload keystore (once)
./scripts/make_keystore.sh
# 2. Build the signed App Bundle for Play
./gradlew :app:bundleRelease
# β app/build/outputs/bundle/release/app-release.aabSee PLAY_STORE_SETUP.md for the full Play Store submission guide.
Tapcard has no backend. The camera is used only to photograph a business card, and the text is read entirely on-device by ML Kit. Cards are stored in the app's private storage and never uploaded. See store/privacy-policy.md.
Contributions are welcome! Fork the repo, create a feature branch, and open a pull request.
- Fork the project
- Create your branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Tertiary Infotech Academy Pte. Ltd. Singapore Β· tertiaryinfotech.com
- Jetpack Compose & Material 3
- Google ML Kit β on-device text recognition
- CameraX
- ZXing β QR generation
- Inspired by the Tapcard platform
β If you find this project useful, please consider giving it a star!




