davideandClaude Opus 5 7c1f08d943 Copre la cache delle presenze, le tabelle aperte e le letture server.
Chiude i tre buchi di copertura rimasti dalla rilettura della documentazione:
comportamenti che la doc descrive come regole ma che nessun test verificava.

- conRisposta() esce da useSalvaPresenza e diventa una funzione pura in presenze.ts.
  La mutation non rilegge dopo la scrittura, quindi la cache deve imitare il database:
  l'istante si scrive solo se manca (??=) e il ritiro della risposta lo cancella. Erano
  due dettagli che serie-presenze.md chiede di preservare e che un refactor poteva
  perdere in silenzio, falsando la serie "Conferme 24h" fino al refresh successivo.
- permessi.test.ts copre ora anche il terzo gruppo di DD-023, le tabelle lasciate
  aperte di proposito: scout_sessioni, scout_live, scout_partite e push_subscriptions.
  Non dicono che sono sicure, dicono che sono aperte per scelta: se una prende un gate
  nell'interfaccia, le policy devono seguirlo e questi casi vanno cambiati con loro.
- lettori-server.test.ts esegue leggiEventi() e leggiGiocatoriSquadra() sul database
  locale, mettendo le credenziali in process.env prima della prima chiamata perché
  supabaseAdmin nasce pigramente. Nessuna delle due controlla l'errore di PostgREST:
  una colonna rinominata darebbe zero righe, zero destinatari e nessuna push, senza
  che niente segnali il problema. Scrivendolo è emerso che eventi_app.note è NOT NULL,
  mentre RigaEvento lo dichiara nullable.

PROJECT_STATE: m12_niente_autovoto è applicata in produzione dal 06/09/2026,
verificata con `npx supabase migration list` (23 migration, local = remote).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 19:46:52 +02:00
2026-09-03 14:23:56 +02:00

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_URL
  • SUPABASE_PUBLISHABLE_KEY
  • VITE_SUPABASE_URL
  • VITE_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.

S
Description
App del CRAP, ottimizzazione di sporteasy adattata alle esigenze della squadra, campionato e extra
https://crapp-iv11.vercel.app
Readme
2.3 MiB
Languages
TypeScript 94.4%
PLpgSQL 3.5%
CSS 1.8%
JavaScript 0.3%