Case study
TapCarte
Virtual Business Cards in the Phone Wallet
Role
Scope
Stack
Live
What I built.
- 01
Owned the product end to end since 2023: architecture, backend, admin dashboard, wallet integrations, cloud setup and ongoing work.
- 02
One entry in the dashboard produces both an Apple Wallet card and a Google Wallet card, in the client’s colours with their logo and photo.
- 03
When a phone number or job title changes, the admin edits it once and the card updates on every phone it is saved to.
- 04
Admins search every card in one table, add, edit, duplicate or delete, and see a live preview of the wallet card while editing.
- 05
Photos and logos are uploaded and cropped in the dashboard, and one click copies each person’s add-to-wallet link.
- 06
Moved the product to its new TapCarte branding and added bilingual French and English card content for the Quebec market.
- 01
Express and TypeScript API on MongoDB, with a React 18 admin SPA on Chakra UI and Ant Design, Formik and Yup.
- 02
Signed .pkpass generation with runtime photo and logo assets, per-user colours and an encrypted authentication token.
- 03
The full Apple PassKit Web Service with custom pass validation, and APNs pushes on every update so installed cards refresh silently.
- 04
Google Wallet Generic Class and Object upserts, RS256 save links, and ECv2SigningOnly verification of Google’s callbacks.
- 05
Busboy multipart uploads to Google Cloud Storage, after migrating the media store off AWS S3.
- 06
One bilingual content source generating both the Apple back fields and the Google link rows, so the copy is identical on both wallets.