Sigurnost i GDPR

Odvojenost podataka, privole i otvorene granice

Klub nam povjerava podatke djece. Zato je ispod opisan mehanizam, a ne jamstvo: kako je odvojenost napravljena, tko što vidi, što se briše i gdje su granice — i one koje nam se ne sviđaju.

  • Odvojenost je u bazi, ne u aplikaciji

    Svaki je klub svoj najmoprimac. Pravilo odvojenosti stoji ispod svakog zapisa u bazi i vrijedi i za vlasnika baze — ne samo za kod koji se može zaboraviti napisati.

  • Zatvoreno pri grešci

    Ako upit teče bez konteksta kluba, vraća nula redaka. Ne vraća sve i ne javlja grešku — vraća ništa. Greška u našem kodu zato ne može postati otkrivanje tuđih podataka.

  • Jedan kontekst, jedna transakcija

    Aplikacija podacima ne pristupa drukčije nego kroz kontekst kluba, koji je postavljen unutar jedne jedine transakcije i na njezinu kraju nestaje. Između istodobnih zahtjeva se ne prenosi.

  • Podrška ulazi samo sa zapisanim razlogom

    Kada za podršku trebamo uvid u vaš klub, ulazimo kroz isto pravilo odvojenosti. Razlog je obavezan — bez njega ulaza nema — a ulaz i izlaz zapisuju se u dnevnik događaja.

Odvojenost je jedina stvar na ovoj stranici koju nije moguće dodati naknadno. Zato je izgrađena prije prve funkcije — i zato ima svoj test koji teče uz svaku promjenu.

Test odvojenosti · obavezan prije svakog spajanja

Svaka promjena proizvoda mora proći ovaj test. Ako bilo koja od pet tvrdnji padne, promjena se ne spaja.

  • Klub vidi samo svoje članoveDva kluba, isti upit, dva različita rezultata.
  • Bez konteksta: nula redakaNe sve, ne greška — ništa.
  • Kontekst ne curi između vezaDvanaest istodobnih upita, svaki ostaje pri svom klubu.
  • Zapis u tuđi klub je odbijenOdvojenost vrijedi i pri pisanju, ne samo pri čitanju.
  • Nevažeći klub je odbijen unaprijedPrije nego se uopće izvede prvi upit.

tenant_id = nullif(current_setting('app.tenant_id', true), '')::uuid

Bez konteksta vrijednost je prazna, uvjet se ne ispunjava i rezultat je prazan. To je cijelo pravilo.

Mehanizam, a ne obećanje: test živi u repozitoriju koda i uvjet je za spajanje, a ne izjava u podnožju stranice.

Skrbnik je nositelj računa

Kod maloljetnog člana skrbnik je taj koji ima pristup, daje privole i prima račun. Djetetov zapis bez skrbnika nije samostalna jedinica.

  • Pristup

    Maloljetni član nema pristup koji bi išao mimo skrbnika. Skrbništvo je zapisan odnos između osobe i člana, a ne samo polje s telefonskim brojem.

  • Privole

    Pravo davanja i povlačenja privola nosi skrbnik. Kod člana je zapisano koji je skrbnik primarni i tko ima to pravo.

  • Dob za vlastitu privolu

    Vezana je uz državu kluba i određena je u kodu proizvoda, a ne u postavci koju bi netko u administratorskom sučelju mogao pomaknuti. U Sloveniji je 15 godina.

  • Platitelj

    Klub kod svakog djeteta određuje tko je platitelj — zato razdvojeni roditelji mogu plaćati svatko za svoje dijete. Platitelj može biti i osoba koja djetetu nije skrbnik: poslodavac, općina ili sponzor.

Što od toga roditelj vidi u svojoj aplikaciji, opisano je na stranici Za roditelje →

Četiri tipizirane privole

Privola nije bilješka u slobodnom tekstu. Postoje četiri vrste, svaka sa svojim stanjem, s osobom koja ju je dala i s vremenom.

Član · Privole
Ogledni prikaz zaslona privola kod člana — četiri vrste, stanje, osoba i vrijeme
Privola Stanje Dao Zapisano
Snimke za klupsku uporabu
Fotografije i video koji ostaju unutar kluba.
dano skrbnica · A. K. 3. 9. 2025
Snimke za javnu objavu
Fotografije i video na javnim kanalima kluba.
povučeno skrbnica · A. K. povlačenje 14. 1. 2026
Zdravstveni podaci
Obrada alergija, stanja i lijekova — posebna vrsta podataka.
dano skrbnik · M. K. 3. 9. 2025
Obavještavanje
Neobavezno. Bez njega član ostaje upisan i ništa ne gubi.
nije dano — —

Ogledni prikaz. Jedna zapisana odluka po vrsti privole — ne dva proturječna zapisa o istoj stvari. Povlačenje se zapisuje s vremenom povlačenja i inačicom; prethodno se stanje ne prepisuje, kao da privole nikad nije ni bilo.

ogledni prikaz · demo klub imena i datumi su prikaz, a ne podaci kluba

Zdravstveni podaci

Alergije, stanja i lijekovi strukturirana su polja kod člana, odvojena od ostatka zapisa — tako da ih je moguće izbrisati bez brisanja člana.

Odvojen zapis

Zdravstveni podaci stoje u svom zapisu, vezanom uz člana. Odvojenost nije estetska — omogućuje brisanje samo tog dijela.

Bilješke ostaju kod kluba

Interne bilješke o članu vidi administrator kluba. Kad trener ode, ostaju u klubu; kad ode član, idu s njim.

Kontakt za hitne slučajeve

Zapisan je kod člana, da je pri ozljedi dostupan na terenu, a ne u mapi u uredu.

Trener vidi članove svojih grupa — i samo njih: osobne i zdravstvene podatke, dolaske te poimenične izvještaje samo za grupe na koje je dodijeljen. Odbijen pokušaj uvida u zdravstvene podatke se bilježi. Trener bez dodijeljene grupe ne vidi nijednog člana.

Klupski raspored ostaje vidljiv u cijelosti, jer je otkrivanje sukoba ispravno samo prema svim terminima. Klupski izvještaji bez imena i volonterske smjene ostaju klupski — to je zapisano ovdje, a ne u sitnom tisku.

Prava su zadano zatvorena

Svaki zaslon i svaka duboka poveznica traže izričito dopuštenje. Bez njega poslužitelj sadržaj ne vraća — čak i ako adresu netko proslijedi dalje.

Uloge i uvid
Pet uloga, što svaka vidi i što ne vidi
Uloga Vidi Ne vidi
Administrator kluba
Predsjednik, tajnik
Sve: članove, raspored, financije, izvještaje, postavke, upise, prijenos podataka. —
Blagajnik
Tko vodi knjige
Cjenike, račune, uplate i potraživanja, financijska izvješća, popis članova i grupa (da zna koga naplatiti). Zdravstvene podatke djece — novcu nisu potrebni; uređivanja članova, osoblja i postavki kluba; razgovora među roditeljima.
Trener
Voditelj grupe
Članove svojih grupa i njihove zdravstvene podatke, dolaske tih grupa, klupski raspored (zbog sukoba), objave, volonterske smjene i izvještaj o dolascima svojih grupa. Cjenike, račune i potraživanja; uređivanje postavki kluba; uređivanje osobnih podataka člana; red upisa.
Roditelj
Skrbnik
Svoju djecu, njihov raspored i otkazivanja, račune svoje obitelji, objave, volonterske smjene. Druge članove i njihove skrbnike; tuđe zdravstvene podatke; financije kluba; interne bilješke.
Član
Punoljetan ili stariji maloljetnik
Svoj raspored i objave te stvari svoje obitelji, jednako kao skrbnik. Jednako kao kod roditelja: ništa što se tiče drugih obitelji ili klupskih financija.

Uloga je pet i ništa više; zbrajaju se, pa ista osoba može biti blagajnik i roditelj. Blagajnik postoji upravo zato da klub ne mora dati pune administratorske ovlasti onome tko vodi knjige — a budući da novcu ne trebaju zdravstveni podaci djeteta, ova ih uloga ne vidi. Nova je funkcija zatvorena dok je netko izričito ne otvori, nikad obrnuto.

Podijeljena poveznica · prikaz

GET /invoices/9f2c…  →  403 · sadržaj računa se ne vraća

Adresa računa, proslijeđena u grupnom razgovoru, ne otvara ništa. Ništa nije vidljivo «samo zato što imaš poveznicu».

Cijeli popis cjelina i njihovih granica je na stranici Funkcije →

Čuvanje i brisanje

Brisanje je funkcija u proizvodu, a ne molba e-poštom. Ima pak jednu granicu koju ne možemo ukloniti i dva nedostatka koja ne skrivamo.

  • Brisanje člana u proizvodu

    Uklanja člana i s njim njegove prijave na termine, zapise dolazaka, fotografiju, privole, zdravstveni zapis i članstva u grupama.

  • Granica: izdani računi

    Dok za člana postoji račun, brisanje je odbijeno — izdane račune nije dopušteno brisati, jer evidencija mora izdržati pregled. U tom se slučaju članu zapisuje datum odlaska.

  • Odbijene prijavnice u proizvodu

    Odbijena ili vraćena prijavnica sadrži podatke djeteta bez osnove za članstvo. Nakon 60 dana osobni se podaci iz nje automatski brišu; ostaje samo stanje i vremenska oznaka, da statistika reda ostane poštena.

  • Podesivi rokovi čuvanja

    Klub u postavkama upisuje koliko se mjeseci nakon odlaska člana njegovi osobni podaci brišu — najmanje šest. Bez postavke ne briše se ništa; zadane vrijednosti namjerno nema. Prije spremanja klub vidi poimenično čiji bi zapis sljedeći prolaz ispraznio.

  • Zahtjev pojedinca za primjerkom podataka

    Roditelj ili član primjerak preuzima sam, bez posredovanja kluba ili nas. Izvoz uvijek obuhvaća prijavljenog i djecu kojima je skrbnik — puta kojim bi netko preuzeo mapu tuđe obitelji nema.

Izvoz — na svojoj stvarnoj granici

Cjelovit izvoz kluba jedan je postupak: upravitelj preuzima ZIP datoteku s CSV-ovima — članovi, skrbnici, privole, raspored, dolasci, računi i plaćanja. Zdravstveni su podaci u svojoj datoteci. Uz to se i dalje odvojeno izvoze dnevnik računa i dnevnik plaćanja za računovodstvo. Bez uvjeta i bez naknade pri odlasku.

Što je točno u oba dnevnika i kako ih računovodstvo koristi, opisano je na stranici Za upravu →

Hosting u potvrđivanju

Ovdje bi na većini stranica pisalo da podaci ostaju u EU. Kod nas piše kada ćete to dobiti napisano tako da se može provjeriti.

«Lokaciju hostinga i podizvođače navodimo u ugovoru o obradi, prije nego potpišete. Do potvrde ugovora te stavke ne navodimo kao činjenicu.»

Zato na ovoj stranici nećete naći ime pružatelja, ime regije ni tvrdnju o lokaciji podataka. Obveza je prihvaćena; pisani dokaz još nismo objavili, i dok ga ne objavimo, ovaj redak nije zelen.

Ugovor o obradi

Klub je voditelj obrade, youthstack je izvršitelj obrade. To nije formalnost — određuje tko o podacima odlučuje, a tko ih smije samo obrađivati.

Klub odlučuje

Klub određuje koji se podaci obrađuju i zašto. Podaci su klupski i onda kad od nas ode.

Mi ih obrađujemo po njegovim uputama — ne za svoje svrhe, bez oglasa i bez prodaje ili razmjene podataka s trećima.

Potpis prije podataka

Ugovor o obradi potpisujemo prije nego u sustav učitamo prve stvarne podatke. Prijenos vašeg popisa članova dio je postavljanja i događa se nakon potpisa, ne prije.

Podizvođači su u njemu navedeni poimenično. Dok ugovor ne dobijete na uvid, na ovoj stranici o njima ne tvrdimo ništa.

Politika privatnosti → Uvjeti korištenja →

Prije nego išta učitamo

Prezentacija traje 30 minuta i ide po vašem klubu: vaše grupe, tko koga trenira, tko plaća. Prijenos postojećeg popisa članova radimo mi.

Ugovor o obradi dobivate na uvid prije nego išta učitamo. · 30 minuta · prijenos podataka radimo mi · postavljanje ≈ 75 minuta vašeg vremena, raspoređenih kroz četiri dana