Polityka prywatności — Matura na 100
Uwaga: Treść jest zsynchronizowana z faktycznym stanem systemu opisanym w
docs/DATA-SAFETY.mdiapps/web/src/lib/legal/subprocessors.json— jeśli dodajesz nowe źródło danych osobowych do aplikacji, zaktualizuj wszystkie trzy dokumenty w tym samym PR.
Wersja: 2.0.0 · Ostatnia aktualizacja: 2026-07-14
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: privacy@matura-na-100.pl
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, opcjonalna nazwa/awatar, hasło do logowania OAuth (nie przechowujemy haseł — logowanie magic-link lub OAuth) | Założenie i obsługa konta, uwierzytelnianie | Art. 6 ust. 1 lit. b (wykonanie umowy) |
| Dane profilu/nauki | rok matury, cel procentowy, wybrane przedmioty, strefa czasowa, język | 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 regulaminu/polityki i oświadczenia 16+ | Zgodność z art. 8 RODO, dowód zgody | Art. 6 ust. 1 lit. c (obowiązek prawny) |
| 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), telemetria wydajności (OpenTelemetry) | 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 | skrótowane (zahaszowane) adresy IP w limiterach żądań | 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 algorytmy (spaced-repetition/SM-2 oraz modele IRT do doboru trudności pytań) do personalizacji kolejności i doboru materiału do nauki. 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, podstawą transferu i poziomem ryzyka znajduje się w apps/web/src/lib/legal/subprocessors.json (renderowana pod /subprocessors). Skrót:
| 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) |
| AWS SES | Wysyłka e-maili transakcyjnych (magic-link, powiadomienia) | eu-central-1 (Frankfurt) |
| Upstash Redis | Rate-limiting (przechowuje wyłącznie skróty HMAC adresów IP/e-maili) | UE (region skonfigurowany) |
| Cloudflare R2 | Przechowywanie plików medialnych materiałów edukacyjnych | region EU |
| Dostawca hostingu (self-hosted VPS) | Hosting aplikacji webowej, API i bazy danych | UE |
| Google / Apple / GitHub OAuth | Logowanie przez konto zewnętrzne (opcjonalne) | US (mechanizm transferu: EU-US Data Privacy Framework) |
| Expo (EAS) | Budowanie i dystrybucja aplikacji mobilnej | US (DPF) |
Nie korzystamy obecnie z żadnego dostawcy modeli językowych (LLM) w funkcjach produkcyjnych — generator wariantów pytań (packages/variant-generator) jest w pełni deterministyczny i nie wykonuje wywołań do zewnętrznych API (zob. docs/adr/007-deterministic-variant-generator.md).
6. Przekazywanie danych poza Europejski Obszar Gospodarczy
Część podmiotów wskazanych w §5 (RevenueCat, Sentry w konfiguracji domyślnej, Google/Apple/GitHub 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: privacy@matura-na-100.pl;
- 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 (aplikacja webowa)
Aplikacja mobilna nie wykorzystuje plików cookie. Strona internetowa (matura-na-100.pl) wykorzystuje obecnie wyłącznie ciasteczko sesji logowania (NextAuth), niezbędne do działania usługi — nie wymaga zgody na podstawie art. 173 ust. 3 ustawy Prawo telekomunikacyjne (ciasteczka ściśle niezbędne). Nie używamy obecnie ciasteczek analitycznych ani marketingowych. Jeśli to się zmieni, niniejsza sekcja i odpowiedni mechanizm zgody zostaną zaktualizowane przed wdrożeniem.
11. Bezpieczeństwo danych
- Szyfrowanie danych w spoczynku (Postgres) oraz w tranzycie (TLS 1.2+).
- Uwierzytelnianie: logowanie magic-link e-mail lub OAuth (Google/Apple/ GitHub) — nie przechowujemy haseł do konta; opcjonalne 2FA oparte na TOTP.
- Kody odzyskiwania 2FA są hashowane algorytmem Argon2id z unikalną solą per kod; plaintext pokazywany jest użytkownikowi wyłącznie raz, w momencie generowania.
- Adresy IP w logach/rate-limiterach przechowywane wyłącznie jako jednokierunkowe, solone skróty (HMAC-SHA256) — nie przechowujemy adresów IP w postaci jawnej w logach aplikacji.
- 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: privacy@matura-na-100.pl
- Wsparcie techniczne: support@matura-na-100.pl
- Adres korespondencyjny: LogicLoom Kamil Zwarycz, ul. Kalinowa 6L lok. 3, 81-198 Kosakowo, Polska.