Grundlage der Lizenzabrechnung: jede Vollkatalog-Freischaltung entspricht genau einem serverseitig verifizierten Store-Kauf (Apple App Store Server API / Google Play Developer API). 1 Kauf = 1 Konto = 1 Entitlement.
| Monat | Store | Produkt | Käufe | Aktiv | Widerrufen |
|---|
Transaktions- und Nutzer-Kennungen sind SHA-256-Hashes (16 Hex-Zeichen) — stabil über Abrufe hinweg (abgleichbar), aber ohne Personenbezug (DSGVO).
| Datum | Store | Produkt | Status | Tx-Hash | Konto-Hash |
|---|
Kotlin-Multiplatform-App (iOS & Android, gemeinsame Fachlogik) · Self-hosted Supabase-Stack (PostgreSQL + GoTrue-Auth + PostgREST + Kong API-Gateway + Deno Edge Functions) auf einem Hetzner-Server in der EU. Sämtlicher Transport ausschließlich über TLS (HTTPS).
is_free-Demo-Fragen frei. Der Vollkatalog ist nur mit aktivem
Entitlement lesbar (has_full_access() / Lizenz-Tiers via user_licenses()).
Das wird in der Datenbank erzwungen — nicht in der App.verify-purchase) validiert jeden
Beleg direkt bei Apple (App Store Server API, signierte JWS-Transaktion) bzw. Google (Play Developer API)
und schreibt erst dann — mit service_role-Rechten — das Entitlement. Clients können sich
nicht selbst freischalten; es gibt keine Lizenzschlüssel oder Codes außerhalb der Stores.Read-only. Die Auswertungen laufen über dedizierte, serverseitig geprüfte Funktionen, die ausschließlich für hinterlegte Auditor-Konten freigegeben sind. Es werden keine personenbezogenen Daten ausgegeben.