Le policy RLS scritte su auth.uid() e il trigger di DD-016 non erano coperti da nessun test: schema-profili prova solo l'utente anonimo, e sul database di .env non si può scrivere perché è quello di produzione. Il nuovo test/integration/permessi.test.ts crea utenti veri sullo stack locale (npx supabase start) e interroga il database come loro: un giocatore vede e modifica solo il proprio profilo, non ne cancella, non cambia numero e ruolo mentre reclama uno slot, non prende lo slot di un altro, non si assegna il ruolo admin e non vede i ruoli altrui. Un controllo positivo sull'admin evita il falso verde di un database completamente chiuso. Prende URL e chiavi da `supabase status` invece che da .env e si ferma se l'URL non è locale: un .env puntato alla produzione non deve poter trasformare un test in una scrittura sul database vero. Senza stack locale si salta con il motivo, quindi la suite resta verde su una macchina senza Docker. Ogni test ripristina in un finally lo stato che tocca, così si rilancia senza db reset. test/README.md documenta il flusso Docker e corregge la convenzione: non è più «nessun test scrive sul database» ma «sul database di .env non scrive nessuno». Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
CrAPP 🏐
CrAPP è una Progressive Web App sviluppata per digitalizzare completamente la gestione di una squadra di pallavolo.
Funzionalità principali
- Gestione squadra
- Gestione presenze
- Calendario allenamenti e partite
- Scout Live
- Badge e gamification
- Statistiche
- Notifiche intelligenti
- Gestione amministrativa
- AI per la pianificazione degli allenamenti (in sviluppo)
Stack tecnologico
React 19, TypeScript, TanStack Start (SSR), Vite 8, Tailwind CSS 4, motion, vaul, Supabase (PostgreSQL, Auth, Storage), Vercel, GitHub. Dettagli in docs/ARCHITECTURE.md.
Avvio locale
Le dipendenze si installano con bun (bun.lock):
bun install
npm run dev # http://localhost:8080
Comandi
npm run build # build di produzione
npm run lint # eslint (include prettier)
npm run test # test unit; npm run test:all per la suite completa
Chi aggiunge o modifica una funzione scrive anche il test e lo lascia verde (test/README.md).
Deploy
Deploy automatico su Vercel a ogni push su main, che è anche il branch di lavoro corrente.
develop pubblica un Preview Deployment, ma oggi è indietro rispetto a main. Su quale branch
committare lo decide chi sviluppa (DD-019).
Variabili d'ambiente
Il progetto richiede le seguenti variabili:
SUPABASE_URLSUPABASE_PUBLISHABLE_KEYVITE_SUPABASE_URLVITE_SUPABASE_PUBLISHABLE_KEY
Documentazione
Indice in docs/README.md. Le regole per gli assistenti AI stanno in AGENTS.md, lo stato corrente del lavoro in PROJECT_STATE.md.