davideandClaude Sonnet 5 689468141d Sposta roster, eventi, presenze, voti, scout e palloni su PocketBase
Riscrive i moduli dati che parlavano con Supabase per usare l'SDK
PocketBase, mantenendo invariate le firme degli hook React Query così i
componenti a valle non cambiano: giocatori-squadra, eventi, presenze,
cacche, pagelle, mvp-voti, badge-social, scout (store/live/stato),
palloni.

Aggiunge due helper condivisi in src/integrations/pocketbase/:
- upsert.ts: PocketBase non ha upsert nativo, questi replicano il
  pattern onConflict di Supabase (per id significativo o per filtro su
  combinazione di campi), verificati contro un'istanza reale così da non
  duplicare record sulla stessa scrittura ripetuta;
- formato.ts: normalizza le date PocketBase ("AAAA-MM-GG HH:MM:SS.sssZ",
  spazio non "T") a ISO stretto, altrimenti Date.parse e i confronti
  testuali con altre date si comportano in modo incoerente.

Corregge anche due problemi trovati testando contro un'istanza reale:
- alcune API rule confrontavano un campo relazione con @request.auth.id
  senza richiedere l'autenticazione, lasciando passare richieste anonime
  quando entrambi i lati erano vuoti;
- gli hook non riconoscevano il superuser PocketBase (solo il ruolo
  admin applicativo), bloccando le operazioni fatte con pbAdmin.

Aggiunta la colonna "casa" mancante su eventi_app e i campi di sistema
created/updated (non generati automaticamente da PocketBase per le
collection create via migration, a differenza di quanto assunto
inizialmente).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 14:58:27 +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

Solo per lo sviluppo locale con PocketBase al posto di Supabase (vedi docs/PORTABILITA.md):

  • VITE_POCKETBASE_URL / POCKETBASE_URLhttp://127.0.0.1:8090 con docker-compose.pocketbase.yml
  • POCKETBASE_SUPERUSER_EMAIL / POCKETBASE_SUPERUSER_PASSWORD — credenziali del superuser creato al primo avvio, usate solo dalle route server che oggi usano supabaseAdmin

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%