/hub, si chiama hub): tiene aperta la porta a chi ha scritto la password o ha aperto
il suo link, per sei mesi, solo lì; contiene una firma, non un dato personale, e non serve a
riconoscerti altrove. È un cookie necessario al servizio che hai chiesto, e per questo non vuole un consenso.
Lo stesso vale per il cookie demo del sito di prova (prova-bordocampo.vercel.app), che si apre con un
codice: una firma, sei mesi, solo lì.
Dal 27/10/2026 c’è anche il cookie tecnico della sessione (si chiama adc_ e
un codice): quando entri, la password non resta nel telefono, dove uno script potrebbe leggerla, ma chiusa e
cifrata in questo cookie, che nessuno script può leggere e che viaggia solo verso il nostro sito. Dura sei mesi,
si spegne quando esci, e smette di aprire se la password cambia o l’accesso viene tolto. Anche questo è
necessario al servizio che hai chiesto (restare dentro) e non vuole un consenso.
Le visite delle pagine pubbliche (questa vetrina, non l’app) le contiamo con Vercel Web Analytics:
nessun cookie, nessun identificativo della persona (un’impronta che cambia ogni giorno e non si rilegge),
solo quante pagine e da dove. Nell’app e nella pagina della società non c’è.
Questa pagina non è un modulo legale copiato: descrive quello che il prodotto fa davvero, e per ogni cosa dice dove sta scritta nel codice. Se una frase qui dentro non fosse vera, sarebbe un difetto da correggere — non una formula da sistemare.
Di chi sono i dati
Di ogni società i suoi. Una società che entra qui porta i nomi dei suoi
tesserati, le sue domeniche e le sue foto, e nessun’altra società li
vede: ogni annata sta in uno spazio separato del database, non in una tabella comune
con una colonna che dice di chi è.
Un tenant è uno schema Postgres a sé — tenant.js, suSchema()
Dove stanno
In Irlanda, nella regione eu-west-1 di Supabase. La scelta è
stata fatta per questo motivo: i dati di bambini italiani restano in Europa.
db.js — la connessione a Supabase, regione eu-west-1; vercel.json — regions: dub1
La copia di sicurezza. Ogni trenta minuti un nostro server in Italia (un VPS
di Aruba) legge il database con un accesso di sola lettura, ne fa una copia compressa e la mette in
un secondo spazio Supabase nostro, privato, sempre in Irlanda. Sul server la copia passa e basta: finito il giro
non ne resta niente. Teniamo le copie delle ultime 24 ore, poi una al giorno per 14 giorni; poi si cancellano da sole.
strumenti/copia-ogni-trenta.mjs — il giro; ruolo copia_lettura — solo SELECT; secchio privato copie-database
L’app sul telefono, e le notifiche
L’app degli store è lo stesso sito dentro un guscio: i dati stanno dove stanno per il sito,
e sul telefono resta solo il tuo accesso (la password, o il link). Se accendi le notifiche,
il telefono ci dà un identificativo del dispositivo, che non dice chi sei: lo teniamo
per mandarle e lo cancelliamo quando esci o elimini l’accesso. Le notifiche passano dai servizi di
Google (Android) e Apple (iPhone), e per questo non contengono mai il nome di un bambino:
dicono che c’è una convocazione o un gol, e il resto si legge nell’app.
Il tuo accesso lo elimini dall’app, dalla campanella: come si fa.
dispositivi.js — l’identificativo, tolto all’uscita; push.js — i testi, senza nomi di persone;
accessi.js — togliMe
Le password non si rileggono, nemmeno da qui
Nel database non c’è nessuna password: c’è solo la sua
impronta, diversa per ognuno anche a parità di password. Vuol dire una
cosa concreta e scomoda anche per noi: una password dimenticata non si recupera,
se ne assegna una nuova. Nessuno qui dentro può leggere la tua.
accessi.js — crypto.scryptSync(pw, sale, 32)
Le foto dei bambini
Stanno in un deposito privato, non raggiungibile da chi non ha il permesso.
Gli indirizzi per vederle li firma il server a ogni visita e scadono dopo sei ore (la scadenza del link non cancella una copia già salvata da chi l’ha aperto):
un link copiato oggi domani non apre niente.
foto.js — DURATA_FIRMA = 6 * 60 * 60
E di ogni bambino la società registra se le sue foto si possono pubblicare: non una casella,
ma il modulo firmato da chi esercita la responsabilità genitoriale, mandato
dalla famiglia dal suo link o caricato dalla pagina della società, e conservato come copia nello stesso deposito
privato. Vale solo dopo che qualcuno della società ha visto la firma. Le foto sono della
giornata, non del singolo bambino, quindi non c’è un filtro che tolga un
viso da una foto di gruppo: chi non ha il consenso lo vede la società prima
di caricare, nell’elenco «I consensi foto», ed è lei a decidere cosa
pubblicare.
cruscotto.js — senza_consenso: si conta e si segnala; un consenso arrivato dalla famiglia e non ancora visto conta come mancante; foto.js non lo guarda
Quando il consenso si firma nell’app o dal link, con la firma restano chi ha firmato e in che veste,
la data e l’ora, il testo firmato con la sua impronta, l’indirizzo IP e il tipo di telefono: sono la prova
che quella firma è stata data da quella persona, e la ricevuta in PDF li riporta tutti. Una risposta non si
cancella: se cambi idea se ne scrive un’altra, e vale l’ultima.
visita.js — firmaPer: x-forwarded-for, user-agent, impronta; tabella consensi nel registro
Chi tiene la piattaforma conta, non legge
Noi teniamo il portale di sopra. Da lì vediamo quante persone ha una
società, quanti tornei, quanti certificati in scadenza. Non vediamo un nome.
Non è un filtro che qualcuno potrebbe dimenticare: è che quelle query non leggono
quelle colonne, e una funzione toglie comunque i nomi da quello che passa di lì.
cruscotto.js — senzaNomi(), e le query che contano senza selezionare
Quando serve assistenza si entra dalla porta della società, con una sessione che dura mezz’ora — e quell’ingresso resta scritto nel registro della società, che la società può sempre leggere. Non chiediamo mai a nessuno la sua password.
Il link pubblico di un torneo
Una società può condividere il programma di un torneo con un link che apre
chiunque. Dentro non c’è un solo bambino: squadre, orari, campi,
risultati, classifica. Niente marcatori, niente convocati, niente foto, niente nomi. Anche qui
non è un filtro: sono quali tabelle si leggono, e quelle dei bambini non
vengono toccate.
pubblico-torneo.js — legge eventi, partite, tabellone; non tocca persone né convocazioni
Per le categorie di base — Piccoli Amici, Primi Calci, Pulcini, Esordienti — la FIGC
chiede che i risultati e le classifiche non si pubblichino. Lo decide la
società, annata per annata, con una levetta sola che vale per le famiglie, per il link
pubblico e per la TV: è lei a rispondere del comunicato, e lo legge accanto alla levetta
e ogni volta che condivide il link di un torneo. Spenta, il link mostra squadre, campi e orari
e basta.
categoria.js — CU n. 2 FIGC-SGS 2026/27, pag. 12 e 13; pubblico-torneo.js — senzaRisultati; vetrina_annate nel registro
Del certificato medico la società tiene la copia, e la tiene lei
Il certificato del medico è un documento sanitario di un minore. Fino al 30 settembre 2026 ne
entrava la data e basta; dal 1° ottobre la famiglia manda la foto del certificato
(o il PDF) dal suo link, oppure la carica la segreteria, e la società ne tiene la copia nel suo
deposito privato: gli stessi indirizzi firmati a sei ore delle foto, visibili a chi ha la password
della pagina della società. Dal link della famiglia la copia non si riapre: chi ha il link vede il
nome del bambino, la data, e che la copia è arrivata. Accanto resta scritto chi l’ha
mandata e chi, nella società, l’ha vista. Finché la società non l’ha vista, il
bambino non è convocabile: la data dichiarata dalla famiglia da sola non basta. Quando arriva
un certificato nuovo, la copia vecchia si toglie.
allegati.js — il deposito; visita.js — la porta della famiglia; anagrafe_documenti.file nel registro
Cosa non c’è, per scelta
- I voti. Un dato che esiste crea la domanda, e «mio figlio ha giocato
meno» è una conversazione che nessuna società vuole avere — per di
più con la prova che gliela diamo noi. Per questo i minuti giocati, che dal
1° ottobre il dirigente può segnare dal campo (chi parte e i cambi), sono della
società: alle famiglie arrivano solo se la società accende l’interruttore,
che nasce spento.
pubblico.js—minuti: v.minuti ? tutto.minuti : [];vetrina_famiglie.minutinel registro - La diagnosi. Quando un bambino non può giocare per un po’, la famiglia (o lo staff) scrive
una data di rientro; il motivo è facoltativo ed è una parola fra tre, infortunio, malattia o altro,
che sceglie la famiglia. Niente certificati, niente diagnosi. Lo leggono il mister, i dirigenti e la società;
le altre famiglie no. La riga resta nella storia perché le sedute saltate da fermo non abbassino la
percentuale delle presenze.
indisponibilita-dati.js; la tabellaindisponibilitanell’annata - La contabilità. Niente stipendi, niente compensi, niente quote dei bambini. Per fatturare l’abbonamento teniamo nome, sede e codice fiscale o P. IVA della società, dieci anni: sono dati della società, non dei bambini. Il codice fiscale di un tesserato entra solo se sta nel file dell’anagrafe che la società carica, e serve a una cosa sola: riconoscere lo stesso bambino in due annate senza confondere due omonimi. Non compare nelle viste pubbliche: lo vede solo chi ha la password della società.
- I bambini delle altre società. Quando leggiamo il calendario di un torneo prendiamo squadre, orari e risultati. Gli elenchi dei giocatori delle altre squadre non li chiediamo mai.
Quello che il tuo telefono ricorda
Nel browser restano poche cose, e ci restano perché il servizio che hai chiesto funzioni: il nome utente e la password con cui sei entrato — o il lasciapassare dell’invito, se sei entrato da un link — così non la ribatti ogni weekend; il bambino che hai scelto in «di chi sei la famiglia?»; la vista chiara o scura; i gol che non sono ancora partiti quando al campo manca la rete; quali avvisi hai già letto e le ultime scelte fatte nelle grafiche. Non sono cookie, non viaggiano, e spariscono con «esci» o cancellando i dati del sito.
Le notifiche sul telefono
Partono solo se le accendi tu, dalla campanella, e il telefono ti chiede il permesso. Da quel momento
il server tiene l’indirizzo di consegna che il tuo browser gli dà (una stringa senza il tuo nome),
e ogni avviso passa dal servizio di notifiche del tuo telefono — Google (Android e Chrome),
Apple (iPhone, dall’app sulla schermata Home), Mozilla (Firefox). Il messaggio
viaggia cifrato: quel servizio vede che ti è arrivato qualcosa, non cosa dice. Si spengono dalla stessa
campanella, e un telefono che non risponde più si dimentica da solo.
push.js — web-push con chiavi VAPID; push_iscrizioni nell’annata; sw.js non ha nessun fetch: niente copie
Chi altro tocca i dati
Cinque fornitori per i dati, più i servizi di notifica del tuo telefono e, quando acceso, Stripe per i pagamenti; tutti per nostro conto. Supabase (Supabase Inc., USA) ospita il
database in Irlanda, e le copie di sicurezza: come ogni fornitore di hosting può tecnicamente accedere ai byte
che custodisce. Aruba (Aruba S.p.A., Italia) ospita il server che fa la copia ogni trenta minuti:
i dati ci passano, non ci restano. Vercel (Vercel Inc., USA) serve le pagine da Dublino e, come
ogni server, vede l’indirizzo IP di chi apre il sito e lo tiene nei suoi registri tecnici per qualche
giorno. Resend (Resend Inc., USA) spedisce le email del servizio — la conferma
dell’iscrizione, il link dei documenti a una famiglia, il codice prima di una firma, la ricevuta del
consenso — e vede quindi l’indirizzo e il testo di quelle email; senza la posta configurata non
parte nessuna mail. Anthropic (Anthropic PBC, USA) è il modello di intelligenza
artificiale, a pagamento e con la clausola che non addestra sui dati: legge una distinta o un calendario
fotografati quando qualcuno li carica (nel foglio ci sono i nomi dei convocati), e cerca sul web lo stemma di una squadra avversaria
(lì passa solo il nome di un club). Si chiama solo in quei due momenti, mai sui dati dell’archivio.
Niente Google Fonts, niente analytics, niente pubblicità; i servizi di notifica di Google, Apple e
Mozilla sono descritti sopra. La diretta video: quando lo staff collega la diretta di una partita su
YouTube e chi segue la squadra apre il Live, il video si carica da youtube-nocookie.com (Google), la forma
di YouTube senza biscotti di profilazione, che vede l’indirizzo di rete di chi guarda; nient’altro dell’app ci arriva.
Senza una diretta collegata non si carica niente.
vercel.json — regions: dub1; posta.js — Resend via HTTP; ai.js, stemmi.js — le due chiamate al modello
Per quanto tempo restano
Finché la società esiste: sono la sua stagione. Un torneo cancellato resta nel
cestino trenta giorni, poi sparisce; le copie di sicurezza dell’archivio
durano anch’esse trenta giorni. Un bambino che lascia la società si
spegne: esce dalla rosa, ma le domeniche in cui c’era restano com’erano; la copia del suo
certificato medico e dei suoi documenti si cancella alla fine della stagione in cui è uscito (30 giugno),
salvo che la società chieda per iscritto di tenerla, e un consenso alle immagini firmato resta con la sua
ricevuta. Una società senza accessi da dodici mesi riceve un avviso; se nessuno entra nei dodici mesi dopo,
viene cancellata per intero, avvisata trenta giorni prima. Una società che chiude viene
cancellata per intero, subito, con tutte le sue annate; le copie di sicurezza spariscono
entro trenta giorni, e dopo non resta niente da noi.
cestino.js — GIORNI_NEL_CESTINO = 30; piattaforma.js — eliminaSocieta fa drop schema
Perché possiamo trattarli, e i tuoi diritti
I dati del servizio li trattiamo perché servono al contratto con la società (art. 6.1.b GDPR); il registro di chi ha fatto cosa, la sicurezza e il conteggio delle visite stanno sul nostro interesse legittimo a tenere il servizio sicuro e a sapere se funziona (art. 6.1.f). Li teniamo finché la società esiste; il registro dodici mesi; i dati delle fatture dieci anni. Puoi chiederci di vederli, correggerli, cancellarli, limitarli, portarli altrove e opporti: scrivi a ciao@abordocampo.it, rispondiamo entro trenta giorni. Puoi anche rivolgerti al Garante per la protezione dei dati personali (garanteprivacy.it).
Chi siamo, e a chi si scrive
Abordocampo è di Kaiser S.r.l. (Viale Abruzzi 16, 20131 Milano, P. IVA 03231690839, PEC kaisersrl@pec.it), che è il titolare del trattamento per i dati di cui sopra: quelli del servizio — gli accessi, il registro di chi ha fatto cosa, le impronte delle password, l’email di chi apre una società, la prova e i pagamenti (quando finisce la prova, fino a quando è pagato, i voucher usati).
Per i dati dei tesserati decide la società, non noi: è lei che li raccoglie, che dà gli accessi e che risponde alle famiglie. Noi teniamo lo strumento, e li trattiamo per suo conto. Se sei un genitore, la strada per sapere cosa c’è scritto su tuo figlio, correggerlo o farlo togliere è la tua società: la richiesta si fa a lei.
Dall’app e dai link personali una famiglia non cancella niente da sola.
Può ritirare il consenso alle foto, e basta: il resto lo fa la società, che spegne
il tesserato e toglie i documenti. Quando serve togliere anche la riga in anagrafe e le copie
dei documenti, la società lo chiede a noi e lo facciamo noi, a mano.
visita.js — le scritture della famiglia sono quattro: scrivi, consenso, firma, ritira; nessuna cancella
Per tutto il resto:
ciao@abordocampo.it — richieste sui dati, all’attenzione del
responsabile della protezione dei dati, Roberto Ruggeri (anche via PEC: kaisersrl@pec.it)
ciao@abordocampo.it — qualunque altra cosa