GitHunt
FR

francescomasala/kon-giornata-pensiero

Caccia al Tesoro NFC (Nuxt + Prisma)

Applicazione Nuxt 3 per una caccia al tesoro a tappe con tag NFC.
Frontend costruito con primitive Radix UI per Vue (radix-vue).

Funzionalita

  • Registrazione giocatore con alias anonimo.
  • Stato tappe in cookie (kt_tag_state) e su DB.
  • Ogni tappa ha un UUID (dato unico nel link NFC).
  • Pagina scansione: /scan/<uuid>.
  • Dashboard giocatore con:
    • tappe passate / non passate,
    • inserimento risposta quando richiesta,
    • classifica con alias anonimi.
  • Area admin (/admin) protetta da password per:
    • creare e modificare tappe,
    • impostare domanda/risposta corretta,
    • vedere progressi dei giocatori.

Setup

  1. Installa dipendenze:
npm install
  1. Avvia PostgreSQL locale (opzionale con Docker):
docker compose up -d
  1. Crea .env da .env.example e imposta almeno ADMIN_PASSWORD.

  2. Genera DB e client Prisma:

npm run prisma:migrate -- --name init
  1. (Opzionale) Dati di esempio:
npm run prisma:seed
  1. Avvio sviluppo:
npm run dev

Flusso NFC consigliato

  • Scrivi nel tag NFC un URL del tipo: https://tuo-dominio.it/scan/<uuid>.
  • In alternativa usa Web NFC dalla dashboard giocatore (compatibilita browser limitata).

Database

  • Prisma usa PostgreSQL (provider = "postgresql").
  • Connection string esempio: postgresql://postgres:postgres@localhost:5432/treasure_hunt?schema=public.

API principali

  • POST /api/player crea giocatore anonimo.
  • PATCH /api/player/:id aggiorna alias.
  • GET /api/state?playerId=... stato giocatore + classifica.
  • POST /api/scan registra scansione tag.
  • POST /api/answer verifica risposta tappa.
  • POST /api/admin/login login admin.
  • GET /api/admin/tags, POST /api/admin/tags, PATCH /api/admin/tags/:id gestione tappe.
  • GET /api/admin/players riepilogo giocatori.

Languages

Vue49.0%TypeScript36.8%CSS14.1%

Contributors

Created February 20, 2026
Updated February 22, 2026