Polityka prywatności — Matura na 100
Wersja: 2.1.0 · Ostatnia aktualizacja: 2026-08-12
1. Administrator danych
Administratorem danych osobowych zbieranych w aplikacji Matura na 100 jest:
LogicLoom Kamil Zwarycz jednoosobowa działalność gospodarcza (JDG) NIP: 5871749235 · REGON: 540001576 ul. Kalinowa 6L lok. 3, 81-198 Kosakowo, Polska działający pod marką „KZ Labs”
Kontakt w sprawach ochrony danych: contact@kzlab.dev
Ze względu na skalę działalności (jednoosobowa działalność gospodarcza, brak przetwarzania na dużą skalę danych szczególnych kategorii ani systematycznego monitorowania na dużą skalę) wyznaczenie formalnego Inspektora Ochrony Danych (IOD) nie jest wymagane przez art. 37 RODO. Kontakt powyżej pełni funkcję punktu kontaktowego ds. ochrony danych.
2. Jakie dane zbieramy, w jakim celu i na jakiej podstawie prawnej
| Kategoria danych | Przykłady | Cel przetwarzania | Podstawa prawna (RODO) |
|---|---|---|---|
| Dane konta | e-mail oraz identyfikator konta (logowanie wyłącznie przez Google lub Apple OAuth — nie przechowujemy haseł; dostępny jest też tryb gościa bez konta). Nazwy i awataru nie przechowujemy — Apple pyta o FULL_NAME, a aplikacja odrzuca tę wartość |
Założenie i obsługa konta, uwierzytelnianie | Art. 6 ust. 1 lit. b (wykonanie umowy) |
| Dane profilu/nauki | rok matury, cel procentowy, dzienny limit minut nauki (globalnie i per przedmiot), ukryte przedmioty, parametry FSRS. Strefa czasowa nie jest zapisywana — dni liczone są wg stałego czasu Warszawskiego. Język nie jest zapisywany | Personalizacja rutyny nauki | Art. 6 ust. 1 lit. b |
| Postępy w nauce | historia powtórek SRS, odpowiedzi na pytania, wypracowania, wyniki egzaminów próbnych, sesje diagnostyczne, odznaki | Śledzenie postępów, adaptacyjny dobór materiału | Art. 6 ust. 1 lit. b |
| Oświadczenie o wieku i zgoda | znacznik czasu akceptacji oświadczenia 16+ | Dowód zgody wymaganej do świadczenia usługi osobom niepełnoletnim | Art. 6 ust. 1 lit. a (zgoda) — oraz art. 8 RODO |
| Dane subskrypcji | status uprawnień premium, identyfikator zakupu (przez RevenueCat) | Zarządzanie dostępem premium | Art. 6 ust. 1 lit. b |
| Dane techniczne/diagnostyczne | raporty awarii (Sentry) | Utrzymanie stabilności i bezpieczeństwa usługi | Art. 6 ust. 1 lit. f (prawnie uzasadniony interes — utrzymanie działającej usługi) |
| Dane logowania/bezpieczeństwa | pełny (nie zanonimizowany) adres IP z nagłówka cf-connecting-ip, wraz z datą, zapisywany w Cloudflare KV w limiterach żądań dwóch Workerów |
Ochrona przed nadużyciami (rate-limiting) | Art. 6 ust. 1 lit. f |
Nie przechowujemy pełnych danych kart płatniczych — płatności obsługują wyłącznie Apple App Store i Google Play za pośrednictwem RevenueCat (zob. §5).
3. Czego NIE zbieramy
- Danych geolokalizacyjnych.
- Danych z mikrofonu ani kamery.
- Danych kontaktowych (książki adresowej) z urządzenia.
- Zachowań użytkownika poza aplikacją.
- Danych szczególnych kategorii (art. 9 RODO — zdrowie, pochodzenie etniczne, przekonania religijne itd.).
- Danych do celów reklamowych ani profilowania behawioralnego dla stron trzecich. Nie sprzedajemy ani nie udostępniamy danych osobowych w celach marketingowych.
4. Zautomatyzowane przetwarzanie
Aplikacja wykorzystuje algorytm FSRS (spaced repetition) do personalizacji kolejności powtórek. Nie stosujemy modelu IRT — moduł packages/srs-engine/src/irt.ts istnieje w repozytorium, ale nie jest importowany przez aplikację. Diagnostyka poziomu to test o stałej liczbie 10 pytań w stałej kolejności, a wynik to odsetek poprawnych odpowiedzi przeliczony na skalę −1…+1 (theta = 2 × ratio − 1); nie jest to model adaptywny IRT. Jest to wsparcie dydaktyczne, nie zautomatyzowane podejmowanie decyzji wywołujące skutki prawne w rozumieniu art. 22 RODO — algorytm dobiera kolejność ćwiczeń, ale nie podejmuje decyzji o dostępie do usługi, ocenach szkolnych ani innych skutkach prawnych wobec użytkownika.
5. Odbiorcy danych (podmioty przetwarzające)
Powierzamy przetwarzanie danych wyłącznie zaufanym podmiotom, w zakresie niezbędnym do świadczenia usługi, na podstawie umów powierzenia (art. 28 RODO) tam, gdzie jest to wymagane. Aktualna, szczegółowa lista wraz z krajem przetwarzania i podstawą transferu znajduje się poniżej. Nie istnieje strona /subprocessors: aplikacja apps/web została usunięta (commit 4f81d2ef), a adres /matura-na-100/subprocessors/ zwraca stronę główną studia, a nie listę podmiotów — nie linkujemy do niej.
| Podmiot | Cel | Lokalizacja |
|---|---|---|
| RevenueCat | Zarządzanie subskrypcjami i uprawnieniami premium | UE/US (DPF) |
| Sentry | Raporty awarii aplikacji (zanonimizowane) | UE (region wybrany dla danych z UE) |
| Cloudflare Workers | Proxy opinii Socratic (argument-practice) | US edge / DPF |
| DeepInfra | Inferencja LLM (wyłącznie przez Worker) | US (DPF) |
| Google / Apple (tożsamość) | Logowanie natywne (opcjonalne — dostępny jest tryb gościa) | US (EU-US Data Privacy Framework) |
| Expo (EAS) | Budowanie i dystrybucja aplikacji mobilnej | US (DPF) |
Cloudflare Workers — drugi worker (audio-worker) |
Serwowanie nagrań audio oraz limiter żądań po IP | US edge / DPF |
Cloudflare R2 (bucket matura-na-100-audio) |
Przechowywanie plików audio nagrań | US edge / DPF |
| iCloud CloudKit (tylko iOS) | Synchronizacja Twojego snapshotu nauki na Twoim własnym koncie Apple, automatycznie po zalogowaniu | Zależna od ustawień konta Apple |
Google Drive, zakres appdata (tylko Android) |
Ta sama synchronizacja na Twoim koncie Google; zakres jest proszony o autoryzację w momencie logowania Google | Zależna od ustawień konta Google |
| PhET (University of Colorado), w WebView | Wbudowana symulacja w 17 pytaniach z fizyki — Twoje IP i user-agent trafiają do Uniwersytetu Kolorado; symulacja ustawia własne pliki cookie | US |
| GitHub (REST API) | Sprawdzenie dostępności nowej wersji aplikacji (IP + user-agent) | US |
Nie korzystamy z Upstash Redis, samodzielnego VPS-a hostingowego ani R2 do plików materiałów edykacyjnych — podmioty te figurowały w starszej wersji tego dokumentu, ale nie są aktywne (zgodnie z docs/DATA-SAFETY.md).
Nie korzystamy z Anthropic ani OpenAI w funkcjach produkcyjnych — stub Socratic Anthropic nie jest wywoływany. Argument-practice idzie przez DeepInfra i Cloudflare Worker. Generator wariantów pytań (packages/variant-generator) jest w pełni deterministyczny (zob. docs/adr/007-deterministic-variant-generator.md). GitHub OAuth nie jest używany w aplikacji mobilnej, ale aplikacja odpytuje publiczne API GitHub o najnowsze wydanie (GET /repos/{repo}/releases/latest), więc Twoje IP i user-agent docierają do GitHuba (§5).
6. Przekazywanie danych poza Europejski Obszar Gospodarczy
Część podmiotów wskazanych w §5 (RevenueCat, Sentry w konfiguracji domyślnej, Google/Apple OAuth, Expo) może przetwarzać dane poza EOG. W takich przypadkach transfer odbywa się na podstawie mechanizmów przewidzianych w RODO — w szczególności ram EU-US Data Privacy Framework (DPF) dla podmiotów amerykańskich certyfikowanych w tym programie, lub standardowych klauzul umownych (SCC) tam, gdzie DPF nie ma zastosowania. Aktualny status certyfikacji można zweryfikować na https://www.dataprivacyframework.gov/.
7. Okres przechowywania danych
| Kategoria | Okres |
|---|---|
| Dane konta i profilu | do momentu usunięcia konta; trwałe usunięcie w ciągu 30 dni od żądania |
| Postępy w nauce, eseje, sesje | jak wyżej — usuwane kaskadowo wraz z kontem |
| Raporty awarii (Sentry) | zgodnie z domyślną retencją Sentry (typowo do 90 dni), dane zanonimizowane |
| Logi bezpieczeństwa (skróty IP w rate-limiterze) | do wygaśnięcia okna limitu (minuty–godziny) |
| Dane po żądaniu usunięcia konta | 30-dniowy okres na wycofanie żądania, następnie trwałe i nieodwracalne usunięcie |
8. Twoje prawa
Zgodnie z RODO przysługuje Ci prawo do:
- dostępu do swoich danych — funkcja „Pobierz moje dane” w Ustawieniach generuje pełny eksport w formacie JSON;
- sprostowania danych — edycja profilu bezpośrednio w aplikacji;
- usunięcia danych („prawo do bycia zapomnianym”) — funkcja „Usuń konto” w Ustawieniach; dane są natychmiast oznaczane do usunięcia, sesje logowania unieważniane od razu, a trwałe usunięcie następuje po 30 dniach;
- ograniczenia przetwarzania oraz sprzeciwu wobec przetwarzania opartego na prawnie uzasadnionym interesie — kontakt: contact@kzlab.dev;
- przenoszenia danych — eksport JSON opisany powyżej jest odczytywalny maszynowo;
- wniesienia skargi do organu nadzorczego — w Polsce jest to Prezes Urzędu Ochrony Danych Osobowych (UODO), ul. Stawki 2, 00-193 Warszawa, https://uodo.gov.pl.
Odpowiadamy na żądania dotyczące praw użytkownika bez zbędnej zwłoki, nie później niż w ciągu miesiąca od otrzymania żądania (art. 12 ust. 3 RODO).
9. Dane osób niepełnoletnich
Aplikacja jest kierowana do uczniów przygotowujących się do egzaminu maturalnego (realistycznie ok. 16–19 lat). Rejestracja konta wymaga oświadczenia o ukończeniu 16 roku życia (próg zgody cyfrowej z art. 8 RODO) oraz akceptacji niniejszej polityki i regulaminu — oświadczenie jest zbierane na ostatnim kroku procesu onboardingu w aplikacji mobilnej i zapisywane wraz ze znacznikiem czasu (Profile.ageConsentAcceptedAt). Nie oferujemy obecnie zweryfikowanej ścieżki zgody rodzicielskiej dla osób poniżej 16 roku życia — takie konta nie powinny być zakładane.
10. Pliki cookie (strona informacyjna)
Aplikacja mobilna nie wykorzystuje plików cookie. Statyczne strony prawne na studio.kzlab.dev nie ustawiają ciasteczka sesji logowania. Nie używamy ciasteczek analitycznych ani marketingowych.
11. Bezpieczeństwo danych
- Tranzyt: TLS 1.2+. Spoczynek na urządzeniu: AES-256-GCM dla kolejek offline/sync i paczki treści; klucz w Keychain/Keystore. Hearts/XP to JSON w SecureStore (szyfrowanie platformy, nie warstwa aplikacji).
- Uwierzytelnianie mobilne: Google lub Apple (lub tryb gościa bez konta) — nie przechowujemy haseł do konta. Nie ma logowania webowego dla uczniów.
- Regularne aktualizacje zależności i monitorowanie podatności.
12. Zmiany w polityce prywatności
O istotnych zmianach w niniejszej polityce poinformujemy z co najmniej 30-dniowym wyprzedzeniem poprzez powiadomienie w aplikacji i/lub e-mail na zarejestrowany adres. Data ostatniej aktualizacji znajduje się na początku dokumentu.
13. Kontakt
- Ochrona danych: contact@kzlab.dev
- Wsparcie techniczne: contact@kzlab.dev
- Adres korespondencyjny: LogicLoom Kamil Zwarycz, ul. Kalinowa 6L lok. 3, 81-198 Kosakowo, Polska.