ZappyCards — NFC review cards, configured from your phone
An RN + Expo app that writes Google review URLs onto NFC cards. Business owners configure a card once, customers tap to leave a review. Live on App Store and Play Store.
- Role
- Mobile, NFC, auth, App Store & Play Store publishing
- Year
- 2025
- Live
- Visit site ↗
Problem
Asking customers for Google reviews is one of the most brittle loops in running a small business. Owners stick QR codes on receipts, print flyers, or nudge by WhatsApp. Conversion is poor because every extra tap loses people. A physical NFC card that a customer taps to land directly in the Google Maps review sheet — no app install, no URL to type — is a much shorter path. But the cards only become useful if the business can write their own review link to the card without shipping cards back to a factory. That's the gap the app fills.
Approach
Two flows in one app:
- Configure a card. The owner pastes their Google place link or place ID, taps a blank NFC card against the back of the phone, and the app writes the URL as an NDEF record. From that point, any phone tapping the card opens the review modal.
- Verify / fallback scan. Read mode lets the owner double-check what's written before handing cards to staff. A QR scanner covers phones without NFC — cheap older Androids, iPhones locked to older iOS versions — so the same card stays useful across the install base.
Auth is email/password and Google Sign-In. Most owners pick Google because it's the same account that owns their Google Business Profile, so the review link and the login already share an identity in their head.
Expo managed workflow kept the two-store release pipeline to one config, one EAS build command, one set of credentials. The only native bits that needed attention were NFC entitlements on iOS and the NFC feature declaration on Android.
Technical deep-dive
- NFC write. Wrapped
react-native-nfc-managerin a thin module that takes a URL, encodes it as an NDEF URI record, and pushes it to the first tag in the field. iOS and Android diverge here — iOS requires a user-initiatedrequestTechnologycall per write, Android permits a persistent session. The wrapper hides the split behind a single "hold the card to your phone" screen. - NDEF URI well-known prefixes. Cheap NTAG213 tags carry only 137 bytes of user memory. Using the URI record's well-known prefix table (
https://as a single byte instead of eight) is the difference between a review URL fitting and overflowing. Small thing; it's the reason the app works on bulk-ordered cards and not just premium ones. - Google Sign-In on Expo.
@react-native-google-signin/google-signinwith separate iOS, Android, and Web OAuth client IDs. The gotcha was the config plugin step — without it, Google Sign-In fails silently on iOS TestFlight builds but works in the simulator. Documented in the repo so future-me doesn't lose an afternoon to it twice. - QR as belt-and-braces. Every card gets the review URL encoded into both the NFC chip and a QR code printed on the face. The app's scan mode uses the camera for the QR path. Same URL, two transports — the card keeps working even when the phone's NFC doesn't cooperate.
Outcome
Live on both stores under com.hazratali451.zappycard. The configure-a-card loop is the main session, usually under 30 seconds from sign-in to card written. The QR fallback rescues a meaningful slice of older-iPhone owners who can't initiate NFC writes from an app.
Stack & handoff
React Native + Expo, EAS Build for binaries, EAS Submit for store uploads. NFC and NDEF encoding handled entirely client-side — no backend required for the write flow itself. Auth keys scoped to the app bundle IDs.
Stack
Related work
- Web & ecommerce2026
Bismillah Agro — bilingual agriculture ecommerce for Bangladesh
A bilingual (Bangla + English) agriculture ecommerce store for Bangladesh, built as a demo through my agency NextWebz — Next.js + MongoDB + Redis, SSLCommerz checkout, and a conditional COD rule that unlocks cash-on-delivery only after a clean delivery history.
Next.js 16ReactTypeScriptMongoDB+7Read case study - Web & ecommerce2026
Events BD — event ticketing platform for Bangladesh
A full-stack event ticketing platform for Bangladesh — OTP auth, organiser dashboards, and PDF + QR tickets emailed on checkout. Conferences, meetups, cultural events.
Next.js 16ReactTypeScriptRedux Toolkit+10Read case study