Varnost in GDPR

Ločenost podatkov, soglasja in odkrite meje

Klub nam zaupa podatke otrok. Zato je spodaj opisan mehanizem, ne zagotovilo: kako je ločenost narejena, kdo kaj vidi, kaj se izbriše in kje so meje — tudi tiste, ki nam niso všeč.

  • Ločenost je v bazi, ne v aplikaciji

    Vsak klub je svoj najemnik. Pravilo ločenosti stoji pod vsakim zapisom v podatkovni bazi in velja tudi za lastnika baze — ne le za kodo, ki jo je mogoče pozabiti napisati.

  • Zaprto ob napaki

    Če poizvedba teče brez konteksta kluba, vrne nič vrstic. Ne vrne vsega in ne javi napake — vrne nič. Napaka v naši kodi zato ne more postati razkritje tujih podatkov.

  • En kontekst, ena transakcija

    Aplikacija do podatkov ne dostopa drugače kot skozi kontekst kluba, ki je postavljen znotraj ene same transakcije in ob njenem koncu izgine. Med sočasnimi zahtevki se ne prenaša.

  • Podpora vstopi le z zapisanim razlogom

    Kadar za podporo potrebujemo pogled v vaš klub, vstopimo skozi isto pravilo ločenosti. Razlog je obvezen — brez njega vstopa ni — vstop in izhod pa se zapišeta v dnevnik dogodkov.

Ločenost je edina stvar na tej strani, ki je ni mogoče dodati naknadno. Zato je bila zgrajena pred prvo funkcijo — in zato ima svoj test, ki teče ob vsaki spremembi.

Test ločenosti · zahtevan pred vsako združitvijo

Vsaka sprememba izdelka mora prestati ta test. Če katera koli od petih trditev pade, se sprememba ne združi.

  • Klub vidi samo svoje članeDva kluba, ista poizvedba, dva različna rezultata.
  • Brez konteksta: nič vrsticNe vse, ne napaka — nič.
  • Kontekst ne pušča med povezavamiDvanajst sočasnih poizvedb, vsaka ostane pri svojem klubu.
  • Zapis v tuj klub je zavrnjenLočenost velja tudi pri pisanju, ne le pri branju.
  • Neveljaven klub je zavrnjen vnaprejPreden se sploh izvede prva poizvedba.

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

Brez konteksta je vrednost prazna, pogoj se ne izpolni in rezultat je prazen. To je celotno pravilo.

Mehanizem, ne obljuba: test živi v skladišču kode in je pogoj za združitev, ne izjava v nogi strani.

Skrbnik je nosilec računa

Pri mladoletnem članu je skrbnik tisti, ki ima dostop, daje soglasja in prejme račun. Otrokov zapis brez skrbnika ni samostojna enota.

  • Dostop

    Mladoletni član nima dostopa, ki bi šel mimo skrbnika. Skrbništvo je zapisano razmerje med osebo in članom, ne le polje s telefonsko številko.

  • Soglasja

    Pravico dajati in umikati soglasja nosi skrbnik. Pri članu je zapisano, kateri skrbnik je primarni in kateri ima to pravico.

  • Starost za lastno privolitev

    Vezana je na državo kluba in je določena v kodi izdelka, ne v nastavitvi, ki bi jo lahko kdo v skrbniškem vmesniku prestavil. V Sloveniji je 15 let.

  • Plačnik

    Klub pri vsakem otroku določi, kdo je plačnik — zato ločena starša lahko plačujeta vsak za svojega otroka. Plačnik je lahko tudi oseba, ki otroku ni skrbnik: delodajalec, občina ali sponzor.

Kaj od tega vidi starš v svoji aplikaciji, je opisano na strani Za starše →

Štiri tipizirana soglasja

Soglasje ni opomba v prostem besedilu. So štiri vrste, vsaka s svojim stanjem, z osebo, ki jo je podala, in s časom.

Član · Soglasja
Vzorčni prikaz zaslona soglasij pri članu — štiri vrste, stanje, oseba in čas
Soglasje Stanje Podal Zapisano
Posnetki za klubsko rabo
Fotografije in video, ki ostanejo znotraj kluba.
podano skrbnica · A. K. 3. 9. 2025
Posnetki za javno objavo
Fotografije in video na javnih kanalih kluba.
umaknjeno skrbnica · A. K. umik 14. 1. 2026
Zdravstveni podatki
Obdelava alergij, stanj in zdravil — posebna vrsta podatkov.
podano skrbnik · M. K. 3. 9. 2025
Obveščanje
Neobvezno. Brez njega član ostane vpisan in nič ne izgubi.
ni podano — —

Vzorčni prikaz. Ena zapisana odločitev na vrsto soglasja — ne dva nasprotujoča si zapisa o isti stvari. Umik se zapiše s časom umika in različico; prejšnje stanje se ne prepiše, kot da soglasja nikoli ne bi bilo.

vzorčni prikaz · demo klub imena in datumi so ponazoritev, ne podatki kluba

Zdravstveni podatki

Alergije, stanja in zdravila so strukturirana polja pri članu, ločena od ostalega zapisa — tako da jih je mogoče izbrisati, ne da bi izbrisali člana.

Ločen zapis

Zdravstveni podatki stojijo v svojem zapisu, vezanem na člana. Ločenost ni estetska — omogoča izbris samo tega dela.

Opombe ostanejo pri klubu

Interne opombe o članu vidi administrator kluba. Ko trener odide, ostanejo v klubu; ko odide član, gredo z njim.

Kontakt za nujne primere

Zapisan je pri članu, da je ob poškodbi dosegljiv na terenu, ne v mapi v pisarni.

Trener vidi člane svojih skupin — in samo njih: osebne in zdravstvene podatke, prisotnost ter poimenska poročila le za skupine, na katere je dodeljen. Zavrnjen poskus vpogleda v zdravstvene podatke se zabeleži. Trener brez dodeljene skupine ne vidi nobenega člana.

Klubski urnik ostane viden v celoti, ker je zaznava trkov pravilna le proti vsem terminom. Klubska poročila brez imen in prostovoljske izmene ostanejo klubski — to je zapisano tu in ne v drobnem tisku.

Pravice so privzeto zaprte

Vsak zaslon in vsaka globoka povezava zahtevata izrecno dovoljenje. Brez njega strežnik vsebine ne vrne — tudi če naslov nekdo prepošle naprej.

Vloge in vpogled
Pet vlog, kaj posamezna vidi in česa ne
Vloga Vidi Ne vidi
Administrator kluba
Predsednik, tajnik
Vse: člane, urnik, finance, poročila, nastavitve, prijave, prenos podatkov. —
Blagajnik
Kdor vodi knjige
Cenike, račune, plačila in terjatve, finančna poročila, seznam članov in skupin (da ve, koga zaračunati). Zdravstvenih podatkov otrok — denar jih ne potrebuje; urejanja članov, osebja in nastavitev kluba; pogovorov med starši.
Trener
Vodja skupine
Člane svojih skupin in njihove zdravstvene podatke, prisotnost teh skupin, klubski urnik (zaradi trkov), objave, prostovoljske izmene in poročilo o prisotnosti svojih skupin. Cenikov, računov in terjatev; urejanja nastavitev kluba; urejanja osebnih podatkov člana; vrste prijav.
Starš
Skrbnik
Svoje otroke, njihov urnik in odpovedi, račune svoje družine, objave, prostovoljske izmene. Drugih članov in njihovih skrbnikov; tujih zdravstvenih podatkov; financ kluba; internih opomb.
Član
Polnoleten ali starejši mladoletnik
Svoj urnik in objave ter zadeve svoje družine, enako kot skrbnik. Enako kot pri staršu: ničesar, kar zadeva druge družine ali klubske finance.

Vlog je pet in nič več; seštevajo se, zato je ista oseba lahko blagajnik in starš. Blagajnik obstaja prav zato, da klubu ni treba dati polnih pravic administratorja tistemu, ki vodi knjige — in ker denar ne potrebuje zdravstvenih podatkov otroka, jih ta vloga ne vidi. Nova funkcija je zaprta, dokler je nekdo izrecno ne odpre — ne obratno.

Deljena povezava · ponazoritev

GET /invoices/9f2c…  →  403 · vsebina računa se ne vrne

Naslov računa, poslan naprej v skupinskem pogovoru, ne odpre ničesar. Nič ni vidno «samo zato, ker imaš povezavo».

Celoten seznam sklopov in njihovih meja je na strani Funkcije →

Hramba in izbris

Izbris je funkcija v izdelku, ne prošnja po e-pošti. Ima pa eno mejo, ki je ne moremo odpraviti, in dve pomanjkljivosti, ki ju ne skrivamo.

  • Izbris člana v izdelku

    Odstrani člana in z njim njegove prijave na termine, zapise prisotnosti, fotografijo, soglasja, zdravstveni zapis in članstva v skupinah.

  • Meja: izdani računi

    Dokler za člana obstaja račun, je izbris zavrnjen — izdanih računov ni dovoljeno brisati, ker mora evidenca zdržati pregled. V tem primeru se članu zapiše datum odhoda.

  • Zavrnjene prijavnice v izdelku

    Zavrnjena ali vrnjena prijavnica vsebuje otrokove podatke brez podlage za članstvo. Po 60 dneh se osebni podatki iz nje samodejno izbrišejo; ostane le stanje in časovni žig, da statistika vrste ostane poštena.

  • Nastavljivi roki hrambe

    Klub v nastavitvah vpiše, koliko mesecev po odhodu člana se njegovi osebni podatki izbrišejo — najmanj šest. Brez nastavitve se ne izbriše nič; privzetka namenoma ni. Pred shranitvijo klub vidi poimensko, čigav zapis bi naslednji prehod izpraznil.

  • Zahteva posameznika po izvodu podatkov

    Starš ali član si izvod prenese sam, brez posredovanja kluba ali nas. Izvoz vedno zadeva prijavljenega in otroke, katerih skrbnik je — poti, po kateri bi si nekdo prenesel mapo tuje družine, ni.

Izvoz — pri svoji resnični meji

Celovit izvoz kluba je eno dejanje: upravitelj prenese datoteko ZIP s CSV-ji — člani, skrbniki, soglasja, urnik, prisotnost, računi in plačila. Zdravstveni podatki so v svoji datoteki. Poleg tega se še naprej ločeno izvozita dnevnik računov in dnevnik plačil za računovodstvo. Brez pogojev in brez pristojbine ob odhodu.

Kaj natanko je v obeh dnevnikih in kako ju uporabi računovodstvo, je opisano na strani Za odbor →

Gostovanje v potrjevanju

Tu bi na večini spletnih strani pisalo, da podatki ostanejo v EU. Pri nas piše, kdaj boste to dobili napisano tako, da se da preveriti.

«Lokacijo gostovanja in podizvajalce navedemo v pogodbi o obdelavi, preden podpišete. Do potrditve pogodbe te postavke ne navajamo kot dejstvo.»

Zato na tej strani ne boste našli imena ponudnika, imena regije ali trditve o lokaciji podatkov. Zaveza je sprejeta; pisnega dokazila še nismo objavili, in dokler ga ne objavimo, ta vrstica ni zelena.

Pogodba o obdelavi

Klub je upravljavec, youthstack je obdelovalec. To ni formalnost — določa, kdo o podatkih odloča in kdo jih sme samo obdelovati.

Klub odloča

Klub določi, kateri podatki se obdelujejo in zakaj. Podatki so klubovi tudi takrat, ko od nas odide.

Mi jih obdelujemo po njegovih navodilih — ne za svoje namene, brez oglasov in brez prodaje ali izmenjave podatkov s tretjimi.

Podpis pred podatki

Pogodbo o obdelavi podpišemo, preden v sistem naložimo prve resnične podatke. Prenos vašega seznama članov je del postavitve in se zgodi po podpisu, ne prej.

Podobdelovalci so navedeni v njej poimensko. Dokler pogodbe ne dobite v pregled, na tej strani o njih ne trdimo ničesar.

Politika zasebnosti → Pogoji uporabe →

Preden naložimo karkoli

Predstavitev traja 30 minut in gre po vašem klubu: vaše skupine, kdo koga trenira, kdo plača. Prenos obstoječega seznama članov naredimo mi.

Pogodbo o obdelavi dobite v pregled, preden naložimo karkoli. · 30 minut · prenos podatkov naredimo mi · postavitev ≈ 75 minut vašega časa, razporejenih čez štiri dni