All work

Tappalo — NFC review cards for venues

An NFC card or QR sends customers to the Google review box, and every step is tracked.

Stack:
  • Next.js
  • React
  • TypeScript
  • Prisma
  • PostgreSQL
  • Neon
  • Google Places API
  • Tailwind
  • 9 / 36commits are mine; the other 27 are my teammate's
  • +3,200lines added in my commits, 926 removed

A tap, a review, a level up

Tap a block to see what it does.

  • Logic
  • Data
  • Output
  • People
  • Input
Google sync once a day

The heart of the system

NFC review loop

A tap opens the Google review box. The daily sync then sees each new real review and turns it into XP, badges and a score the owner watches climb.

Connected to Daily review sync, Branded page

The problem

Restaurants, bars and barbers get few Google reviews even when customers are happy: there is no simple gesture at the right moment and no way to measure the result. The product answers with an NFC card or a QR code that opens a branded page and then the review box.

What I built

  1. I moved production from SQLite to PostgreSQL on Neon through Prisma, keeping SQLite for local work.
  2. I built the growth path: a 0 to 100 reputation score, XP, 10 levels, daily streaks and 15 badges, with missions drawn from the venue's real numbers.
  3. I tied XP to the existing daily Google sync, so points come only from new real reviews and from review-count milestones.
  4. I added the Brand Vault, saved card requests to the database with an admin panel to handle them, and revised what each plan unlocks.
  5. I removed a hard-coded admin password from the repo.

The hard part

Making the game impossible to fake. XP comes only from the daily Google sync: a review earns points the first time the sync sees it, each milestone pays once and actions have daily caps, so progress follows real reviews instead of clicks.

Result

The product is live under a new name on its own domain. My 9 of 36 commits added about 3,200 lines: the production database, the growth path with Brand Vault, card requests with their admin panel and the password fix.

My role

In a team of two: my teammate built the Next.js base and most of the product (27 of 36 commits); my parts are the ones above, written with Claude Code.