Bezbednost i GDPR

Odvojenost podataka, saglasnosti i otvorene granice

Klub nam poverava podatke dece. Zato je ispod opisan mehanizam, a ne garancija: kako je odvojenost napravljena, ko šta vidi, šta se briše i gde su granice — i one koje nam se ne dopadaju.

  • Odvojenost je u bazi, ne u aplikaciji

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

  • Zatvoreno pri grešci

    Ako se upit izvršava bez konteksta kluba, vraća nula redova. Ne vraća sve i ne javlja grešku — vraća ništa. Greška u našem kodu zato ne može da postane otkrivanje tuđih podataka.

  • Jedan kontekst, jedna transakcija

    Aplikacija podacima ne pristupa drugačije nego kroz kontekst kluba, koji se postavlja unutar jedne jedine transakcije i na njenom kraju nestaje. Između istovremenih zahteva se ne prenosi.

  • Podrška ulazi samo sa zapisanim razlogom

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

Odvojenost je jedina stvar na ovoj stranici koju nije moguće dodati naknadno. Zato je izgrađena pre prve funkcije — i zato ima svoj test, koji se izvršava uz svaku promenu.

Test odvojenosti · obavezan pre svakog spajanja

Svaka promena proizvoda mora da prođe ovaj test. Ako bilo koja od pet tvrdnji padne, promena se ne spaja.

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

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

Bez konteksta vrednost je prazna, uslov nije ispunjen i rezultat je prazan. To je celo pravilo.

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

Staratelj je nosilac računa

Kod maloletnog člana staratelj je taj koji ima pristup, daje saglasnosti i prima račun. Zapis deteta bez staratelja nije samostalna jedinica.

  • Pristup

    Maloletni član nema pristup koji bi išao mimo staratelja. Starateljstvo je zapisan odnos između osobe i člana, a ne samo polje sa brojem telefona.

  • Saglasnosti

    Pravo da daje i povlači saglasnosti nosi staratelj. Kod člana je zapisano koji je staratelj primarni i ko ima to pravo.

  • Uzrast za sopstvenu saglasnost

    Vezan je za državu kluba i određen je u kodu proizvoda, a ne u podešavanju koje bi neko u administratorskom interfejsu mogao da pomeri. U Sloveniji je 15 godina.

  • Platilac

    Klub kod svakog deteta određuje ko je platilac — zato razdvojeni roditelji mogu da plaćaju svako za svoje dete. Platilac može da bude i osoba koja detetu nije staratelj: poslodavac, opština ili sponzor.

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

Četiri tipizirane saglasnosti

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

Član · Saglasnosti
Ogledni prikaz ekrana saglasnosti kod člana — četiri vrste, stanje, osoba i vreme
Saglasnost Stanje Dao Zabeleženo
Snimci za klupsku upotrebu
Fotografije i video koji ostaju unutar kluba.
dato starateljka · A. K. 3. 9. 2025
Snimci za javnu objavu
Fotografije i video na javnim kanalima kluba.
povučeno starateljka · A. K. povlačenje 14. 1. 2026
Zdravstveni podaci
Obrada alergija, stanja i lekova — posebna vrsta podataka.
dato staratelj · M. K. 3. 9. 2025
Obaveštavanje
Neobavezno. Bez njega član ostaje upisan i ništa ne gubi.
nije dato — —

Ogledni prikaz. Jedna zapisana odluka po vrsti saglasnosti — ne dva protivrečna zapisa o istoj stvari. Povlačenje se beleži sa vremenom povlačenja i verzijom; prethodno stanje se ne prepisuje, kao da saglasnosti nikada nije ni bilo.

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

Zdravstveni podaci

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

Odvojen zapis

Zdravstveni podaci stoje u svom zapisu, vezanom za člana. Odvojenost nije estetska — omogućava brisanje samo tog dela.

Napomene ostaju kod kluba

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

Kontakt za hitne slučajeve

Zapisan je kod člana, da bude dostupan na terenu pri povredi, a ne u fascikli u kancelariji.

Trener vidi članove svojih grupa — i samo njih: lične i zdravstvene podatke, prisustvo i poimenične izveštaje samo za grupe na koje je dodeljen. Odbijen pokušaj uvida u zdravstvene podatke se beleži. Trener bez dodeljene grupe ne vidi nijednog člana.

Klupski raspored ostaje vidljiv u celini, jer je otkrivanje preklapanja ispravno samo prema svim terminima. Klupski izveštaji bez imena i volonterske smene ostaju klupski — to je zapisano ovde, a ne u sitnim slovima.

Prava su podrazumevano zatvorena

Svaki ekran i svaki duboki link traže izričitu dozvolu. Bez nje server sadržaj ne vraća — čak i ako neko adresu prosledi dalje.

Uloge i uvid
Pet uloga, šta svaka vidi i šta ne vidi
Uloga Vidi Ne vidi
Administrator kluba
Predsednik, sekretar
Sve: članove, raspored, finansije, izveštaje, podešavanja, upise, prenos podataka. —
Blagajnik
Ko vodi knjige
Cenovnike, račune, uplate i potraživanja, finansijske izveštaje, spisak članova i grupa (da zna koga da naplati). Zdravstvene podatke dece — novcu nisu potrebni; uređivanja članova, osoblja i podešavanja kluba; razgovora među roditeljima.
Trener
Vođa grupe
Članove svojih grupa i njihove zdravstvene podatke, prisustvo tih grupa, klupski raspored (zbog preklapanja), objave, volonterske smene i izveštaj o prisustvu svojih grupa. Pakete članarine, račune i potraživanja; uređivanje podešavanja kluba; uređivanje ličnih podataka člana; red upisa.
Roditelj
Staratelj
Svoju decu, njihov raspored i otkazivanja, račune svoje porodice, objave, volonterske smene. Druge članove i njihove staratelje; tuđe zdravstvene podatke; finansije kluba; interne beleške.
Član
Punoletan ili stariji maloletnik
Svoj raspored i objave i stvari svoje porodice, isto kao staratelj. Isto kao kod roditelja: ništa što se tiče drugih porodica ili klupskih finansija.

Uloga je pet i ništa više; sabiraju se, pa ista osoba može biti blagajnik i roditelj. Blagajnik postoji upravo zato da klub ne mora da da pune administratorske dozvole onome ko vodi knjige — a pošto novcu nisu potrebni zdravstveni podaci deteta, ova uloga ih ne vidi. Nova funkcija je zatvorena dok je neko izričito ne otvori, nikada obrnuto.

Deljeni link · prikaz

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

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

Ceo spisak celina 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 da uklonimo i dva nedostatka koja ne krijemo.

  • Brisanje člana u proizvodu

    Uklanja člana i sa njim njegove prijave na termine, zapise prisustva, fotografiju, saglasnosti, zdravstveni zapis i članstva u grupama.

  • Granica: izdati računi

    Dok za člana postoji račun, brisanje je odbijeno — izdate račune nije dozvoljeno brisati, jer evidencija mora da izdrži proveru. U tom slučaju se članu upisuje datum odlaska.

  • Odbijene prijavnice u proizvodu

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

  • Podesivi rokovi čuvanja

    Klub u podešavanjima upisuje koliko meseci posle odlaska člana se njegovi lični podaci brišu — najmanje šest. Bez tog podešavanja se ne briše ništa; podrazumevane vrednosti namerno nema. Pre nego što sačuva, klub vidi poimenično čiji bi zapis sledeći prolaz ispraznio.

  • Zahtev pojedinca za primerkom podataka

    Roditelj ili član primerak preuzima sam, bez posredovanja kluba ili nas. Izvoz uvek obuhvata prijavljenog i decu kojoj je staratelj — puta kojim bi neko preuzeo dosije tuđe porodice nema.

Izvoz — na svojoj stvarnoj granici

Celovit izvoz kluba je jedan postupak: administrator preuzima ZIP datoteku sa CSV-ovima — članovi, staratelji, saglasnosti, raspored, prisustvo, računi i plaćanja. Zdravstveni podaci su u svojoj datoteci. Uz to se i dalje odvojeno izvoze dnevnik računa i dnevnik plaćanja za računovodstvo. Bez uslova i bez naknade pri odlasku.

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

Hosting u potvrđivanju

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

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

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

Ugovor o obradi

Klub je rukovalac, youthstack je obrađivač. To nije formalnost — određuje ko o podacima odlučuje, a ko sme samo da ih obrađuje.

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 uputstvima — ne za svoje svrhe, bez oglasa i bez prodaje ili razmene podataka sa trećim licima.

Potpis pre podataka

Ugovor o obradi potpisujemo pre nego što u sistem učitamo prve stvarne podatke. Prenos vašeg spiska članova deo je postavljanja i dešava se posle potpisa, ne pre.

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

Politika privatnosti → Uslovi korišćenja →

Pre nego što išta učitamo

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

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