Tappalo — card NFC per le recensioni
Una card NFC o un QR porta i clienti alla recensione Google, e ogni passo viene tracciato.
- Next.js
- React
- TypeScript
- Prisma
- PostgreSQL
- Neon
- Google Places API
- Tailwind
- 9 / 36commit sono miei; gli altri 27 sono del collaboratore
- +3,200righe aggiunte nei miei commit, 926 rimosse
Un tap, una recensione, un livello in più
Tocca un blocco per vedere cosa fa.
- Logica
- Dati
- Uscita
- Persone
- Ingresso
Il cuore del sistema
Il giro delle recensioni NFC
Un tap apre il box della recensione Google. Poi la sincronizzazione giornaliera vede ogni recensione nuova e vera e la trasforma in XP, badge e un punteggio che il titolare vede salire.
Collegato a Sync recensioni, Pagina brandizzata
Logica
Pagina brandizzata
Pagina del locale che apre il box della recensione Google, o redirect diretto. Ogni passo (tap, clic Google, clic social) va a un'API di tracciamento. Parte del collaboratore.
- Next.js
Riceve da Tap sulla cardPassa a DB produzione (mio), Il giro delle recensioni NFC
Logica
Sync recensioni
Un cron giornaliero legge voto e recensioni da Google Places, salva uno snapshot e tiene solo le recensioni mai viste. Parte del collaboratore.
- Google Places API
- Cron
Riceve da Il giro delle recensioni NFCPassa a Motore crescita (mio), DB produzione (mio)
Logica
Motore crescita (mio)
XP per ogni recensione nuova e ogni 5 stelle, traguardi unici da 10 a 10.000 recensioni, tetti giornalieri, serie, 10 livelli, 15 badge, punteggio da 0 a 100.
- TypeScript
Riceve da Sync recensioniPassa a DB produzione (mio)
Dati
DB produzione (mio)
PostgreSQL su Neon con Prisma, con SQLite per lo sviluppo locale. Ho aggiunto i modelli per azioni di crescita, obiettivi, badge e Brand Vault.
- PostgreSQL
- Neon
- Prisma
Riceve da Pagina brandizzata, Sync recensioni, Motore crescita (mio), Richieste card (mie)Passa a Dashboard titolare
Uscita
Dashboard titolare
KPI, recensioni, bozze di risposta, concorrenti e blocchi per piano (del collaboratore), più percorso di crescita e Brand Vault (miei), con progressi animati.
- React
- Tailwind
- framer-motion
Riceve da DB produzione (mio)
Persone
Richieste card (mie)
Il modulo di richiesta ora salva ogni ordine su database, e una pagina admin li elenca e li aggiorna invece di perderli in un messaggio.
- Next.js
- Prisma
Passa a DB produzione (mio)
Ingresso
Tap sulla card
Il cliente avvicina il telefono alla card NFC sul banco o ne inquadra il QR. Card e QR sono generati per ogni locale. Parte del collaboratore.
- NFC
- QR
Passa a Pagina brandizzata
Il problema
Ristoranti, bar e barbieri ricevono poche recensioni Google anche quando i clienti sono soddisfatti: manca un gesto semplice al momento giusto e manca un modo per misurare il risultato. Il prodotto risponde con una card NFC o un QR che apre una pagina brandizzata e poi il box della recensione.
Cosa ho costruito
- Ho portato la produzione da SQLite a PostgreSQL su Neon con Prisma, lasciando SQLite per il lavoro in locale.
- Ho costruito il percorso di crescita: un punteggio di reputazione da 0 a 100, XP, 10 livelli, serie giornaliere e 15 badge, con missioni ricavate dai numeri reali del locale.
- Ho collegato gli XP alla sincronizzazione giornaliera con Google già esistente, così i punti arrivano solo da recensioni reali nuove e da traguardi sul numero di recensioni.
- Ho aggiunto il Brand Vault, salvato su database le richieste di card con un pannello admin per gestirle e rivisto cosa sblocca ogni piano.
- Ho rimosso dal repo una password admin scritta nel codice.
La parte difficile
Rendere il gioco impossibile da falsare. Gli XP arrivano solo dalla sincronizzazione giornaliera con Google: una recensione dà punti la prima volta che la sync la vede, ogni traguardo paga una volta sola e le azioni hanno tetti giornalieri, così il progresso segue le recensioni vere e non i clic.
Risultato
Il prodotto è online con un nuovo nome sul suo dominio. I miei 9 commit su 36 hanno aggiunto circa 3.200 righe: database di produzione, percorso di crescita con Brand Vault, richieste card con il loro pannello admin e il fix della password.
Il mio ruolo
In un team di due: il collaboratore ha costruito la base Next.js e la maggior parte del prodotto (27 commit su 36); le mie parti sono quelle sopra, scritte con Claude Code.