Skip to content

alfredang/tapcardapp_android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tapcard β€” Digital Business Card

Platform Language UI ML Kit minSdk License

Scan paper business cards, turn them into shareable digital cards with a QR code β€” all on-device.

Website Β· Report Bug Β· Request Feature

Screenshot

Screenshot

My Cards Scan Review Digital Card

About

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.

Key Features

  • πŸ“· 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

Tech Stack

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

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      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)

Project Structure

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

Getting Started

Prerequisites

  • 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)+

Build & Run

git clone https://github.com/alfredang/tapcardapp_android.git
cd tapcardapp_android

# Debug build + install on a connected device
./gradlew :app:installDebug

Or open the project in Android Studio and press Run.

Release build

# 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.aab

See PLAY_STORE_SETUP.md for the full Play Store submission guide.

Privacy

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.

Contributing

Contributions are welcome! Fork the repo, create a feature branch, and open a pull request.

  1. Fork the project
  2. Create your branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Developed By

Tertiary Infotech Academy Pte. Ltd. Singapore Β· tertiaryinfotech.com

Acknowledgements


⭐ If you find this project useful, please consider giving it a star!

About

πŸ“‡ Tapcard β€” native Android digital business card app. Scan paper cards with on-device OCR (ML Kit), then share yours as a QR vCard. Kotlin + Jetpack Compose.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors