Skip to content
/ tapkey Public

Cross-platform NFC toolkit (iOS/Android) for reading NFC/RFID tags, secure storage, and compliant integrations. Not for cloning third-party access cards.

License

Notifications You must be signed in to change notification settings

zahi1/tapkey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TapKey

A cross-platform NFC toolkit to read and manage NFC/RFID tag data on iOS and Android. Focused on legitimate, standards-based reading (NDEF, ISO-14443/15693/FeliCa) and secure local storage. This project does not clone or emulate third‑party access cards.

Important limitations up front:

  • Apple Wallet “Home Key/Car Key/ID” passes require Apple-issued entitlements and partner agreements. Third-party apps cannot add arbitrary access cards to Apple Wallet.
  • Samsung Wallet keys also require OEM/partner integrations.
  • Arbitrary card emulation/cloning is restricted (iOS forbids it; Android allows limited HCE for ISO 14443-4, not for proprietary classic keys) and may violate law/policies.

TapKey is a learning and prototyping toolkit. It helps you:

  • Read NFC tags (NDEF payloads, tag UID, technology type) on iOS and Android.
  • Organize and store tag metadata securely in-app (“vault”).
  • Export/share non-sensitive tag info for diagnostics.
  • Explore paths toward compliant integrations (Android HCE for your own system; Apple/Samsung partner programs for Wallet).

Why this exists

People often want to “put a door card in the phone’s wallet.” Today, platforms don’t allow that unless you control the lock ecosystem and have the required entitlements/partnerships. TapKey demystifies what’s possible now and provides a clean foundation to build compliant solutions.

Tech choices

  • iOS: Swift + SwiftUI + Core NFC (NDEF, ISO7816 APDUs, ISO15693, FeliCa)
  • Android: Kotlin + Android NFC APIs (NfcAdapter, Tag, IsoDep, NfcA/B/F/V, MifareUltralight, MifareClassic where available)
  • Optional future: Flutter/React Native UI with native modules for NFC. Start native for best NFC coverage.

Capabilities (high-level)

  • iOS
    • Read: NDEF, tag UID, tech family; send ISO7816 APDUs to supported tags
    • Cannot emulate arbitrary cards; Wallet passes for keys require entitlements
  • Android
    • Read: NDEF, UID, tech list; low-level tech access (IsoDep, Mifare*) per device
    • Optional HCE (ISO 14443-4) for your own backend-managed credentials (not existing third-party access cards)

See docs/CAPABILITIES.md for details and caveats.

Repository structure

  • docs/ — background, capabilities, roadmap
  • mobile/
    • ios/ — Swift snippets for Core NFC (not a full Xcode project yet)
    • android/ — Kotlin snippets for NFC (not a full Gradle project yet)
  • LICENSE — MIT

Getting started

This repo currently provides documentation and starter code snippets. Full app projects will be added incrementally.

  • iOS prototype (device required):
    • Open mobile/ios/SampleNfcReader.swift in Xcode as part of a new SwiftUI app target, add the Near Field Communication Tag Reading capability, and test on device.
  • Android prototype:
    • Add mobile/android/NfcReader.kt to a new Android app module and enable NFC foreground dispatch or reader mode.

We’ll add full buildable app templates in subsequent milestones.

Roadmap

  • M1: Minimal reader on iOS and Android (NDEF + UID) with local encrypted storage
  • M2: Tag tech details inspectors (IsoDep, NfcV, FeliCa) and APDU console (iOS/Android)
  • M3: Android HCE example for a custom demo credential (non-sensitive)
  • M4: Optional cross-platform UI wrapper (Flutter/React Native)
  • M5: Partner integration notes and sample stubs (Wallet/SE flows) — documentation only unless entitlement granted

See docs/ROADMAP.md for more.

Security & compliance

  • No storage of private keys without proper key management.
  • Respect local laws and property rights; do not attempt to clone cards you don’t own/control.
  • Follow App Store/Play policies; iOS forbids card emulation.

Naming note

“TapKey” may overlap with existing trademarks. If you plan public distribution, consider an alternate like “TapKeyKit” or “TapKeyLab.”

GitHub repository metadata

  • Name: tapkey
  • Description: Cross-platform NFC toolkit (iOS/Android) for reading NFC/RFID tags, secure storage, and compliant integrations. Not for cloning third-party access cards.
  • Topics: nfc, rfid, mifare, core-nfc, ios, android, wallet, hce, desfire, felica, iso14443, iso15693, iso7816, swift, kotlin, security, privacy

License

MIT — see LICENSE.

About

Cross-platform NFC toolkit (iOS/Android) for reading NFC/RFID tags, secure storage, and compliant integrations. Not for cloning third-party access cards.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published