Separazione dei dati, consensi e limiti dichiarati
Il club ci affida i dati dei bambini. Per questo qui sotto è descritto un meccanismo, non una garanzia: come è fatta la separazione, chi vede che cosa, che cosa viene cancellato e dove sono i limiti — anche quelli che non ci piacciono.
-
La separazione è nel database, non nell’applicazione
Ogni club è un tenant a sé. La regola di separazione sta sotto ogni record del database e vale anche per il proprietario del database — non solo per il codice, che si può dimenticare di scrivere.
-
Chiuso in caso di errore
Se una query viene eseguita senza il contesto del club, restituisce zero righe. Non restituisce tutto e non segnala un errore — non restituisce nulla. Un errore nel nostro codice non può quindi trasformarsi nella divulgazione di dati altrui.
-
Un contesto, una transazione
L’applicazione non accede ai dati in altro modo che attraverso il contesto del club, impostato dentro un’unica transazione e che alla sua fine scompare. Tra richieste simultanee non viene trasmesso.
-
Il supporto entra solo con un motivo registrato
Quando per il supporto abbiamo bisogno di guardare nel vostro club, entriamo attraverso la stessa regola di separazione. Il motivo è obbligatorio — senza di esso non c’è accesso — ed entrata e uscita vengono scritte nel registro degli eventi.
La separazione è l’unica cosa in questa pagina che non si può aggiungere in seguito. Per questo è stata costruita prima della prima funzione — e per questo ha un proprio test, che viene eseguito a ogni modifica.
Ogni modifica del prodotto deve superare questo test. Se una qualsiasi delle cinque affermazioni cade, la modifica non viene integrata.
-
Il club vede solo i propri membriDue club, la stessa query, due risultati diversi.
-
Senza contesto: zero righeNon tutto, non un errore — nulla.
-
Il contesto non trapela tra le connessioniDodici query simultanee, ognuna resta al proprio club.
-
La scrittura in un club altrui è respintaLa separazione vale anche in scrittura, non solo in lettura.
-
Un club non valido è respinto in anticipoPrima ancora che venga eseguita la prima query.
tenant_id = nullif(current_setting('app.tenant_id', true), '')::uuid
Senza contesto il valore è vuoto, la condizione non si verifica e il risultato è vuoto. Questa è tutta la regola.
Un meccanismo, non una promessa: il test vive nel repository del codice ed è la condizione per il merge, non una dichiarazione nel piè di pagina.
Il tutore è l’intestatario dell’account
Per un membro minorenne è il tutore ad avere l’accesso, a dare i consensi e a ricevere la fattura. Il record di un bambino senza tutore non è un’unità autonoma.
-
Accesso
Un membro minorenne non ha un accesso che aggiri il tutore. La tutela è una relazione registrata tra una persona e un membro, non solo un campo con un numero di telefono.
-
Consensi
Il diritto di dare e revocare i consensi spetta al tutore. Sul membro è registrato quale tutore è quello primario e quale ha questo diritto.
-
L’età per il consenso autonomo
È legata al paese del club ed è fissata nel codice del prodotto, non in un’impostazione che qualcuno potrebbe spostare nel pannello di amministrazione. In Slovenia è 15 anni.
-
Pagante
Per ogni bambino il club stabilisce chi è il pagante — così genitori separati possono pagare ciascuno per il proprio figlio. Il pagante può essere anche una persona che non è tutore del bambino: un datore di lavoro, il comune o uno sponsor.
Che cosa di tutto questo vede il genitore nella propria app è descritto nella pagina Per i genitori →
Quattro consensi tipizzati
Un consenso non è una nota in testo libero. I tipi sono quattro, ognuno con il proprio stato, con la persona che l’ha dato e con l’ora.
| Consenso | Stato | Dato da | Registrato |
|---|---|---|---|
| Materiale per uso interno del club Fotografie e video che restano dentro il club. |
dato | tutrice · A. K. | 3. 9. 2025 |
| Materiale per la pubblicazione pubblica Fotografie e video sui canali pubblici del club. |
revocato | tutrice · A. K. | revoca 14. 1. 2026 |
| Dati sanitari Trattamento di allergie, condizioni e farmaci — categoria particolare di dati. |
dato | tutore · M. K. | 3. 9. 2025 |
| Notifiche Facoltativo. Senza di esso il membro resta iscritto e non perde nulla. |
non dato | — | — |
Vista di esempio. Una sola decisione registrata per tipo di consenso — non due registrazioni contraddittorie sulla stessa cosa. La revoca viene registrata con l’ora della revoca e la versione; lo stato precedente non viene sovrascritto, come se il consenso non fosse mai esistito.
vista di esempio · club demo i nomi e le date sono un’illustrazione, non dati del club
Dati sanitari
Allergie, condizioni e farmaci sono campi strutturati sul membro, separati dal resto del record — così da poterli cancellare senza cancellare il membro.
Un record separato
I dati sanitari stanno in un proprio record legato al membro. La separazione non è estetica — permette di cancellare solo questa parte.
Le note restano al club
Le note interne su un membro le vede l’amministratore del club. Quando l’allenatore se ne va, restano al club; quando se ne va il membro, se ne vanno con lui.
Il contatto di emergenza
È registrato sul membro, così che in caso di infortunio sia raggiungibile sul campo e non in una cartella in ufficio.
L’allenatore vede i membri dei propri gruppi — e solo quelli: dati personali e sanitari, presenze e report nominativi solo per i gruppi a cui è assegnato. Un tentativo respinto di accesso ai dati sanitari viene registrato. Un allenatore senza gruppo assegnato non vede alcun membro.
Il calendario del club resta visibile per intero, perché il rilevamento dei conflitti è corretto solo rispetto a tutti gli allenamenti. I report del club senza nomi e i turni di volontariato restano del club — è scritto qui e non in caratteri piccoli.
I permessi sono chiusi per impostazione predefinita
Ogni schermata e ogni link diretto richiedono un permesso esplicito. Senza di esso il server non restituisce il contenuto — anche se qualcuno inoltra l’indirizzo.
| Ruolo | Vede | Non vede |
|---|---|---|
| Amministratore del club Presidente, segretario |
Tutto: membri, calendario, finanze, report, impostazioni, iscrizioni, migrazione dei dati. | — |
| Il tesoriere Chi tiene i conti |
Listini, fatture, pagamenti e insoluti, report finanziari, l’elenco di soci e gruppi (per sapere a chi fatturare). | I dati sanitari dei bambini — al denaro non servono; la modifica di soci, staff e impostazioni del club; le conversazioni tra genitori. |
| Allenatore Responsabile del gruppo |
I membri dei propri gruppi e i loro dati sanitari, le presenze di quei gruppi, il calendario del club (per i conflitti), gli avvisi, i turni di volontariato e il report sulle presenze dei propri gruppi. | Listini, fatture e insoluti; modifica delle impostazioni del club; modifica dei dati personali di un membro; coda delle iscrizioni. |
| Genitore Tutore |
I propri figli, il loro calendario e le disdette, le fatture della propria famiglia, gli avvisi, i turni di volontariato. | Altri membri e i loro tutori; dati sanitari altrui; le finanze del club; le note interne. |
| Membro Maggiorenne o minorenne più grande |
Il proprio calendario e gli avvisi, e le questioni della propria famiglia, come un tutore. | Come per il genitore: nulla che riguardi altre famiglie o le finanze del club. |
I ruoli sono cinque e non di più; si sommano, quindi la stessa persona può essere tesoriere e genitore. Il tesoriere esiste proprio perché un club non debba dare i pieni diritti di amministratore a chi tiene i conti — e poiché al denaro non servono i dati sanitari di un bambino, questo ruolo non li vede. Una funzione nuova è chiusa finché qualcuno non la apre esplicitamente, mai il contrario.
Un link condiviso · illustrazione
GET /invoices/9f2c… → 403 · il contenuto della fattura non viene restituito
L’indirizzo di una fattura, inoltrato in una chat di gruppo, non apre nulla. Nulla è visibile «solo perché hai il link».
L’elenco completo delle aree e dei loro limiti è nella pagina Funzioni →
Conservazione e cancellazione
La cancellazione è una funzione del prodotto, non una richiesta via e-mail. Ha però un limite che non possiamo eliminare e due carenze che non nascondiamo.
-
Cancellazione di un membro nel prodotto
Rimuove il membro e con lui le sue iscrizioni agli allenamenti, i registri delle presenze, la foto, i consensi, il record sanitario e le appartenenze ai gruppi.
-
Il limite: le fatture emesse
Finché per un membro esiste una fattura, la cancellazione è respinta — le fatture emesse non si possono cancellare, perché la contabilità deve reggere un controllo. In questo caso al membro viene registrata la data di uscita.
-
Domande di iscrizione respinte nel prodotto
Una domanda di iscrizione respinta o rimandata indietro contiene i dati di un bambino senza una base per l’iscrizione. Dopo 60 giorni i dati personali che contiene vengono cancellati automaticamente; restano solo lo stato e la marca temporale, così che la statistica della coda resti onesta.
-
Termini di conservazione configurabili
Nelle impostazioni il club indica dopo quanti mesi dall’uscita di un membro i suoi dati personali vengono cancellati — almeno sei. Senza questa impostazione non viene cancellato nulla; un valore predefinito non c’è, di proposito. Prima di salvare, il club vede per nome di chi il passaggio successivo svuoterebbe il record.
-
Richiesta di un interessato di una copia dei propri dati
Il genitore o il membro scarica la copia da sé, senza l’intervento del club o nostro. L’esportazione riguarda sempre chi ha effettuato l’accesso e i bambini di cui è tutore — un percorso con cui qualcuno possa scaricare la cartella di un’altra famiglia non esiste.
Esportazione — al suo limite reale
L’esportazione completa del club è un’unica operazione: l’amministratore scarica un file ZIP con dei CSV — membri, tutori, consensi, calendario, presenze, fatture e pagamenti. I dati sanitari sono in un file a parte. Oltre a questo continuano a essere esportati separatamente il registro delle fatture e il registro dei pagamenti per la contabilità. Senza condizioni e senza costi all’uscita.
Che cosa contengono esattamente i due registri e come li usa la contabilità è descritto nella pagina Per il direttivo →
Hosting in fase di conferma
Sulla maggior parte dei siti qui ci sarebbe scritto che i dati restano nell’UE. Da noi c’è scritto quando lo riceverete per iscritto, in una forma verificabile.
«La sede dell’hosting e i subfornitori li indichiamo nel contratto sul trattamento dei dati, prima che firmiate. Fino alla conferma del contratto non riportiamo queste voci come un fatto.»
Per questo in questa pagina non troverete il nome di un fornitore, il nome di una regione o un’affermazione sulla posizione dei dati. L’impegno è preso; la prova scritta non l’abbiamo ancora pubblicata, e finché non la pubblichiamo questa riga non è verde.
Contratto sul trattamento dei dati
Il club è il titolare del trattamento, youthstack è il responsabile del trattamento. Non è una formalità — stabilisce chi decide sui dati e chi può soltanto trattarli.
Il club decide
Il club stabilisce quali dati vengono trattati e perché. I dati sono del club anche quando se ne va da noi.
Noi li trattiamo secondo le sue istruzioni — non per finalità nostre, senza pubblicità e senza vendere o scambiare dati con terzi.
La firma prima dei dati
Il contratto sul trattamento dei dati lo firmiamo prima di caricare nel sistema i primi dati reali. La migrazione del vostro elenco dei membri fa parte della configurazione e avviene dopo la firma, non prima.
I sub-responsabili sono indicati al suo interno per nome. Finché non ricevete il contratto per la revisione, in questa pagina su di loro non affermiamo nulla.
Prima di caricare qualsiasi cosa
La presentazione dura 30 minuti e ripercorre il vostro club: i vostri gruppi, chi allena chi, chi paga. La migrazione dell’elenco dei membri esistente la facciamo noi.
Il contratto sul trattamento dei dati lo ricevete per la revisione prima che carichiamo qualsiasi cosa. · 30 minuti · la migrazione dei dati la facciamo noi · configurazione ≈ 75 minuti del vostro tempo, distribuiti su quattro giorni