Privacy Policy
Last updated: 2026-07-29
CoopSync is a free, hobby-developed application that syncs co-op game saves
between friends through each pair's own private GitHub repository. This
policy explains what personal data the CoopSync online services
(the signaling/presence server at signal.coopsync.app and the
coopsync.app website/Worker) process, and what the desktop client
does on your own machine.
1. Controller
The controller responsible for the data described below is:
Vitalii Kravchenko
Contact: vitalii.kravchenko.work@gmail.com
This is a solo hobby project, not a registered company. There is no
Data Protection Officer; use the contact above for any privacy request.
Operating without a registered business does not reduce or exempt these
obligations: because CoopSync's online services are offered publicly to
people outside the developer's own household, the GDPR "purely personal
or household activity" exemption does not apply here.
2. What CoopSync does NOT do
- CoopSync does not run its own save-file storage. Your game saves,
version history, and chat (once implemented) live in a private GitHub
repository that you and your friend own and control — GitHub is a
separate controller for that data, governed by
GitHub's own Privacy Statement.
- The signaling server never receives your GitHub sync token (the one
with repository access). It only ever receives a short-lived,
purpose-limited credential described in section 4.
- No analytics, no advertising, no tracking cookies, no session
recording, on the website or in the client.
3. What the signaling/presence service processes
When the desktop client connects to signal.coopsync.app to show which
of your friends are online and to relay WebRTC connection setup
(planned P2P features), the server processes:
| Data | Purpose | Where it lives | Retention |
| IP address of your connection | Per-IP connection-count limit (abuse/flood protection) | In server memory (RAM) only | Removed immediately when your connection closes; never written to disk |
| Your GitHub numeric ID and login | Identify you to your mutually-confirmed friends for presence/signaling | In server memory only | Cleared when you disconnect; nothing persists across server restarts |
| Presence-JWT / auth token (hashed) | Avoid re-validating on every message | In-memory cache, keyed by a SHA-256 hash of the token, never the raw token | Auto-expires after 15 minutes (successful auth) or 60 seconds (failed auth) |
| "Friend" list you declare, and WebRTC signaling payloads (offer/answer/ICE candidates) | Show online status and set up a direct peer-to-peer connection between mutual friends only | Relayed in memory; the server does not read or store the content, only forwards it | Not stored — exists only for the duration of the exchange |
| Game-ID strings sent with "I pushed a save" / "I'm playing" events | Trigger the instant new-save notification and "friend is playing" badge for your friends | In server memory only | Cleared on disconnect |
Nothing above is ever written to a log file, database, or any
persistent storage, with one exception described next.
Registered-user counter
The first time your GitHub numeric ID connects to the signaling server,
that bare numeric ID (nothing else — no login, no token, no IP, no
timestamp) is appended to a small counter file so we can show "N
registered users" on the website. This is the only thing persisted by
the server. A bare numeric ID can still be resolved back to a GitHub
account, so it counts as personal data — currently there is no
automatic deletion, which we're aware is a retention gap. We're
evaluating switching this to a purely numeric counter that stores no
per-user identifier at all; until that ships, you can request removal
of your ID at any time (see section 6).
/healthz and /stats endpoints
These return only aggregate numbers (uptime, total connection count,
registered-user count) — no personal data. They are polled by an
external uptime monitor (UptimeRobot) that only sees these aggregate
numbers, never your data.
4. The coopsync.app website/Worker (presence-token exchange)
Before connecting to the signaling server, the client sends your
GitHub sync token, over HTTPS, to coopsync.app/api/presence-token.
This Worker makes one GET /user call to GitHub's API to confirm your
identity, and returns a short-lived signed token (valid 10 minutes) —
your GitHub sync token is not stored or logged anywhere in this
process; it exists only for the duration of that single request.
Older client versions (≤0.9.40) instead send a separate, repository-less
GitHub token directly to the signaling server for the same one-time
identity check; that token is likewise never stored, only hashed for a
short-lived cache (see section 3).
The website also exposes /api/geo, which echoes back the country
Cloudflare detects for your connection (used to pick a display
language/region) — this is not stored anywhere.
5. Third parties / sub-processors
| Party | Role | What they see |
| Cloudflare | Reverse proxy / edge network in front of coopsync.app and signal.coopsync.app; hosts the presence-token Worker | Connection IP and metadata as any web host would see, per Cloudflare's Privacy Policy |
| GitHub (as our processor) | One-time identity check (GET /user) during the presence-token exchange | Your GitHub token for that single request; not stored or logged by us |
| UptimeRobot | External uptime monitoring of /healthz | Only aggregate, non-personal health data |
Separately, and not as our sub-processor: if you use CoopSync's save-sync
feature, your saves and version history live in a private GitHub repository
that you and your friend own directly. For that data, GitHub is your own,
independent controller — not a processor acting on our instructions — and
GitHub's own Privacy Statement
governs it, not this policy.
We do not sell or share your data with anyone else, and we do not use
any advertising or analytics service.
6. Your rights
Under GDPR you have the right to:
- Access the data we hold about you.
- Rectify inaccurate data.
- Erase your data (e.g., removal of your ID from the registered-user
counter file described in section 3).
- Restrict processing.
- Data portability, where applicable.
- Object to processing based on legitimate interest, including presence
and signaling (see section 7) — the app's save-sync features remain fully
usable without them; only the online dot and instant notifications are
affected.
To exercise any of these, email vitalii.kravchenko.work@gmail.com. As this
is a one-person project, requests are handled within one month; for complex
or numerous requests that period may be extended by up to two further
months, in which case we'll tell you within the first month. Responding to
your request is free, unless a request is manifestly unfounded or
excessive.
You also have the right to lodge a complaint with a supervisory
authority — in Poland, the
Urząd Ochrony Danych Osobowych (UODO)
(ul. Stawki 2, 00-193 Warszawa), or the data protection authority in your
own country of residence.
7. Legal basis for processing
- Presence, signaling, the instant save-notification feature, and the
one-time identity check (
GET /user) are all processed on the basis
of legitimate interest — providing the online-status/instant-
notification feature to logged-in users, and confirming identity so
presence and signaling only ever reach mutually-confirmed friends.
Presence connects automatically as soon as you're logged in (it
shares your login rather than having a separate toggle today); it
is not the app's core function — save-sync works fully without it —
so you can object to this processing at any time (section 6), and
logging out stops it entirely.
- The short-lived connection-abuse protections (IP connection limits,
rate limiting) are likewise processed on the basis of legitimate
interest — keeping the service functioning and abuse-free for
everyone using it.
8. Children
CoopSync is not directed at children. If you are under 16 (the digital
consent age under Polish/EU law), please only use CoopSync with a
parent or guardian's involvement, particularly for the GitHub account
required to use the sync features.
9. International data transfers
Cloudflare and GitHub (Microsoft) may process data outside the EU/EEA
(e.g., in the United States). Both participate in the EU-U.S. Data
Privacy Framework, which the European Commission recognizes as
providing an adequate level of protection (GDPR Article 45), and both
also offer Standard Contractual Clauses as a fallback safeguard — see
their respective privacy policies linked above for their current
certification status.
Poland's telecom data-retention rules (Prawo komunikacji elektronicznego)
apply to registered telecom operators, not to a non-commercial signaling
relay like this one — and in any case, as described in section 3, we
don't keep persistent IP logs regardless.
10. Changes to this policy
If what the service collects or how it's processed changes, this file
will be updated and the "Last updated" date at the top will change.
Since this file lives in the public GitHub repository, its full history
of changes is visible via git log PRIVACY.md.
11. Language
This policy is also available in the app's other interface languages on
coopsync.app/privacy.html. Those
translations are provided for convenience; in case of any conflict or
ambiguity, this English version is authoritative.
Politique de confidentialité
Dernière mise à jour : 2026-07-29
CoopSync est une application gratuite, développée en amateur, qui synchronise les sauvegardes de jeux coopératifs entre amis via le dépôt GitHub privé de chaque binôme. Cette politique explique quelles données personnelles les services en ligne de CoopSync (le serveur de signalisation/présence sur signal.coopsync.app et le site/Worker coopsync.app) traitent, et ce que fait le client de bureau sur votre propre machine.
1. Responsable du traitement
Le responsable du traitement des données décrites ci-dessous est :
Vitalii Kravchenko
Contact : vitalii.kravchenko.work@gmail.com
Il s'agit d'un projet personnel amateur, pas d'une société enregistrée. Il n'y a pas de délégué à la protection des données (DPO) ; utilisez le contact ci-dessus pour toute demande liée à la vie privée. Le fait de fonctionner sans entreprise enregistrée ne réduit ni n'exempte ces obligations : comme les services en ligne de CoopSync sont proposés publiquement à des personnes en dehors du foyer du développeur, l'exemption RGPD pour « activité strictement personnelle ou domestique » ne s'applique pas ici.
2. Ce que CoopSync ne fait PAS
- CoopSync n'exploite pas son propre espace de stockage pour les fichiers de sauvegarde. Vos sauvegardes de jeu, leur historique de versions, et le chat (une fois implémenté) vivent dans un dépôt GitHub privé que vous et votre ami possédez et contrôlez — GitHub est un responsable de traitement distinct pour ces données, régi par la Déclaration de confidentialité de GitHub.
- Le serveur de signalisation ne reçoit jamais votre token de synchronisation GitHub (celui qui donne accès au dépôt). Il ne reçoit qu'un identifiant de courte durée, à usage limité, décrit à la section 4.
- Aucun outil d'analytics, aucune publicité, aucun cookie de tracking, aucun enregistrement de session, ni sur le site ni dans le client.
3. Ce que traite le service de signalisation/présence
Quand le client de bureau se connecte à signal.coopsync.app pour afficher lesquels de vos amis sont en ligne et pour relayer la configuration des connexions WebRTC (fonctionnalités P2P prévues), le serveur traite :
| Donnée | Finalité | Où elle vit | Conservation |
| Adresse IP de votre connexion | Limite du nombre de connexions par IP (protection contre les abus/le flood) | En mémoire serveur (RAM) uniquement | Supprimée immédiatement à la fermeture de votre connexion ; jamais écrite sur disque |
| Votre ID numérique GitHub et votre identifiant | Vous identifier auprès de vos amis mutuellement confirmés pour la présence/signalisation | En mémoire serveur uniquement | Effacée à la déconnexion ; rien ne persiste après un redémarrage du serveur |
| JWT de présence / token d'authentification (haché) | Éviter de revalider à chaque message | Cache en mémoire, indexé par un hash SHA-256 du token, jamais le token brut | Expire automatiquement après 15 minutes (authentification réussie) ou 60 secondes (échec d'authentification) |
| Liste d'« amis » que vous déclarez, et charges utiles de signalisation WebRTC (offer/answer/candidats ICE) | Afficher le statut en ligne et établir une connexion pair-à-pair directe entre amis mutuels uniquement | Relayées en mémoire ; le serveur ne lit ni ne stocke le contenu, il le transmet seulement | Non stockées — n'existent que le temps de l'échange |
| Chaînes d'ID de jeu envoyées avec les événements « j'ai poussé une sauvegarde » / « je joue » | Déclencher la notification instantanée de nouvelle sauvegarde et le badge « ami en train de jouer » pour vos amis | En mémoire serveur uniquement | Effacées à la déconnexion |
Rien de ce qui précède n'est jamais écrit dans un fichier de log, une base de données, ou tout autre stockage persistant, à une exception près décrite ci-dessous.
Compteur d'utilisateurs enregistrés
La première fois que votre ID numérique GitHub se connecte au serveur de signalisation, cet ID numérique brut (rien d'autre — ni identifiant, ni token, ni IP, ni horodatage) est ajouté à un petit fichier compteur, pour pouvoir afficher « N utilisateurs enregistrés » sur le site. C'est la seule chose que le serveur conserve. Un ID numérique brut peut toujours être retracé jusqu'à un compte GitHub, donc il compte comme donnée personnelle — actuellement il n'y a pas de suppression automatique, ce qui est une lacune de conservation dont nous avons conscience. Nous évaluons le passage à un compteur purement numérique qui ne stockerait aucun identifiant par utilisateur ; en attendant, vous pouvez demander la suppression de votre ID à tout moment (voir section 6).
Endpoints /healthz et /stats
Ceux-ci ne renvoient que des chiffres agrégés (temps de fonctionnement, nombre total de connexions, nombre d'utilisateurs enregistrés) — aucune donnée personnelle. Ils sont interrogés par un service externe de monitoring (UptimeRobot) qui ne voit que ces chiffres agrégés, jamais vos données.
4. Le site/Worker coopsync.app (échange du token de présence)
Avant de se connecter au serveur de signalisation, le client envoie votre token de synchronisation GitHub, via HTTPS, à coopsync.app/api/presence-token. Ce Worker effectue un seul appel GET /user à l'API GitHub pour confirmer votre identité, et renvoie un token signé de courte durée (valable 10 minutes) — votre token de synchronisation GitHub n'est stocké ni journalisé nulle part dans ce processus ; il n'existe que le temps de cette unique requête.
Les versions plus anciennes du client (≤0.9.40) envoient à la place un token GitHub distinct, sans accès aux dépôts, directement au serveur de signalisation pour la même vérification d'identité ponctuelle ; ce token n'est pas non plus stocké, seulement haché pour un cache de courte durée (voir section 3).
Le site expose aussi /api/geo, qui renvoie le pays détecté par Cloudflare pour votre connexion (utilisé pour choisir une langue/région d'affichage) — ceci n'est stocké nulle part.
5. Tiers / sous-traitants
| Partie | Rôle | Ce qu'elle voit |
| Cloudflare | Reverse proxy / réseau en périphérie devant coopsync.app et signal.coopsync.app ; héberge le Worker du token de présence | IP de connexion et métadonnées, comme n'importe quel hébergeur web, selon la politique de confidentialité de Cloudflare |
| GitHub (en tant que notre sous-traitant) | Vérification d'identité ponctuelle (GET /user) lors de l'échange du token de présence | Votre token GitHub pour cette seule requête ; non stocké ni journalisé par nous |
| UptimeRobot | Monitoring externe de la disponibilité de /healthz | Uniquement des données de santé agrégées, non personnelles |
Séparément, et non en tant que notre sous-traitant : si vous utilisez la fonctionnalité de synchronisation des sauvegardes de CoopSync, vos sauvegardes et leur historique de versions vivent dans un dépôt GitHub privé que vous et votre ami possédez directement. Pour ces données, GitHub est votre propre responsable de traitement, indépendant — pas un sous-traitant agissant sur nos instructions — et c'est la Déclaration de confidentialité de GitHub qui s'applique, pas cette politique.
Nous ne vendons ni ne partageons vos données avec qui que ce soit, et nous n'utilisons aucun service de publicité ou d'analytics.
6. Vos droits
En vertu du RGPD (GDPR), vous avez le droit :
- D'accéder aux données que nous détenons sur vous.
- De rectifier les données inexactes.
- D'effacer vos données (par exemple, la suppression de votre ID du fichier compteur d'utilisateurs enregistrés décrit à la section 3).
- De limiter le traitement.
- À la portabilité des données, le cas échéant.
- De vous opposer au traitement fondé sur l'intérêt légitime, y compris la présence et la signalisation (voir section 7) — les fonctionnalités de synchronisation des sauvegardes de l'application restent pleinement utilisables sans elles ; seuls le point de statut en ligne et les notifications instantanées sont affectés.
Pour exercer l'un de ces droits, écrivez à vitalii.kravchenko.work@gmail.com. Comme il s'agit d'un projet mené par une seule personne, les demandes sont traitées dans un délai d'un mois ; pour des demandes complexes ou nombreuses, ce délai peut être prolongé de deux mois supplémentaires, auquel cas nous vous en informerons dans le premier mois. Répondre à votre demande est gratuit, sauf si une demande est manifestement infondée ou excessive.
Vous avez aussi le droit d'introduire une réclamation auprès d'une autorité de contrôle — en Pologne, l'Urząd Ochrony Danych Osobowych (UODO) (ul. Stawki 2, 00-193 Warszawa), ou l'autorité de protection des données de votre propre pays de résidence.
7. Base légale du traitement
- La présence, la signalisation, la fonctionnalité de notification instantanée de sauvegarde, et la vérification d'identité ponctuelle (
GET /user) sont toutes traitées sur la base de l'intérêt légitime — fournir la fonctionnalité de statut en ligne/notification instantanée aux utilisateurs connectés, et confirmer l'identité pour que la présence et la signalisation n'atteignent jamais que des amis mutuellement confirmés. La présence se connecte automatiquement dès que vous êtes connecté (elle partage votre connexion plutôt que d'avoir un interrupteur séparé aujourd'hui) ; ce n'est pas la fonction principale de l'application — la synchronisation des sauvegardes fonctionne pleinement sans elle — donc vous pouvez vous opposer à ce traitement à tout moment (section 6), et vous déconnecter l'arrête entièrement.
- Les protections anti-abus de courte durée (limites de connexions par IP, limitation de débit) sont elles aussi traitées sur la base de l'intérêt légitime — maintenir le service fonctionnel et sans abus pour tous ceux qui l'utilisent.
8. Enfants
CoopSync ne s'adresse pas aux enfants. Si vous avez moins de 16 ans (l'âge de consentement numérique en droit polonais/européen), merci d'utiliser CoopSync uniquement avec l'implication d'un parent ou tuteur, en particulier pour le compte GitHub nécessaire aux fonctionnalités de synchronisation.
9. Transferts internationaux de données
Cloudflare et GitHub (Microsoft) peuvent traiter des données en dehors de l'UE/EEE (par exemple aux États-Unis). Les deux participent au Data Privacy Framework UE-États-Unis, que la Commission européenne reconnaît comme offrant un niveau de protection adéquat (article 45 du RGPD), et les deux proposent aussi des clauses contractuelles types comme garantie de repli — voir leurs politiques de confidentialité respectives, liées ci-dessus, pour leur statut de certification actuel.
Les règles polonaises de conservation des données télécoms (Prawo komunikacji elektronicznego) s'appliquent aux opérateurs télécoms enregistrés, pas à un relais de signalisation non commercial comme celui-ci — et de toute façon, comme décrit à la section 3, nous ne conservons pas de logs IP persistants quoi qu'il en soit.
10. Modifications de cette politique
Si ce que le service collecte ou la façon dont il est traité change, ce fichier sera mis à jour et la date « Dernière mise à jour » en haut changera. Comme ce fichier vit dans le dépôt GitHub public, tout son historique de modifications est visible via git log PRIVACY.md.
11. Langue
Cette politique est aussi disponible dans les autres langues d'interface de l'application, sur coopsync.app/privacy.html. Ces traductions sont fournies à titre de commodité ; en cas de conflit ou d'ambiguïté, la version anglaise fait foi.
Datenschutzerklärung
Zuletzt aktualisiert: 2026-07-29
CoopSync ist eine kostenlose, als Hobbyprojekt entwickelte Anwendung, die Spielstände von Koop-Spielen zwischen Freunden über ein privates GitHub-Repository des jeweiligen Duos synchronisiert. Diese Datenschutzerklärung erläutert, welche personenbezogenen Daten die Online-Dienste von CoopSync (der Signaling-/Presence-Server unter signal.coopsync.app sowie die Website/der Worker coopsync.app) verarbeiten, und was der Desktop-Client auf deinem eigenen Rechner tut.
1. Verantwortlicher
Verantwortlich für die unten beschriebenen Daten ist:
Vitalii Kravchenko
Kontakt: vitalii.kravchenko.work@gmail.com
Dies ist ein Solo-Hobbyprojekt, kein eingetragenes Unternehmen. Es gibt keinen Datenschutzbeauftragten; nutze für jede Datenschutzanfrage die obige Kontaktadresse. Dass das Projekt ohne eingetragenes Unternehmen betrieben wird, mindert diese Pflichten nicht und befreit nicht davon: Da die Online-Dienste von CoopSync öffentlich Personen außerhalb des eigenen Haushalts des Entwicklers angeboten werden, greift die in der Datenschutz-Grundverordnung (DSGVO, engl. GDPR) vorgesehene Ausnahme für „ausschließlich persönliche oder familiäre Tätigkeiten" hier nicht.
2. Was CoopSync NICHT macht
- CoopSync betreibt keine eigene Speicherung von Spielstand-Dateien. Deine Spielstände, dein Versionsverlauf und der Chat (sobald implementiert) liegen in einem privaten GitHub-Repository, das dir und deinem Freund gehört und von euch kontrolliert wird — für diese Daten ist GitHub ein eigenständiger Verantwortlicher, geregelt durch GitHubs eigene Datenschutzerklärung.
- Der Signaling-Server erhält niemals deinen GitHub-Sync-Token (den mit Repository-Zugriff). Er bekommt ausschließlich ein kurzlebiges, zweckgebundenes Credential, wie in Abschnitt 4 beschrieben.
- Keine Analytics, keine Werbung, keine Tracking-Cookies, keine Session-Aufzeichnung — weder auf der Website noch im Client.
3. Was der Signaling-/Presence-Dienst verarbeitet
Wenn sich der Desktop-Client mit signal.coopsync.app verbindet, um anzuzeigen, welche deiner Freunde online sind, und um den WebRTC-Verbindungsaufbau zu vermitteln (geplante P2P-Funktionen), verarbeitet der Server:
| Daten | Zweck | Wo sie liegen | Speicherdauer |
| IP-Adresse deiner Verbindung | Verbindungslimit pro IP (Schutz vor Missbrauch/Flooding) | Nur im Server-Arbeitsspeicher (RAM) | Wird beim Schließen der Verbindung sofort entfernt; niemals auf die Festplatte geschrieben |
| Deine numerische GitHub-ID und dein Login | Identifizierung gegenüber deinen gegenseitig bestätigten Freunden für Presence/Signaling | Nur im Server-Arbeitsspeicher | Wird beim Trennen der Verbindung gelöscht; nichts bleibt über Server-Neustarts hinweg erhalten |
| Presence-JWT / Auth-Token (gehasht) | Vermeidung erneuter Validierung bei jeder Nachricht | In-Memory-Cache, indiziert über einen SHA-256-Hash des Tokens, niemals über das rohe Token | Läuft automatisch nach 15 Minuten ab (bei erfolgreicher Authentifizierung) bzw. nach 60 Sekunden (bei fehlgeschlagener Authentifizierung) |
| Von dir angegebene „Freundes"-Liste sowie WebRTC-Signaling-Payloads (Offer/Answer/ICE-Kandidaten) | Anzeige des Online-Status und Aufbau einer direkten Peer-to-Peer-Verbindung ausschließlich zwischen gegenseitig bestätigten Freunden | Wird im Arbeitsspeicher weitergeleitet; der Server liest oder speichert den Inhalt nicht, sondern leitet ihn nur weiter | Wird nicht gespeichert — existiert nur für die Dauer des Austauschs |
| Game-ID-Strings, die mit „Ich habe einen Spielstand gepusht"-/„Ich spiele gerade"-Events gesendet werden | Auslösen der sofortigen Benachrichtigung über neue Spielstände und des „Freund spielt gerade"-Badges für deine Freunde | Nur im Server-Arbeitsspeicher | Wird beim Trennen der Verbindung gelöscht |
Nichts davon wird jemals in eine Log-Datei, eine Datenbank oder einen anderen dauerhaften Speicher geschrieben — mit einer Ausnahme, die im Folgenden beschrieben wird.
Zähler registrierter Nutzer
Wenn sich deine numerische GitHub-ID zum ersten Mal mit dem Signaling-Server verbindet, wird diese reine numerische ID (sonst nichts — kein Login, kein Token, keine IP, kein Zeitstempel) an eine kleine Zählerdatei angehängt, damit wir auf der Website „N registrierte Nutzer" anzeigen können. Das ist das Einzige, was der Server dauerhaft speichert. Eine reine numerische ID lässt sich dennoch auf ein GitHub-Konto zurückführen und gilt daher als personenbezogenes Datum — aktuell gibt es keine automatische Löschung, was uns als Speicherlücke bewusst ist. Wir prüfen die Umstellung auf einen rein numerischen Zähler, der überhaupt keine nutzerbezogene Kennung mehr speichert; bis das umgesetzt ist, kannst du jederzeit die Entfernung deiner ID beantragen (siehe Abschnitt 6).
Die Endpunkte /healthz und /stats
Diese liefern ausschließlich aggregierte Zahlen (Betriebszeit, Gesamtzahl der Verbindungen, Anzahl registrierter Nutzer) — keine personenbezogenen Daten. Sie werden von einem externen Uptime-Monitoring-Dienst (UptimeRobot) abgefragt, der ausschließlich diese aggregierten Zahlen sieht, niemals deine Daten.
4. Die Website/der Worker coopsync.app (Presence-Token-Austausch)
Bevor die Verbindung zum Signaling-Server hergestellt wird, sendet der Client deinen GitHub-Sync-Token über HTTPS an coopsync.app/api/presence-token. Dieser Worker führt einen einzigen GET /user-Aufruf an die GitHub-API aus, um deine Identität zu bestätigen, und gibt ein kurzlebiges, signiertes Token zurück (gültig für 10 Minuten) — dein GitHub-Sync-Token wird in diesem Prozess nirgendwo gespeichert oder geloggt; es existiert nur für die Dauer dieser einen Anfrage.
Ältere Client-Versionen (≤0.9.40) senden stattdessen ein separates GitHub-Token ohne Repository-Zugriff direkt an den Signaling-Server, für denselben einmaligen Identitätscheck; auch dieses Token wird niemals gespeichert, sondern nur für einen kurzlebigen Cache gehasht (siehe Abschnitt 3).
Die Website stellt außerdem /api/geo bereit, das das von Cloudflare für deine Verbindung erkannte Land zurückgibt (genutzt, um eine Anzeigesprache/Region vorzuschlagen) — dies wird nirgendwo gespeichert.
5. Dritte / Auftragsverarbeiter
| Partei | Rolle | Was sie sieht |
| Cloudflare | Reverse-Proxy / Edge-Netzwerk vor coopsync.app und signal.coopsync.app; hostet den Presence-Token-Worker | Verbindungs-IP und Metadaten, wie sie jeder Webhost sehen würde, gemäß Cloudflares Datenschutzrichtlinie |
| GitHub (als unser Auftragsverarbeiter) | Einmaliger Identitätscheck (GET /user) beim Presence-Token-Austausch | Dein GitHub-Token für diese eine Anfrage; von uns nicht gespeichert oder geloggt |
| UptimeRobot | Externes Uptime-Monitoring von /healthz | Nur aggregierte, nicht personenbezogene Statusdaten |
Getrennt davon, und nicht als unser Auftragsverarbeiter: Wenn du die Save-Sync-Funktion von CoopSync nutzt, liegen deine Spielstände und ihr Versionsverlauf in einem privaten GitHub-Repository, das dir und deinem Freund direkt gehört. Für diese Daten ist GitHub dein eigener, unabhängiger Verantwortlicher — nicht ein Auftragsverarbeiter, der in unserem Auftrag handelt — und dafür gilt GitHubs eigene Datenschutzerklärung, nicht diese Datenschutzerklärung.
Wir verkaufen oder teilen deine Daten mit niemandem, und wir nutzen keinerlei Werbe- oder Analytics-Dienste.
6. Deine Rechte
Nach der DSGVO (GDPR) hast du das Recht auf:
- Auskunft über die Daten, die wir über dich gespeichert haben.
- Berichtigung unrichtiger Daten.
- Löschung deiner Daten (z. B. Entfernung deiner ID aus der in Abschnitt 3 beschriebenen Zählerdatei registrierter Nutzer).
- Einschränkung der Verarbeitung.
- Datenübertragbarkeit, soweit anwendbar.
- Widerspruch gegen eine auf berechtigtem Interesse beruhende Verarbeitung, einschließlich Presence und Signaling (siehe Abschnitt 7) — die Save-Sync-Funktionen der App bleiben auch ohne diese vollständig nutzbar; betroffen sind nur der Online-Punkt und die sofortigen Benachrichtigungen.
Um eines dieser Rechte auszuüben, schreib eine E-Mail an vitalii.kravchenko.work@gmail.com. Da es sich um ein Ein-Personen-Projekt handelt, werden Anfragen innerhalb eines Monats bearbeitet; bei komplexen oder zahlreichen Anfragen kann sich dieser Zeitraum um bis zu zwei weitere Monate verlängern, worüber wir dich innerhalb des ersten Monats informieren. Die Bearbeitung deiner Anfrage ist kostenlos, außer wenn eine Anfrage offenkundig unbegründet oder exzessiv ist.
Du hast außerdem das Recht, dich bei einer Aufsichtsbehörde zu beschweren — in Polen beim Urząd Ochrony Danych Osobowych (UODO) (ul. Stawki 2, 00-193 Warszawa), oder bei der Datenschutzbehörde in deinem eigenen Wohnsitzland.
7. Rechtsgrundlage der Verarbeitung
- Presence, Signaling, die Sofort-Benachrichtigung bei neuen Spielständen sowie der einmalige Identitätscheck (
GET /user) werden alle auf Grundlage des berechtigten Interesses verarbeitet — um eingeloggten Nutzern die Online-Status-/Sofort-Benachrichtigungs-Funktion bereitzustellen und die Identität zu bestätigen, damit Presence und Signaling ausschließlich gegenseitig bestätigte Freunde erreichen. Presence verbindet sich automatisch, sobald du eingeloggt bist (es teilt sich aktuell deinen Login-Status, statt über einen separaten Schalter zu verfügen); es ist keine Kernfunktion der App — Save-Sync funktioniert auch ganz ohne Presence — daher kannst du dieser Verarbeitung jederzeit widersprechen (Abschnitt 6), und das Ausloggen beendet sie vollständig.
- Die kurzlebigen Schutzmaßnahmen gegen Verbindungsmissbrauch (IP-Verbindungslimits, Rate-Limiting) werden ebenfalls auf Grundlage des berechtigten Interesses verarbeitet — um den Dienst für alle Nutzer funktionsfähig und missbrauchsfrei zu halten.
8. Kinder
CoopSync richtet sich nicht an Kinder. Wenn du unter 16 Jahre alt bist (das digitale Einwilligungsalter nach polnischem/EU-Recht), nutze CoopSync bitte nur mit Beteiligung eines Elternteils oder Erziehungsberechtigten, insbesondere im Hinblick auf das für die Sync-Funktionen benötigte GitHub-Konto.
9. Internationale Datenübermittlungen
Cloudflare und GitHub (Microsoft) verarbeiten Daten unter Umständen außerhalb der EU/des EWR (z. B. in den USA). Beide nehmen am EU-U.S. Data Privacy Framework teil, das die Europäische Kommission als ein angemessenes Schutzniveau bietend anerkennt (Art. 45 DSGVO), und beide bieten zusätzlich Standardvertragsklauseln als Rückfall-Schutzmechanismus an — den aktuellen Zertifizierungsstatus findest du in den oben verlinkten jeweiligen Datenschutzerklärungen.
Die polnischen Regeln zur Vorratsdatenspeicherung im Telekommunikationsbereich (Prawo komunikacji elektronicznego) gelten für registrierte Telekommunikationsanbieter, nicht für einen nicht-kommerziellen Signaling-Relay wie diesen — und ohnehin speichern wir, wie in Abschnitt 3 beschrieben, keine dauerhaften IP-Logs.
10. Änderungen dieser Erklärung
Wenn sich ändert, was der Dienst erfasst oder wie es verarbeitet wird, wird diese Datei aktualisiert und das Datum „Zuletzt aktualisiert" oben ändert sich entsprechend. Da diese Datei im öffentlichen GitHub-Repository liegt, ist ihre vollständige Änderungshistorie über git log PRIVACY.md einsehbar.
11. Sprache
Diese Datenschutzerklärung ist auch in den anderen Oberflächensprachen der App verfügbar, unter coopsync.app/privacy.html. Diese Übersetzungen dienen der Verständlichkeit; im Falle eines Widerspruchs oder einer Unklarheit ist diese englische Fassung maßgeblich.
Polityka prywatności
Ostatnia aktualizacja: 2026-07-29
CoopSync to darmowa aplikacja rozwijana hobbystycznie, która synchronizuje zapisy gier kooperacyjnych między znajomymi za pośrednictwem prywatnego repozytorium GitHub należącego do każdej pary użytkowników. Niniejsza polityka wyjaśnia, jakie dane osobowe przetwarzają usługi online CoopSync (serwer sygnalizacyjny/obecności pod adresem signal.coopsync.app oraz strona internetowa/Worker coopsync.app), a także co robi klient desktopowy na Twoim własnym urządzeniu.
1. Administrator danych
Administratorem danych odpowiedzialnym za dane opisane poniżej jest:
Vitalii Kravchenko
Kontakt: vitalii.kravchenko.work@gmail.com
Jest to jednoosobowy projekt hobbystyczny, a nie zarejestrowana firma. Nie wyznaczono Inspektora Ochrony Danych (IOD) — w każdej sprawie dotyczącej prywatności prosimy o kontakt pod powyższym adresem. Prowadzenie działalności bez rejestracji firmy nie zmniejsza ani nie znosi tych obowiązków: ponieważ usługi online CoopSync są oferowane publicznie osobom spoza gospodarstwa domowego twórcy, wyłączenie RODO dotyczące „czysto osobistej lub domowej działalności" nie ma tu zastosowania.
2. Czego CoopSync NIE robi
- CoopSync nie prowadzi własnego magazynu plików zapisu. Twoje zapisy gier, historia wersji oraz czat (gdy zostanie wdrożony) znajdują się w prywatnym repozytorium GitHub, którego właścicielami i administratorami jesteście Ty i Twój znajomy — w odniesieniu do tych danych GitHub jest odrębnym administratorem danych, działającym na podstawie własnej Polityki prywatności GitHub.
- Serwer sygnalizacyjny nigdy nie otrzymuje Twojego tokena synchronizacji GitHub (tego z dostępem do repozytorium). Otrzymuje wyłącznie krótkotrwałe, ograniczone celowo poświadczenie opisane w sekcji 4.
- Brak analityki, reklam, plików cookie śledzących czy nagrywania sesji — zarówno na stronie internetowej, jak i w kliencie.
3. Jakie dane przetwarza usługa sygnalizacji/obecności
Gdy klient desktopowy łączy się z signal.coopsync.app, aby pokazać, którzy z Twoich znajomych są online, oraz przekazać dane potrzebne do nawiązania połączenia WebRTC (planowane funkcje P2P), serwer przetwarza:
| Dane | Cel | Gdzie są przechowywane | Okres przechowywania |
| Adres IP Twojego połączenia | Limit liczby połączeń na adres IP (ochrona przed nadużyciami/zalewaniem) | Wyłącznie w pamięci serwera (RAM) | Usuwany natychmiast po zamknięciu połączenia; nigdy nie zapisywany na dysku |
| Twój numeryczny identyfikator GitHub i login | Identyfikacja Ciebie wobec wzajemnie potwierdzonych znajomych na potrzeby obecności/sygnalizacji | Wyłącznie w pamięci serwera | Usuwane po rozłączeniu; nic nie zachowuje się po ponownym uruchomieniu serwera |
| Token JWT obecności / token uwierzytelniający (zahaszowany) | Uniknięcie ponownej walidacji przy każdej wiadomości | Pamięć podręczna w RAM, indeksowana skrótem SHA-256 tokena, nigdy surowym tokenem | Wygasa automatycznie po 15 minutach (udane uwierzytelnienie) lub 60 sekundach (nieudane uwierzytelnienie) |
| Deklarowana przez Ciebie lista „znajomych" oraz dane sygnalizacyjne WebRTC (oferta/odpowiedź/kandydaci ICE) | Pokazywanie statusu online i nawiązywanie bezpośredniego połączenia peer-to-peer wyłącznie między wzajemnymi znajomymi | Przekazywane w pamięci; serwer nie odczytuje ani nie przechowuje treści, jedynie ją przekazuje | Niearchiwizowane — istnieją tylko przez czas trwania wymiany |
| Identyfikatory gry (Game-ID) przesyłane wraz ze zdarzeniami „wysłałem zapis" / „gram teraz" | Wyzwalanie natychmiastowego powiadomienia o nowym zapisie oraz znacznika „znajomy gra" dla Twoich znajomych | Wyłącznie w pamięci serwera | Usuwane po rozłączeniu |
Żadna z powyższych danych nigdy nie jest zapisywana do pliku dziennika, bazy danych ani jakiejkolwiek trwałej pamięci — z jednym wyjątkiem opisanym poniżej.
Licznik zarejestrowanych użytkowników
Gdy Twój numeryczny identyfikator GitHub łączy się z serwerem sygnalizacyjnym po raz pierwszy, ten sam numeryczny identyfikator (i nic poza tym — żaden login, token, adres IP ani znacznik czasu) jest dopisywany do niewielkiego pliku licznika, dzięki czemu możemy pokazać na stronie internetowej liczbę „N zarejestrowanych użytkowników". Jest to jedyna informacja trwale przechowywana przez serwer. Sam numeryczny identyfikator nadal można powiązać z kontem GitHub, więc stanowi on dane osobowe — obecnie nie ma automatycznego usuwania, co traktujemy jako lukę w zakresie okresu przechowywania, której jesteśmy świadomi. Rozważamy zmianę na czysto liczbowy licznik, który w ogóle nie przechowuje identyfikatora poszczególnych użytkowników; do czasu wdrożenia tej zmiany możesz w każdej chwili zażądać usunięcia swojego identyfikatora (patrz sekcja 6).
/healthz i /stats
Te punkty końcowe zwracają wyłącznie zagregowane liczby (czas działania, całkowita liczba połączeń, liczba zarejestrowanych użytkowników) — żadnych danych osobowych. Są odpytywane przez zewnętrzny monitor dostępności (UptimeRobot), który widzi jedynie te zagregowane liczby, nigdy Twoje dane.
4. Strona internetowa/Worker coopsync.app (wymiana tokena obecności)
Przed połączeniem z serwerem sygnalizacyjnym klient wysyła Twój token synchronizacji GitHub, przez HTTPS, do coopsync.app/api/presence-token. Ten Worker wykonuje jedno wywołanie GET /user do API GitHub w celu potwierdzenia Twojej tożsamości i zwraca krótkotrwały podpisany token (ważny 10 minut) — Twój token synchronizacji GitHub nie jest w tym procesie nigdzie przechowywany ani logowany; istnieje wyłącznie przez czas trwania tego jednego żądania.
Starsze wersje klienta (≤0.9.40) zamiast tego wysyłają osobny token GitHub bez dostępu do repozytoriów bezpośrednio do serwera sygnalizacyjnego w celu tej samej, jednorazowej weryfikacji tożsamości; ten token również nigdy nie jest przechowywany — jest jedynie haszowany na potrzeby krótkotrwałej pamięci podręcznej (patrz sekcja 3).
Strona internetowa udostępnia również /api/geo, który zwraca kraj wykryty przez Cloudflare dla Twojego połączenia (wykorzystywany do wyboru języka/regionu wyświetlania) — nie jest to nigdzie przechowywane.
5. Strony trzecie / podmioty przetwarzające (subprocesorzy)
| Podmiot | Rola | Co widzi |
| Cloudflare | Reverse proxy / sieć brzegowa (edge network) przed coopsync.app i signal.coopsync.app; hostuje Worker obsługujący token obecności | Adres IP połączenia i metadane, jakie widziałby każdy dostawca hostingu, zgodnie z Polityką prywatności Cloudflare |
| GitHub (jako nasz podmiot przetwarzający) | Jednorazowa weryfikacja tożsamości (GET /user) podczas wymiany tokena obecności | Twój token GitHub wyłącznie na potrzeby tego jednego żądania; nieprzechowywany ani nielogowany przez nas |
| UptimeRobot | Zewnętrzne monitorowanie dostępności /healthz | Wyłącznie zagregowane, nieosobowe dane o stanie usługi |
Odrębnie, i nie jako nasz podmiot przetwarzający: jeśli korzystasz z funkcji synchronizacji zapisów CoopSync, Twoje zapisy i historia wersji znajdują się w prywatnym repozytorium GitHub, którego bezpośrednimi właścicielami jesteście Ty i Twój znajomy. W odniesieniu do tych danych GitHub jest Twoim własnym, niezależnym administratorem danych — a nie podmiotem przetwarzającym działającym na nasze polecenie — i to własna Polityka prywatności GitHub reguluje te dane, a nie niniejsza polityka.
Nie sprzedajemy ani nie udostępniamy Twoich danych nikomu innemu i nie korzystamy z żadnych usług reklamowych ani analitycznych.
6. Twoje prawa
Na podstawie RODO (GDPR) przysługują Ci następujące prawa:
- Dostęp do danych, które o Tobie przechowujemy.
- Sprostowanie nieprawidłowych danych.
- Usunięcie Twoich danych (np. usunięcie Twojego identyfikatora z pliku licznika zarejestrowanych użytkowników opisanego w sekcji 3).
- Ograniczenie przetwarzania.
- Przenoszenie danych, jeśli ma to zastosowanie.
- Sprzeciw wobec przetwarzania opartego na uzasadnionym interesie, w tym obecności i sygnalizacji (patrz sekcja 7) — funkcje synchronizacji zapisów aplikacji pozostają w pełni dostępne bez nich; dotyczy to wyłącznie wskaźnika obecności online i natychmiastowych powiadomień.
Aby skorzystać z któregokolwiek z tych praw, napisz na adres vitalii.kravchenko.work@gmail.com. Ponieważ jest to projekt prowadzony przez jedną osobę, wnioski są rozpatrywane w terminie jednego miesiąca; w przypadku wniosków skomplikowanych lub licznych termin ten może zostać przedłużony o kolejne dwa miesiące, o czym poinformujemy Cię w ciągu pierwszego miesiąca. Odpowiedź na Twój wniosek jest bezpłatna, chyba że wniosek jest ewidentnie nieuzasadniony lub nadmierny.
Masz również prawo wniesienia skargi do organu nadzorczego — w Polsce jest to Urząd Ochrony Danych Osobowych (UODO) (ul. Stawki 2, 00-193 Warszawa), lub do organu ochrony danych właściwego dla Twojego kraju zamieszkania.
7. Podstawa prawna przetwarzania
- Obecność, sygnalizacja, funkcja natychmiastowego powiadomienia o zapisie oraz jednorazowa weryfikacja tożsamości (
GET /user) są przetwarzane na podstawie uzasadnionego interesu — polegającego na udostępnianiu funkcji statusu online/natychmiastowych powiadomień zalogowanym użytkownikom oraz potwierdzaniu tożsamości, tak aby obecność i sygnalizacja docierały wyłącznie do wzajemnie potwierdzonych znajomych. Obecność łączy się automatycznie od chwili zalogowania (obecnie jest powiązana z logowaniem, a nie ma osobnego przełącznika); nie jest to podstawowa funkcja aplikacji — synchronizacja zapisów działa w pełni bez niej — dlatego w każdej chwili możesz wnieść sprzeciw wobec tego przetwarzania (sekcja 6), a wylogowanie się całkowicie je zatrzymuje.
- Krótkotrwałe zabezpieczenia przed nadużyciami połączeń (limity połączeń dla adresu IP, ograniczanie liczby żądań) są również przetwarzane na podstawie uzasadnionego interesu — polegającego na utrzymaniu prawidłowego i wolnego od nadużyć działania usługi dla wszystkich jej użytkowników.
8. Dzieci
CoopSync nie jest skierowany do dzieci. Jeśli masz mniej niż 16 lat (wiek zgody cyfrowej zgodnie z prawem polskim/unijnym), korzystaj z CoopSync wyłącznie za zgodą i z udziałem rodzica lub opiekuna prawnego, w szczególności w zakresie konta GitHub wymaganego do korzystania z funkcji synchronizacji.
9. Międzynarodowy transfer danych
Cloudflare i GitHub (Microsoft) mogą przetwarzać dane poza EOG/UE (np. w Stanach Zjednoczonych). Oba podmioty uczestniczą w programie EU-U.S. Data Privacy Framework, który Komisja Europejska uznaje za zapewniający odpowiedni stopień ochrony (art. 45 RODO), a oba oferują również standardowe klauzule umowne (Standard Contractual Clauses) jako zabezpieczenie zapasowe — aktualny status certyfikacji znajdziesz w odpowiednich politykach prywatności, do których linki podano powyżej.
Polskie przepisy o retencji danych telekomunikacyjnych (Prawo komunikacji elektronicznej) dotyczą zarejestrowanych operatorów telekomunikacyjnych, a nie niekomercyjnego przekaźnika sygnalizacyjnego takiego jak ten — a w każdym razie, jak opisano w sekcji 3, i tak nie przechowujemy trwałych dzienników adresów IP.
10. Zmiany niniejszej polityki
Jeśli zmieni się zakres zbieranych danych lub sposób ich przetwarzania, ten plik zostanie zaktualizowany, a data „Ostatnia aktualizacja" na górze ulegnie zmianie. Ponieważ ten plik znajduje się w publicznym repozytorium GitHub, jego pełna historia zmian jest widoczna poprzez git log PRIVACY.md.
11. Wersje językowe
Niniejsza polityka jest również dostępna w innych językach interfejsu aplikacji na stronie coopsync.app/privacy.html. Tłumaczenia te udostępniane są dla wygody użytkowników; w przypadku jakiejkolwiek sprzeczności lub niejasności rozstrzygająca jest wersja w języku angielskim.
Política de Privacidade
Última atualização: 29 de julho de 2026
O CoopSync é um aplicativo gratuito, desenvolvido como hobby, que sincroniza saves de jogos cooperativos entre amigos através do repositório privado do GitHub de cada dupla. Esta política explica quais dados pessoais os serviços online do CoopSync (o servidor de sinalização/presença em signal.coopsync.app e o site/Worker coopsync.app) processam, e o que o cliente desktop faz na sua própria máquina.
1. Controlador
O controlador responsável pelos dados descritos abaixo é:
Vitalii Kravchenko
Contato: vitalii.kravchenko.work@gmail.com
Este é um projeto solo, feito como hobby, não uma empresa registrada. Não há Encarregado de Proteção de Dados (DPO); use o contato acima para qualquer solicitação relacionada à privacidade. Operar sem uma empresa registrada não reduz nem isenta essas obrigações: como os serviços online do CoopSync são oferecidos publicamente a pessoas fora do próprio domicílio do desenvolvedor, a exceção do GDPR (o RGPD/GDPR europeu) para "atividade exclusivamente pessoal ou doméstica" não se aplica aqui.
2. O que o CoopSync NÃO faz
- O CoopSync não opera armazenamento próprio de arquivos de save. Seus saves de jogo, histórico de versões e chat (quando implementado) ficam em um repositório privado do GitHub que você e seu amigo possuem e controlam — o GitHub é um controlador separado para esses dados, regido pela própria Política de Privacidade do GitHub.
- O servidor de sinalização nunca recebe seu token de sincronização do GitHub (aquele com acesso ao repositório). Ele só recebe uma credencial de curta duração e finalidade limitada, descrita na seção 4.
- Nenhum analytics, nenhuma publicidade, nenhum cookie de rastreamento, nenhuma gravação de sessão, seja no site ou no cliente.
3. O que o serviço de sinalização/presença processa
Quando o cliente desktop se conecta a signal.coopsync.app para mostrar quais dos seus amigos estão online e para retransmitir a configuração da conexão WebRTC (recursos P2P planejados), o servidor processa:
| Dado | Finalidade | Onde fica armazenado | Retenção |
| Endereço IP da sua conexão | Limite de conexões por IP (proteção contra abuso/flood) | Apenas na memória do servidor (RAM) | Removido imediatamente quando sua conexão é encerrada; nunca gravado em disco |
| Seu ID numérico e login do GitHub | Identificar você para seus amigos mutuamente confirmados, para fins de presença/sinalização | Apenas na memória do servidor | Apagado quando você desconecta; nada persiste entre reinicializações do servidor |
| JWT de presença / token de autenticação (com hash) | Evitar revalidar a cada mensagem | Cache em memória, indexado por um hash SHA-256 do token, nunca o token bruto | Expira automaticamente após 15 minutos (autenticação bem-sucedida) ou 60 segundos (autenticação falha) |
| Lista de "amigos" que você declara, e payloads de sinalização WebRTC (offer/answer/candidatos ICE) | Mostrar status online e estabelecer uma conexão direta ponto a ponto apenas entre amigos mútuos | Retransmitido em memória; o servidor não lê nem armazena o conteúdo, apenas o encaminha | Não armazenado — existe apenas durante a troca |
| Strings de ID de jogo enviadas com eventos "enviei um save" / "estou jogando" | Disparar a notificação instantânea de novo save e o indicador de "amigo está jogando" para seus amigos | Apenas na memória do servidor | Apagado ao desconectar |
Nada do que está acima é gravado em arquivo de log, banco de dados ou qualquer armazenamento persistente, com uma exceção descrita a seguir.
Contador de usuários registrados
Na primeira vez que seu ID numérico do GitHub se conecta ao servidor de sinalização, esse ID numérico puro (nada mais — sem login, sem token, sem IP, sem timestamp) é adicionado a um pequeno arquivo de contador, para que possamos mostrar "N usuários registrados" no site. Isso é a única coisa persistida pelo servidor. Um ID numérico puro ainda pode ser associado de volta a uma conta do GitHub, então ele conta como dado pessoal — atualmente não há exclusão automática, o que sabemos ser uma lacuna de retenção. Estamos avaliando mudar isso para um contador puramente numérico, que não armazene identificador nenhum por usuário; até que isso seja lançado, você pode solicitar a remoção do seu ID a qualquer momento (veja a seção 6).
Endpoints /healthz e /stats
Eles retornam apenas números agregados (uptime, contagem total de conexões, número de usuários registrados) — nenhum dado pessoal. São consultados por um monitor externo de uptime (UptimeRobot), que só vê esses números agregados, nunca os seus dados.
4. O site/Worker coopsync.app (troca do token de presença)
Antes de se conectar ao servidor de sinalização, o cliente envia seu token de sincronização do GitHub, via HTTPS, para coopsync.app/api/presence-token. Esse Worker faz uma única chamada GET /user à API do GitHub para confirmar sua identidade, e retorna um token assinado de curta duração (válido por 10 minutos) — seu token de sincronização do GitHub não é armazenado nem registrado em log em nenhum ponto desse processo; ele existe apenas durante essa única requisição.
Versões mais antigas do cliente (≤0.9.40) enviam, em vez disso, um token do GitHub separado e sem acesso a repositórios diretamente ao servidor de sinalização, para a mesma verificação pontual de identidade; esse token também nunca é armazenado, apenas transformado em hash para um cache de curta duração (veja a seção 3).
O site também expõe /api/geo, que retorna o país que o Cloudflare detecta para sua conexão (usado para escolher um idioma/região de exibição) — isso não é armazenado em lugar nenhum.
5. Terceiros / suboperadores
| Parte | Papel | O que eles veem |
| Cloudflare | Proxy reverso / rede de borda (edge) na frente de coopsync.app e signal.coopsync.app; hospeda o Worker do token de presença | IP de conexão e metadados, como qualquer host web veria, conforme a Política de Privacidade da Cloudflare |
| GitHub (como nosso operador) | Verificação pontual de identidade (GET /user) durante a troca do token de presença | Seu token do GitHub para essa única requisição; não armazenado nem registrado em log por nós |
| UptimeRobot | Monitoramento externo de uptime de /healthz | Apenas dados agregados e não pessoais de disponibilidade |
Separadamente, e não como nosso suboperador: se você usa o recurso de sincronização de saves do CoopSync, seus saves e histórico de versões ficam em um repositório privado do GitHub que você e seu amigo possuem diretamente. Para esses dados, o GitHub é seu próprio controlador independente — não um operador agindo sob nossas instruções — e a própria Política de Privacidade do GitHub rege isso, não esta política.
Não vendemos nem compartilhamos seus dados com mais ninguém, e não usamos nenhum serviço de publicidade ou analytics.
6. Seus direitos
Sob o GDPR você tem o direito de:
- Acessar os dados que mantemos sobre você.
- Retificar dados incorretos.
- Apagar seus dados (por exemplo, remoção do seu ID do arquivo de contador de usuários registrados descrito na seção 3).
- Restringir o processamento.
- Portabilidade de dados, quando aplicável.
- Opor-se ao processamento baseado em interesse legítimo, incluindo presença e sinalização (veja a seção 7) — os recursos de sincronização de saves do app continuam totalmente utilizáveis sem eles; só o indicador online e as notificações instantâneas são afetados.
Para exercer qualquer um desses direitos, envie um e-mail para vitalii.kravchenko.work@gmail.com. Como este é um projeto de uma pessoa só, as solicitações são atendidas dentro de um mês; para solicitações complexas ou numerosas, esse prazo pode ser estendido por até mais dois meses, e nesse caso avisaremos você dentro do primeiro mês. Responder à sua solicitação é gratuito, a menos que ela seja manifestamente infundada ou excessiva.
Você também tem o direito de apresentar uma reclamação a uma autoridade de supervisão — na Polônia, o Urząd Ochrony Danych Osobowych (UODO) (ul. Stawki 2, 00-193 Warszawa), ou a autoridade de proteção de dados do seu próprio país de residência.
7. Base legal para o processamento
- Presença, sinalização, o recurso de notificação instantânea de save e a verificação pontual de identidade (
GET /user) são todos processados com base em interesse legítimo — fornecer o recurso de status online/notificação instantânea para usuários autenticados, e confirmar a identidade para que presença e sinalização só cheguem a amigos mutuamente confirmados. A presença se conecta automaticamente assim que você faz login (hoje ela acompanha seu login, em vez de ter um botão separado); ela não é a função principal do app — a sincronização de saves funciona totalmente sem ela — então você pode se opor a esse processamento a qualquer momento (seção 6), e sair da conta (logout) interrompe tudo.
- As proteções de curta duração contra abuso de conexão (limites de conexão por IP, rate limiting) também são processadas com base em interesse legítimo — manter o serviço funcionando e livre de abusos para todos que o usam.
8. Crianças
O CoopSync não é direcionado a crianças. Se você tem menos de 16 anos (a idade de consentimento digital sob a lei polonesa/da UE), use o CoopSync apenas com o envolvimento de um responsável legal, especialmente para a conta do GitHub necessária para usar os recursos de sincronização.
9. Transferências internacionais de dados
Cloudflare e GitHub (Microsoft) podem processar dados fora da UE/EEE (por exemplo, nos Estados Unidos). Ambos participam do EU-U.S. Data Privacy Framework, que a Comissão Europeia reconhece como oferecendo um nível adequado de proteção (GDPR, Artigo 45), e ambos também oferecem Cláusulas Contratuais Padrão como salvaguarda alternativa — veja as respectivas políticas de privacidade linkadas acima para o status de certificação atual.
As regras polonesas de retenção de dados de telecomunicações (Prawo komunikacji elektronicznego) se aplicam a operadoras de telecom registradas, não a um serviço de sinalização sem fins comerciais como este — e, de qualquer forma, como descrito na seção 3, não mantemos logs persistentes de IP independentemente disso.
10. Alterações nesta política
Se o que o serviço coleta ou como isso é processado mudar, este arquivo será atualizado e a data de "Última atualização" no topo mudará junto. Como este arquivo vive no repositório público do GitHub, seu histórico completo de alterações fica visível via git log PRIVACY.md.
11. Idioma
Esta política também está disponível nos outros idiomas de interface do app em coopsync.app/privacy.html. Essas traduções são fornecidas por conveniência; em caso de conflito ou ambiguidade, esta versão em inglês prevalece.
Политика конфиденциальности
Последнее обновление: 2026-07-29
CoopSync — бесплатное хобби-приложение, которое синхронизирует сохранения кооперативных игр между друзьями через собственный приватный GitHub-репозиторий каждой пары. Эта политика объясняет, какие персональные данные обрабатывают онлайн-сервисы CoopSync (сервер сигнализации/присутствия на signal.coopsync.app и веб-сайт/Worker coopsync.app), а также что делает десктопный клиент на вашем собственном компьютере.
1. Контролёр
Контролёром, ответственным за данные, описанные ниже, является:
Виталий Кравченко
Контакт: vitalii.kravchenko.work@gmail.com
Это сольный хобби-проект, а не зарегистрированная компания. Должности сотрудника по защите данных (DPO) не предусмотрено; по любым вопросам конфиденциальности обращайтесь по указанному выше контакту. Отсутствие зарегистрированного бизнеса не снижает и не отменяет эти обязательства: поскольку онлайн-сервисы CoopSync публично доступны людям за пределами домохозяйства разработчика, исключение GDPR (Общего регламента по защите данных) для «сугубо личной или домашней деятельности» здесь не применяется.
2. Чего CoopSync НЕ делает
- CoopSync не хранит файлы сохранений на собственных серверах. Ваши сохранения, история версий и чат (когда будет реализован) находятся в приватном GitHub-репозитории, которым владеете и управляете вы и ваш друг — для этих данных GitHub выступает отдельным контролёром и руководствуется собственной Политикой конфиденциальности GitHub.
- Сервер сигнализации никогда не получает ваш GitHub sync-токен (тот, что даёт доступ к репозиторию). Он получает только краткосрочные учётные данные с ограниченным назначением, описанные в разделе 4.
- Никакой аналитики, рекламы, отслеживающих cookie или записи сессий — ни на сайте, ни в клиенте.
3. Что обрабатывает сервис сигнализации/присутствия
Когда десктопный клиент подключается к signal.coopsync.app, чтобы показать, кто из ваших друзей онлайн, и передать параметры установки WebRTC-соединения (запланированные P2P-функции), сервер обрабатывает следующее:
| Данные | Цель | Где хранится | Срок хранения |
| IP-адрес вашего соединения | Ограничение количества соединений по IP (защита от злоупотреблений/флуда) | Только в оперативной памяти сервера (RAM) | Удаляется сразу при закрытии соединения; никогда не записывается на диск |
| Ваш числовой ID и логин GitHub | Идентификация вас для взаимно подтверждённых друзей в целях присутствия/сигнализации | Только в памяти сервера | Очищается при отключении; ничего не сохраняется после перезапуска сервера |
| Presence-JWT / токен авторизации (хешированный) | Избежать повторной проверки при каждом сообщении | Кэш в памяти, ключом служит SHA-256-хеш токена, никогда не сам токен | Автоматически истекает через 15 минут (успешная авторизация) или 60 секунд (неудачная авторизация) |
| Указанный вами список «друзей» и данные WebRTC-сигнализации (offer/answer/ICE-кандидаты) | Показ статуса «онлайн» и установка прямого P2P-соединения только между взаимными друзьями | Передаётся через память; сервер не читает и не сохраняет содержимое, только пересылает его | Не сохраняется — существует только на время обмена |
| Строки Game-ID, отправляемые с событиями «я запушил сохранение» / «я играю» | Запуск мгновенного уведомления о новом сохранении и значка «друг играет» для ваших друзей | Только в памяти сервера | Очищается при отключении |
Ничего из перечисленного выше никогда не записывается в лог-файл, базу данных или любое постоянное хранилище, за одним исключением, описанным далее.
Счётчик зарегистрированных пользователей
При первом подключении вашего числового GitHub ID к серверу сигнализации этот голый числовой ID (и больше ничего — ни логина, ни токена, ни IP, ни метки времени) добавляется в небольшой файл-счётчик, чтобы мы могли показывать на сайте «N зарегистрированных пользователей». Это единственное, что сервер сохраняет постоянно. Голый числовой ID всё же можно сопоставить с аккаунтом GitHub, поэтому он считается персональными данными — сейчас автоматического удаления нет, и мы осознаём, что это пробел в сроках хранения. Мы рассматриваем переход на чисто числовой счётчик, который вообще не хранит идентификаторы конкретных пользователей; пока это не реализовано, вы можете в любой момент запросить удаление своего ID (см. раздел 6).
Эндпоинты /healthz и /stats
Эти эндпоинты возвращают только агрегированные цифры (время работы, общее количество соединений, число зарегистрированных пользователей) — никаких персональных данных. Их опрашивает внешний сервис мониторинга доступности (UptimeRobot), который видит только эти агрегированные цифры и никогда — ваши данные.
4. Веб-сайт/Worker coopsync.app (обмен presence-токеном)
Перед подключением к серверу сигнализации клиент отправляет ваш GitHub sync-токен по HTTPS на coopsync.app/api/presence-token. Этот Worker делает один запрос GET /user к API GitHub, чтобы подтвердить вашу личность, и возвращает краткосрочный подписанный токен (действителен 10 минут) — ваш GitHub sync-токен нигде не сохраняется и не логируется в этом процессе; он существует только на время этого единственного запроса.
Более старые версии клиента (≤0.9.40) вместо этого отправляют отдельный GitHub-токен без доступа к репозиториям напрямую на сервер сигнализации для той же однократной проверки личности; этот токен также никогда не сохраняется, а только хешируется для краткосрочного кэша (см. раздел 3).
Сайт также предоставляет /api/geo, который возвращает страну, определённую Cloudflare для вашего соединения (используется для выбора языка/региона отображения) — это нигде не сохраняется.
5. Третьи стороны / субобработчики
| Сторона | Роль | Что они видят |
| Cloudflare | Обратный прокси / edge-сеть перед coopsync.app и signal.coopsync.app; размещает Worker для обмена presence-токенами | IP-адрес соединения и метаданные, как их видит любой веб-хостинг, согласно Политике конфиденциальности Cloudflare |
| GitHub (как наш обработчик) | Однократная проверка личности (GET /user) при обмене presence-токеном | Ваш GitHub-токен только для этого единственного запроса; мы его не храним и не логируем |
| UptimeRobot | Внешний мониторинг доступности /healthz | Только агрегированные, неперсональные данные о состоянии сервиса |
Отдельно, и не в качестве нашего субобработчика: если вы используете функцию синхронизации сохранений CoopSync, ваши сохранения и история версий находятся в приватном GitHub-репозитории, которым напрямую владеете вы и ваш друг. Для этих данных GitHub является вашим собственным, независимым контролёром — а не обработчиком, действующим по нашим указаниям, — и этими данными руководствуется собственная Политика конфиденциальности GitHub, а не эта политика.
Мы не продаём и не передаём ваши данные никому другому и не используем никакие рекламные или аналитические сервисы.
6. Ваши права
В соответствии с GDPR (Общим регламентом по защите данных) вы имеете право:
- На доступ к данным, которые мы храним о вас.
- На исправление неточных данных.
- На удаление ваших данных (например, удаление вашего ID из файла-счётчика зарегистрированных пользователей, описанного в разделе 3).
- На ограничение обработки.
- На переносимость данных, где это применимо.
- На возражение против обработки на основании законного интереса, включая присутствие и сигнализацию (см. раздел 7) — функции синхронизации сохранений приложения полностью работоспособны без них; это затрагивает только индикатор «онлайн» и мгновенные уведомления.
Чтобы воспользоваться любым из этих прав, напишите на vitalii.kravchenko.work@gmail.com. Поскольку это проект одного человека, запросы обрабатываются в течение одного месяца; для сложных или многочисленных запросов этот срок может быть продлён ещё до двух месяцев, о чём мы сообщим вам в течение первого месяца. Ответ на ваш запрос бесплатен, если только запрос не является явно необоснованным или чрезмерным.
Вы также имеете право подать жалобу в надзорный орган — в Польше это Urząd Ochrony Danych Osobowych (UODO) (ul. Stawki 2, 00-193 Warszawa), либо орган по защите данных в стране вашего проживания.
7. Правовое основание обработки
- Присутствие, сигнализация, функция мгновенных уведомлений о сохранениях и однократная проверка личности (
GET /user) обрабатываются на основании законного интереса — предоставление функции статуса «онлайн»/мгновенных уведомлений вошедшим пользователям, а также подтверждение личности, чтобы присутствие и сигнализация доходили только до взаимно подтверждённых друзей. Присутствие подключается автоматически, как только вы вошли в систему (сейчас оно использует ваш вход, а не отдельный переключатель); это не основная функция приложения — синхронизация сохранений полностью работает и без неё, — поэтому вы можете в любой момент возразить против этой обработки (раздел 6), а выход из системы полностью её останавливает.
- Кратковременные меры защиты от злоупотреблений соединениями (ограничения количества соединений по IP, ограничение частоты запросов) также обрабатываются на основании законного интереса — поддержание работоспособности сервиса и его защиты от злоупотреблений для всех пользователей.
8. Дети
CoopSync не предназначен для детей. Если вам меньше 16 лет (возраст цифрового согласия по польскому/европейскому законодательству), используйте CoopSync только с участием родителя или опекуна, особенно в том, что касается аккаунта GitHub, необходимого для функций синхронизации.
9. Международная передача данных
Cloudflare и GitHub (Microsoft) могут обрабатывать данные за пределами ЕС/ЕЭЗ (например, в США). Обе компании участвуют в EU-U.S. Data Privacy Framework, который Европейская комиссия признаёт обеспечивающим надлежащий уровень защиты (статья 45 GDPR), а также предлагают Стандартные договорные условия (Standard Contractual Clauses) в качестве резервной гарантии — актуальный статус сертификации см. в их соответствующих политиках конфиденциальности по ссылкам выше.
Польские правила хранения телеком-данных (Prawo komunikacji elektronicznego) применяются к зарегистрированным операторам связи, а не к некоммерческому ретранслятору сигнализации вроде этого — и в любом случае, как описано в разделе 3, мы не ведём постоянных логов IP-адресов независимо от этого.
10. Изменения в этой политике
Если изменится то, какие данные собирает сервис, или то, как они обрабатываются, этот файл будет обновлён, а дата «Последнее обновление» вверху изменится. Поскольку этот файл находится в публичном GitHub-репозитории, полная история изменений доступна через git log PRIVACY.md.
11. Язык
Эта политика также доступна на других языках интерфейса приложения на coopsync.app/privacy.html. Эти переводы предоставлены для удобства; в случае каких-либо противоречий или неоднозначностей приоритет имеет английская версия.
隐私政策
最近更新:2026-07-29
CoopSync 是一款免费的业余开发应用,通过每对好友各自的私有 GitHub 仓库在朋友之间同步联机游戏存档。本政策说明 CoopSync 的在线服务(位于 signal.coopsync.app 的信令/在线状态服务器,以及 coopsync.app 网站/Worker)会处理哪些个人数据,以及桌面客户端在你自己的设备上会做什么。
1. 数据控制者
对以下数据负责的控制者是:
Vitalii Kravchenko
联系方式:vitalii.kravchenko.work@gmail.com
这是一个个人业余项目,并非注册公司。项目没有设立数据保护官(DPO);如有任何隐私相关请求,请使用上述联系方式。未注册为企业并不会减轻或免除这些义务:由于 CoopSync 的在线服务是公开提供给开发者本人家庭以外的用户使用的,GDPR 中"纯属个人或家庭活动"的豁免条款在此不适用。
2. CoopSync 不会做什么
- CoopSync 不运营自己的存档存储服务。你的游戏存档、版本历史记录以及(未来实现后的)聊天内容,都保存在你和好友共同拥有并控制的私有 GitHub 仓库中——对于这部分数据,GitHub 是独立的数据控制者,受 GitHub 自己的隐私声明约束。
- 信令服务器永远不会收到你的 GitHub 同步令牌(即拥有仓库访问权限的那个令牌)。它收到的只是第 4 节中描述的、用途受限的短期凭证。
- 无论是网站还是客户端,都没有数据分析、没有广告、没有追踪 Cookie,也没有会话录制。
3. 信令/在线状态服务会处理哪些数据
当桌面客户端连接到 signal.coopsync.app,以显示你的哪些好友在线、并转发 WebRTC 连接建立信息(计划中的 P2P 功能)时,服务器会处理以下数据:
| 数据 | 用途 | 存储位置 | 保留期限 |
| 你的连接 IP 地址 | 按 IP 限制连接数量(防滥用/防泛洪) | 仅存于服务器内存(RAM)中 | 连接关闭后立即删除;从不写入磁盘 |
| 你的 GitHub 数字 ID 和用户名 | 用于向已互相确认的好友标识你的身份,以支持在线状态与信令功能 | 仅存于服务器内存 | 断开连接后清除;服务器重启后不会保留任何数据 |
| 在线状态 JWT / 认证令牌(已哈希) | 避免每条消息都重新验证 | 存于内存缓存中,以令牌的 SHA-256 哈希值作为键,绝不使用原始令牌 | 认证成功后 15 分钟自动过期,认证失败后 60 秒自动过期 |
| 你声明的"好友"列表,以及 WebRTC 信令数据(offer/answer/ICE candidates) | 显示在线状态,并仅在互相确认的好友之间建立点对点直连 | 在内存中转发;服务器不读取也不存储内容,只做转发 | 不存储——仅在数据交换期间存在 |
| 随"我推送了存档"/"我正在游戏"事件发送的游戏 ID 字符串 | 触发即时新存档通知,以及好友的"正在游戏"标记 | 仅存于服务器内存 | 断开连接后清除 |
以上内容均不会写入日志文件、数据库或任何持久化存储,唯一的例外说明如下。
注册用户计数器
当你的 GitHub 数字 ID 首次连接信令服务器时,这个纯数字 ID(仅此而已——不含用户名、令牌、IP 或时间戳)会被追加到一个小型计数文件中,以便我们在网站上显示"N 位注册用户"。这是服务器唯一会持久化保存的数据。由于纯数字 ID 仍然可以反查回对应的 GitHub 账号,因此它属于个人数据——目前尚无自动删除机制,我们清楚这是一个保留期限上的缺口。我们正在评估将其改为完全不存储任何用户标识的纯数字计数器;在该方案上线之前,你可以随时申请删除自己的 ID(见第 6 节)。
/healthz 与 /stats 接口
这两个接口只返回汇总数字(运行时长、总连接数、注册用户数)——不含任何个人数据。外部在线状态监控服务(UptimeRobot)会定期轮询这些接口,但它看到的只是这些汇总数字,从不涉及你的数据。
4. coopsync.app 网站/Worker(在线状态令牌交换)
在连接信令服务器之前,客户端会通过 HTTPS 将你的 GitHub 同步令牌发送到 coopsync.app/api/presence-token。该 Worker 会向 GitHub API 发起一次 GET /user 调用以确认你的身份,并返回一个有效期 10 分钟的短期签名令牌——在此过程中,你的 GitHub 同步令牌不会被存储或记录在任何地方,它只在这一次请求期间短暂存在。
较旧版本的客户端(≤0.9.40)的做法有所不同:它们会将另一个不含仓库权限的 GitHub 令牌直接发送给信令服务器,用于同样的一次性身份确认;该令牌同样不会被存储,只会被哈希后用于短期缓存(见第 3 节)。
网站还提供 /api/geo 接口,它会返回 Cloudflare 检测到的你的连接所在国家/地区(用于选择显示语言/地区)——这项信息不会被存储在任何地方。
5. 第三方/次级处理者
| 第三方 | 角色 | 可见的数据 |
| Cloudflare | coopsync.app 与 signal.coopsync.app 前端的反向代理/边缘网络,同时托管在线状态令牌 Worker | 连接 IP 及元数据,与任何网站托管方能看到的信息相同,详见 Cloudflare 隐私政策 |
| GitHub(作为我们的处理者) | 在在线状态令牌交换过程中进行一次性身份确认(GET /user) | 仅在该次请求中看到你的 GitHub 令牌;我们不会存储或记录该令牌 |
| UptimeRobot | 对 /healthz 进行外部在线状态监控 | 仅可见汇总的、非个人的健康状态数据 |
另需说明,以下情形中 GitHub 并非我们的次级处理者:如果你使用 CoopSync 的存档同步功能,你的存档和版本历史记录保存在你和好友直接拥有的私有 GitHub 仓库中。对于这部分数据,GitHub 是你自己的、独立的数据控制者——而不是按我们指示行事的处理者——因此适用的是GitHub 自己的隐私声明,而非本政策。
我们不会向任何其他方出售或共享你的数据,也不使用任何广告或数据分析服务。
6. 你的权利
根据 GDPR(欧盟《通用数据保护条例》),你享有以下权利:
- 查阅我们持有的关于你的数据。
- 更正不准确的数据。
- 删除你的数据(例如,从第 3 节所述的注册用户计数文件中移除你的 ID)。
- 限制数据处理。
- 在适用情况下要求数据可携带。
- 对基于合法利益进行的处理提出反对,包括在线状态与信令功能(见第 7 节)——即使反对,应用的存档同步功能仍可完整使用,仅在线状态圆点和即时通知会受到影响。
如需行使上述任何权利,请发送邮件至 vitalii.kravchenko.work@gmail.com。由于这是个人独立维护的项目,请求将在一个月内处理;若请求较为复杂或数量较多,处理期限可再延长最多两个月,届时我们会在第一个月内告知你。除非请求明显无理或过度,否则回应你的请求不收取任何费用。
你也有权向监管机构投诉——在波兰,可联系个人数据保护办公室(UODO)(地址:ul. Stawki 2, 00-193 Warszawa),或联系你所居住国家的数据保护主管机关。
7. 处理的法律依据
- 在线状态、信令、即时存档通知功能,以及一次性身份确认(
GET /user),均基于合法利益进行处理——目的是为已登录用户提供在线状态/即时通知功能,并通过身份确认确保在线状态与信令信息只会传递给互相确认的好友。目前在线状态功能会在你登录后自动连接(与登录状态共用,尚无独立开关);这并非应用的核心功能——没有它,存档同步功能依然完整可用——因此你可以随时反对此项处理(见第 6 节),退出登录即可完全停止该功能。
- 短期的连接防滥用措施(IP 连接数限制、速率限制)同样基于合法利益进行处理——目的是让所有用户都能使用一个运行正常、不被滥用的服务。
8. 未成年人
CoopSync 并非面向儿童设计。如果你未满 16 周岁(波兰/欧盟法律规定的数字同意年龄),请在父母或监护人的参与下使用 CoopSync,尤其是在注册使用同步功能所需的 GitHub 账号时。
9. 国际数据传输
Cloudflare 和 GitHub(微软旗下)可能会在欧盟/欧洲经济区(EEA)以外(例如美国)处理数据。两者均加入了《欧盟-美国数据隐私框架》(EU-U.S. Data Privacy Framework),该框架已获欧盟委员会认定为提供充分保护水平(GDPR 第 45 条);此外,两者也都以标准合同条款(Standard Contractual Clauses)作为备用保障机制——具体认证状态请参见上文链接的各自隐私政策。
波兰的电信数据留存规定(Prawo komunikacji elektronicznego,《电子通信法》)适用于注册电信运营商,并不适用于本项目这类非商业性质的信令中继服务——而且正如第 3 节所述,无论如何我们都不会保留持久化的 IP 日志。
10. 本政策的变更
如果服务所收集的数据或处理方式发生变化,本文件将随之更新,页面顶部的"最近更新"日期也会相应变更。由于本文件保存在公开的 GitHub 仓库中,其完整的变更历史可通过 git log PRIVACY.md 查看。
11. 语言版本
本政策也提供应用其他界面语言的版本,详见 coopsync.app/privacy.html。这些译文仅为方便用户查阅而提供;如与英文版存在冲突或歧义之处,以英文版本为准。
Política de privacidad
Última actualización: 2026-07-29
CoopSync es una aplicación gratuita, desarrollada como afición, que sincroniza las partidas guardadas de juegos cooperativos entre amigos a través del propio repositorio privado de GitHub de cada pareja. Esta política explica qué datos personales procesan los servicios en línea de CoopSync (el servidor de señalización/presencia en signal.coopsync.app y el sitio web/Worker de coopsync.app), y qué hace el cliente de escritorio en vuestro propio equipo.
1. Responsable del tratamiento
El responsable del tratamiento de los datos descritos a continuación es:
Vitalii Kravchenko
Contacto: vitalii.kravchenko.work@gmail.com
Se trata de un proyecto personal desarrollado en solitario como afición, no de una empresa registrada. No existe un Delegado de Protección de Datos; utilizad el contacto anterior para cualquier solicitud relacionada con la privacidad. Operar sin una empresa registrada no reduce ni exime de estas obligaciones: dado que los servicios en línea de CoopSync se ofrecen públicamente a personas ajenas al propio hogar del desarrollador, la excepción del GDPR (RGPD) para «actividad puramente personal o doméstica» no es aplicable aquí.
2. Lo que CoopSync NO hace
- CoopSync no gestiona su propio almacenamiento de archivos de guardado. Vuestras partidas guardadas, el historial de versiones y el chat (una vez implementado) residen en un repositorio privado de GitHub que vosotros y vuestro amigo o amiga poseéis y controláis; GitHub es un responsable del tratamiento independiente para esos datos, regido por la propia Declaración de privacidad de GitHub.
- El servidor de señalización nunca recibe vuestro token de sincronización de GitHub (el que tiene acceso al repositorio). Solo recibe una credencial de corta duración y de uso limitado, descrita en la sección 4.
- Sin analítica, sin publicidad, sin cookies de seguimiento, sin grabación de sesiones, ni en el sitio web ni en el cliente.
3. Qué procesa el servicio de señalización/presencia
Cuando el cliente de escritorio se conecta a signal.coopsync.app para mostrar cuáles de vuestros amigos están conectados y para retransmitir la configuración de la conexión WebRTC (funciones P2P previstas), el servidor procesa:
| Datos | Finalidad | Dónde se almacenan | Conservación |
| Dirección IP de vuestra conexión | Límite de conexiones por IP (protección contra abusos/inundación de solicitudes) | Únicamente en la memoria del servidor (RAM) | Se elimina inmediatamente al cerrarse la conexión; nunca se escribe en disco |
| Vuestro ID numérico y nombre de usuario de GitHub | Identificaros ante vuestros amigos confirmados mutuamente para la presencia/señalización | Solo en la memoria del servidor | Se borra al desconectaros; nada persiste tras un reinicio del servidor |
| JWT de presencia / token de autenticación (con hash) | Evitar volver a validar en cada mensaje | Caché en memoria, indexada por un hash SHA-256 del token, nunca el token en bruto | Caduca automáticamente a los 15 minutos (autenticación correcta) o a los 60 segundos (autenticación fallida) |
| Lista de «amigos» que declaráis, y las cargas útiles de señalización WebRTC (oferta/respuesta/candidatos ICE) | Mostrar el estado de conexión y establecer una conexión directa de igual a igual (peer-to-peer) solo entre amigos mutuos | Retransmitidas en memoria; el servidor no lee ni almacena el contenido, solo lo reenvía | No se almacenan: solo existen durante el intercambio |
| Cadenas de ID de juego enviadas con eventos «he subido una partida guardada» / «estoy jugando» | Activar la notificación instantánea de nueva partida guardada y la insignia de «amigo jugando» para vuestros amigos | Solo en la memoria del servidor | Se borra al desconectar |
Nada de lo anterior se escribe jamás en un archivo de registro, base de datos ni ningún otro almacenamiento persistente, con una excepción que se describe a continuación.
Contador de usuarios registrados
La primera vez que vuestro ID numérico de GitHub se conecta al servidor de señalización, ese ID numérico puro (nada más: ni nombre de usuario, ni token, ni IP, ni marca de tiempo) se añade a un pequeño archivo contador para poder mostrar «N usuarios registrados» en el sitio web. Es lo único que el servidor conserva de forma persistente. Un ID numérico puro se puede seguir vinculando a una cuenta de GitHub, por lo que se considera un dato personal; actualmente no existe una eliminación automática, algo que sabemos que es una carencia en cuanto a conservación de datos. Estamos evaluando pasar a un contador puramente numérico que no almacene ningún identificador por usuario; hasta que eso se implemente, podéis solicitar en cualquier momento que se elimine vuestro ID (véase la sección 6).
Los endpoints /healthz y /stats
Estos solo devuelven cifras agregadas (tiempo de actividad, número total de conexiones, número de usuarios registrados), sin ningún dato personal. Son consultados periódicamente por un monitor externo de disponibilidad (UptimeRobot), que solo ve estas cifras agregadas y nunca vuestros datos.
4. El sitio web/Worker coopsync.app (intercambio del token de presencia)
Antes de conectarse al servidor de señalización, el cliente envía vuestro token de sincronización de GitHub, mediante HTTPS, a coopsync.app/api/presence-token. Este Worker realiza una única llamada GET /user a la API de GitHub para confirmar vuestra identidad, y devuelve un token firmado de corta duración (válido durante 10 minutos): vuestro token de sincronización de GitHub no se almacena ni se registra en ningún momento de este proceso; solo existe durante la duración de esa única solicitud.
Las versiones anteriores del cliente (≤0.9.40) enviaban en su lugar un token de GitHub independiente, sin acceso a repositorios, directamente al servidor de señalización para la misma comprobación puntual de identidad; ese token tampoco se almacena nunca, solo se aplica un hash para una caché de corta duración (véase la sección 3).
El sitio web también expone /api/geo, que devuelve el país que Cloudflare detecta para vuestra conexión (usado para elegir un idioma/región de visualización); esto no se almacena en ningún sitio.
5. Terceros / subencargados del tratamiento
| Parte | Función | Qué ven |
| Cloudflare | Proxy inverso / red perimetral (edge) delante de coopsync.app y signal.coopsync.app; aloja el Worker del token de presencia | IP de conexión y metadatos, como los vería cualquier proveedor de alojamiento web, según la Política de privacidad de Cloudflare |
| GitHub (como encargado del tratamiento nuestro) | Comprobación puntual de identidad (GET /user) durante el intercambio del token de presencia | Vuestro token de GitHub para esa única solicitud; no lo almacenamos ni registramos |
| UptimeRobot | Monitorización externa de disponibilidad de /healthz | Solo datos agregados y no personales sobre el estado del servicio |
Por separado, y no como subencargado nuestro: si utilizáis la función de sincronización de partidas guardadas de CoopSync, vuestras partidas y su historial de versiones residen en un repositorio privado de GitHub que vosotros y vuestro amigo o amiga poseéis directamente. Para esos datos, GitHub es vuestro propio responsable del tratamiento independiente —no un encargado que actúa siguiendo nuestras instrucciones— y se rige por la propia Declaración de privacidad de GitHub, no por esta política.
No vendemos ni compartimos vuestros datos con nadie más, y no utilizamos ningún servicio de publicidad ni de analítica.
6. Vuestros derechos
Conforme al GDPR (RGPD) tenéis derecho a:
- Acceder a los datos que tenemos sobre vosotros.
- Rectificar datos inexactos.
- Suprimir vuestros datos (por ejemplo, eliminar vuestro ID del archivo contador de usuarios registrados descrito en la sección 3).
- Limitar el tratamiento.
- Portabilidad de los datos, cuando proceda.
- Oponeros al tratamiento basado en interés legítimo, incluidas la presencia y la señalización (véase la sección 7): las funciones de sincronización de partidas de la app siguen siendo totalmente utilizables sin ellas; solo se ven afectados el indicador de conexión y las notificaciones instantáneas.
Para ejercer cualquiera de estos derechos, escribid a vitalii.kravchenko.work@gmail.com. Al tratarse de un proyecto de una sola persona, las solicitudes se atienden en el plazo de un mes; para solicitudes complejas o numerosas, ese plazo puede ampliarse hasta dos meses adicionales, en cuyo caso os lo comunicaremos dentro del primer mes. Responder a vuestra solicitud es gratuito, salvo que la solicitud sea manifiestamente infundada o excesiva.
También tenéis derecho a presentar una reclamación ante una autoridad de control: en Polonia, la Urząd Ochrony Danych Osobowych (UODO) (ul. Stawki 2, 00-193 Varsovia), o la autoridad de protección de datos de vuestro propio país de residencia.
7. Base jurídica del tratamiento
- La presencia, la señalización, la función de notificación instantánea de partidas guardadas y la comprobación puntual de identidad (
GET /user) se procesan todas sobre la base del interés legítimo: ofrecer la función de estado en línea/notificación instantánea a los usuarios que han iniciado sesión, y confirmar la identidad para que la presencia y la señalización solo lleguen a amigos confirmados mutuamente. La presencia se conecta automáticamente en cuanto iniciáis sesión (comparte vuestro inicio de sesión en lugar de tener hoy un interruptor independiente); no es la función principal de la app —la sincronización de partidas funciona plenamente sin ella—, así que podéis oponeros a este tratamiento en cualquier momento (sección 6), y cerrar sesión lo detiene por completo.
- Las protecciones de corta duración contra el abuso de conexiones (límites de conexión por IP, limitación de frecuencia) se procesan igualmente sobre la base del interés legítimo: mantener el servicio funcionando y libre de abusos para todos los que lo utilizan.
8. Menores
CoopSync no está dirigido a menores. Si tenéis menos de 16 años (la edad de consentimiento digital según la normativa polaca/de la UE), utilizad CoopSync solo con la participación de un padre, madre o tutor, especialmente en lo relativo a la cuenta de GitHub necesaria para usar las funciones de sincronización.
9. Transferencias internacionales de datos
Cloudflare y GitHub (Microsoft) pueden procesar datos fuera del EEE/UE (por ejemplo, en Estados Unidos). Ambos participan en el Marco de Privacidad de Datos UE-EE. UU. (EU-U.S. Data Privacy Framework), que la Comisión Europea reconoce como garante de un nivel de protección adecuado (artículo 45 del GDPR/RGPD), y ambos ofrecen también Cláusulas Contractuales Tipo como salvaguarda adicional; consultad sus respectivas políticas de privacidad enlazadas más arriba para conocer su estado de certificación actual.
Las normas polacas de conservación de datos de telecomunicaciones (Prawo komunikacji elektronicznego) se aplican a los operadores de telecomunicaciones registrados, no a un servicio de señalización no comercial como este; y en cualquier caso, como se describe en la sección 3, no conservamos registros persistentes de IP en ningún caso.
10. Cambios en esta política
Si cambia lo que el servicio recopila o cómo se procesa, este documento se actualizará y cambiará la fecha de «Última actualización» que aparece al principio. Dado que este documento reside en el repositorio público de GitHub, todo su historial de cambios es visible mediante git log PRIVACY.md.
11. Idioma
Esta política también está disponible en los demás idiomas de la interfaz de la app en coopsync.app/privacy.html. Esas traducciones se ofrecen por comodidad; en caso de conflicto o ambigüedad, prevalece esta versión en inglés.
Gizlilik Politikası
Son güncelleme: 2026-07-29
CoopSync, arkadaşlar arasında co-op oyun kayıtlarını her ikilinin kendi özel GitHub deposu üzerinden senkronize eden, hobi amaçlı geliştirilmiş ücretsiz bir uygulamadır. Bu politika, CoopSync'in çevrimiçi hizmetlerinin (signal.coopsync.app adresindeki sinyalleşme/çevrimiçi durum sunucusu ve coopsync.app web sitesi/Worker'ı) hangi kişisel verileri işlediğini ve masaüstü istemcinin kendi bilgisayarınızda ne yaptığını açıklar.
1. Veri Sorumlusu
Aşağıda açıklanan verilerden sorumlu veri sorumlusu:
Vitalii Kravchenko
İletişim: vitalii.kravchenko.work@gmail.com
Bu, kayıtlı bir şirket değil, tek kişilik bir hobi projesidir. Bir Veri Koruma Görevlisi bulunmamaktadır; her türlü gizlilik talebi için yukarıdaki iletişim adresini kullanın. Kayıtlı bir işletme olmadan faaliyet göstermek bu yükümlülükleri azaltmaz veya ortadan kaldırmaz: CoopSync'in çevrimiçi hizmetleri, geliştiricinin kendi hane halkı dışındaki kişilere açık olarak sunulduğundan, GDPR'nin (AB Genel Veri Koruma Tüzüğü) "tamamen kişisel veya ev içi faaliyet" istisnası burada geçerli değildir.
2. CoopSync'in YAPMADIĞI şeyler
- CoopSync kendi kayıt dosyası depolamasını çalıştırmaz. Oyun kayıtlarınız, sürüm geçmişiniz ve (uygulanmaya başladığında) sohbetiniz, siz ve arkadaşınızın sahip olduğu ve kontrol ettiği özel bir GitHub deposunda tutulur — GitHub bu veriler için ayrı bir veri sorumlusudur ve GitHub'ın kendi Gizlilik Bildirimi tarafından yönetilir.
- Sinyalleşme sunucusu, GitHub senkronizasyon token'ınızı (depo erişimi olan token) hiçbir zaman almaz. Yalnızca 4. bölümde açıklanan, kısa ömürlü ve amacı sınırlı bir kimlik bilgisi alır.
- Ne web sitesinde ne de istemcide analiz, reklam, takip çerezi veya oturum kaydı yoktur.
3. Sinyalleşme/çevrimiçi durum hizmetinin işlediği veriler
Masaüstü istemcisi, arkadaşlarınızdan hangilerinin çevrimiçi olduğunu göstermek ve WebRTC bağlantı kurulumunu aktarmak (planlanan P2P özellikleri) için signal.coopsync.app adresine bağlandığında, sunucu şunları işler:
| Veri | Amaç | Nerede tutulur | Saklama süresi |
| Bağlantınızın IP adresi | IP başına bağlantı sayısı sınırı (kötüye kullanım/flood koruması) | Yalnızca sunucu belleğinde (RAM) | Bağlantınız kapandığında hemen silinir; hiçbir zaman diske yazılmaz |
| GitHub sayısal ID'niz ve kullanıcı adınız | Çevrimiçi durum/sinyalleşme için karşılıklı onaylanmış arkadaşlarınıza kimliğinizi bildirmek | Yalnızca sunucu belleğinde | Bağlantı kesildiğinde temizlenir; sunucu yeniden başlatıldığında hiçbir şey kalmaz |
| Çevrimiçi durum JWT'si / kimlik doğrulama token'ı (hash'lenmiş) | Her mesajda yeniden doğrulama yapmaktan kaçınmak | Bellek içi önbellek; token'ın ham hali değil SHA-256 hash'i anahtar olarak kullanılır | 15 dakika sonra (başarılı doğrulama) veya 60 saniye sonra (başarısız doğrulama) otomatik olarak sona erer |
| Belirttiğiniz "arkadaş" listesi ve WebRTC sinyalleşme verileri (offer/answer/ICE adayları) | Çevrimiçi durumu göstermek ve yalnızca karşılıklı arkadaşlar arasında doğrudan eşler arası (peer-to-peer) bağlantı kurmak | Bellek içinde aktarılır; sunucu içeriği okumaz veya saklamaz, yalnızca iletir | Saklanmaz — yalnızca alışveriş süresince var olur |
| "Kayıt gönderdim" / "Şu anda oynuyorum" olaylarıyla gönderilen Oyun-ID dizeleri | Arkadaşlarınız için anlık yeni kayıt bildirimini ve "arkadaşın oynuyor" rozetini tetiklemek | Yalnızca sunucu belleğinde | Bağlantı kesildiğinde temizlenir |
Yukarıdakilerin hiçbiri hiçbir zaman bir günlük dosyasına, veritabanına veya herhangi bir kalıcı depolamaya yazılmaz — bir istisna dışında, bu istisna aşağıda açıklanmıştır.
Kayıtlı kullanıcı sayacı
GitHub sayısal ID'niz sinyalleşme sunucusuna ilk kez bağlandığında, bu sade sayısal ID (başka hiçbir şey — kullanıcı adı, token, IP veya zaman damgası yok) web sitesinde "N kayıtlı kullanıcı" gösterebilmemiz için küçük bir sayaç dosyasına eklenir. Sunucu tarafından kalıcı olarak saklanan tek şey budur. Sade bir sayısal ID yine de bir GitHub hesabına geri çözülebildiğinden, kişisel veri sayılır — şu anda otomatik bir silme mekanizması yoktur ve bunun bir saklama süresi eksikliği olduğunun farkındayız. Bunu, kullanıcı başına hiçbir tanımlayıcı saklamayan tamamen sayısal bir sayaca geçirmeyi değerlendiriyoruz; bu değişiklik yayınlanana kadar, ID'nizin kaldırılmasını istediğiniz zaman talep edebilirsiniz (bkz. bölüm 6).
/healthz ve /stats uç noktaları
Bunlar yalnızca toplu sayılar döndürür (çalışma süresi, toplam bağlantı sayısı, kayıtlı kullanıcı sayısı) — kişisel veri içermez. Bu uç noktalar, yalnızca bu toplu sayıları gören ve asla verilerinizi görmeyen harici bir çalışma süresi izleme aracı (UptimeRobot) tarafından düzenli olarak sorgulanır.
4. coopsync.app web sitesi/Worker'ı (çevrimiçi durum token'ı alışverişi)
İstemci, sinyalleşme sunucusuna bağlanmadan önce GitHub senkronizasyon token'ınızı HTTPS üzerinden coopsync.app/api/presence-token adresine gönderir. Bu Worker, kimliğinizi doğrulamak için GitHub API'sine tek bir GET /user çağrısı yapar ve kısa ömürlü, imzalı bir token döndürür (10 dakika geçerli) — GitHub senkronizasyon token'ınız bu süreçte hiçbir yerde saklanmaz veya günlüğe kaydedilmez; yalnızca o tek isteğin süresince var olur.
Daha eski istemci sürümleri (≤0.9.40), aynı tek seferlik kimlik kontrolü için bunun yerine ayrı, depo erişimi olmayan bir GitHub token'ını doğrudan sinyalleşme sunucusuna gönderir; bu token da hiçbir zaman saklanmaz, yalnızca kısa ömürlü bir önbellek için hash'lenir (bkz. bölüm 3).
Web sitesi ayrıca, Cloudflare'in bağlantınız için tespit ettiği ülkeyi geri döndüren /api/geo uç noktasını sunar (görüntüleme dili/bölgesi seçmek için kullanılır) — bu hiçbir yerde saklanmaz.
5. Üçüncü taraflar / alt işleyiciler
| Taraf | Rol | Ne görüyorlar |
| Cloudflare | coopsync.app ve signal.coopsync.app önünde ters proxy / uç ağ; çevrimiçi durum token'ı Worker'ını barındırır | Cloudflare'in Gizlilik Politikası uyarınca, herhangi bir web barındırıcısının göreceği bağlantı IP'si ve meta verileri |
| GitHub (veri işleyicimiz olarak) | Çevrimiçi durum token'ı alışverişi sırasında tek seferlik kimlik kontrolü (GET /user) | Yalnızca o tek istek için GitHub token'ınız; bizim tarafımızdan saklanmaz veya günlüğe kaydedilmez |
| UptimeRobot | /healthz için harici çalışma süresi izleme | Yalnızca toplu, kişisel olmayan durum verileri |
Bunun dışında ve alt işleyicimiz olmadan: CoopSync'in kayıt senkronizasyon özelliğini kullanıyorsanız, kayıtlarınız ve sürüm geçmişiniz siz ve arkadaşınızın doğrudan sahip olduğu özel bir GitHub deposunda tutulur. Bu veriler için GitHub, bizim talimatlarımızla hareket eden bir veri işleyici değil, kendi bağımsız veri sorumlunuzdur ve bu politika değil, GitHub'ın kendi Gizlilik Bildirimi bu veriyi yönetir.
Verilerinizi başka hiç kimseye satmıyor veya paylaşmıyoruz ve herhangi bir reklam veya analiz hizmeti kullanmıyoruz.
6. Haklarınız
GDPR kapsamında aşağıdaki haklara sahipsiniz:
- Erişim: Hakkınızda sahip olduğumuz verilere erişim.
- Düzeltme: Yanlış verilerin düzeltilmesi.
- Silme: Verilerinizin silinmesi (örneğin, bölüm 3'te açıklanan kayıtlı kullanıcı sayaç dosyasından ID'nizin kaldırılması).
- Kısıtlama: İşlemenin kısıtlanması.
- Veri taşınabilirliği, uygulanabilir olduğu durumlarda.
- İtiraz: Meşru menfaate dayalı işlemeye, çevrimiçi durum ve sinyalleşme dahil (bkz. bölüm 7), itiraz etme — uygulamanın kayıt senkronizasyon özellikleri bunlar olmadan da tamamen kullanılabilir durumda kalır; yalnızca çevrimiçi nokta ve anlık bildirimler etkilenir.
Bunlardan herhangi birini kullanmak için vitalii.kravchenko.work@gmail.com adresine e-posta gönderin. Bu tek kişilik bir proje olduğundan, talepler bir ay içinde işleme alınır; karmaşık veya çok sayıda talep için bu süre en fazla iki ay daha uzatılabilir, bu durumda size ilk ay içinde bilgi veririz. Talebiniz açıkça temelsiz veya aşırı olmadığı sürece, talebinize yanıt vermek ücretsizdir.
Ayrıca bir denetim makamına şikayette bulunma hakkınız da vardır — Polonya'da Urząd Ochrony Danych Osobowych (UODO) (ul. Stawki 2, 00-193 Warszawa) veya kendi ikamet ülkenizdeki veri koruma otoritesi.
7. İşlemenin hukuki dayanağı
- Çevrimiçi durum, sinyalleşme, anlık kayıt bildirimi özelliği ve tek seferlik kimlik kontrolü (
GET /user), hepsi meşru menfaat temelinde işlenir — giriş yapmış kullanıcılara çevrimiçi durum/anlık bildirim özelliğini sunmak ve çevrimiçi durum ile sinyalleşmenin yalnızca karşılıklı onaylanmış arkadaşlara ulaşmasını sağlamak için kimliği doğrulamak. Çevrimiçi durum, giriş yaptığınız anda otomatik olarak bağlanır (bugün ayrı bir anahtarı yoktur, girişinizi paylaşır); bu, uygulamanın temel işlevi değildir — kayıt senkronizasyonu bu olmadan da tam olarak çalışır — bu nedenle bu işlemeye istediğiniz zaman itiraz edebilirsiniz (bölüm 6) ve çıkış yapmak bunu tamamen durdurur.
- Kısa ömürlü bağlantı kötüye kullanımı korumaları (IP bağlantı sınırları, hız sınırlama) da benzer şekilde meşru menfaat temelinde işlenir — hizmeti kullanan herkes için işlevsel ve kötüye kullanımdan arındırılmış tutmak amacıyla.
8. Çocuklar
CoopSync çocuklara yönelik değildir. 16 yaşın altındaysanız (Polonya/AB hukukuna göre dijital rıza yaşı), lütfen CoopSync'i yalnızca bir ebeveyn veya vasinin dahliyle, özellikle senkronizasyon özelliklerini kullanmak için gereken GitHub hesabı konusunda kullanın.
9. Uluslararası veri aktarımları
Cloudflare ve GitHub (Microsoft), verileri AB/AEA dışında (örneğin Amerika Birleşik Devletleri'nde) işleyebilir. Her ikisi de, Avrupa Komisyonu'nun yeterli düzeyde koruma sağladığını kabul ettiği (GDPR Madde 45) AB-ABD Veri Gizliliği Çerçevesi'ne katılmaktadır ve her ikisi de yedek bir güvence olarak Standart Sözleşme Hükümleri sunmaktadır — güncel sertifikasyon durumları için yukarıda bağlantısı verilen kendi gizlilik politikalarına bakın.
Polonya'nın telekomünikasyon veri saklama kuralları (Prawo komunikacji elektronicznego), bunun gibi ticari olmayan bir sinyalleşme aktarıcısına değil, kayıtlı telekomünikasyon operatörlerine uygulanır — ve her halükarda, bölüm 3'te açıklandığı gibi, kalıcı IP günlükleri tutmuyoruz.
10. Bu politikadaki değişiklikler
Hizmetin topladığı veriler veya bunların işlenme şekli değişirse, bu dosya güncellenecek ve üstteki "Son güncelleme" tarihi değişecektir. Bu dosya herkese açık GitHub deposunda tutulduğundan, tüm değişiklik geçmişi git log PRIVACY.md komutuyla görülebilir.
11. Dil
Bu politika, uygulamanın diğer arayüz dillerinde de coopsync.app/privacy.html adresinde mevcuttur. Bu çeviriler kolaylık amacıyla sunulmaktadır; herhangi bir çelişki veya belirsizlik durumunda, bu İngilizce sürüm esas alınır.
Політика конфіденційності
Востаннє оновлено: 2026-07-29
CoopSync — це безкоштовний хобі-проєкт, який синхронізує збереження кооперативних ігор між друзями через приватний GitHub-репозиторій кожної пари. Ця політика пояснює, які персональні дані обробляють онлайн-сервіси CoopSync (сервер сигналізації/присутності на signal.coopsync.app та сайт/Worker coopsync.app), і що робить десктопний клієнт на вашому власному комп'ютері.
1. Контролер даних
Контролером, відповідальним за дані, описані нижче, є:
Віталій Кравченко
Контакт: vitalii.kravchenko.work@gmail.com
Це персональний хобі-проєкт однієї людини, а не зареєстрована компанія. Уповноваженого із захисту даних (DPO) немає — з будь-яким запитом щодо приватності звертайтеся за контактом вище. Відсутність зареєстрованого бізнесу не зменшує і не скасовує ці зобов'язання: оскільки онлайн-сервіси CoopSync публічно доступні людям поза межами домогосподарства розробника, виняток GDPR для "суто особистої або побутової діяльності" тут не застосовується.
2. Що CoopSync НЕ робить
- CoopSync не має власного сховища файлів збережень. Ваші ігрові збереження, історія версій і чат (коли буде реалізовано) зберігаються у приватному GitHub-репозиторії, яким володієте і керуєте ви з другом — для цих даних GitHub є окремим контролером, і на них поширюється власна Політика конфіденційності GitHub.
- Сервер сигналізації ніколи не отримує ваш GitHub sync-токен (той, що має доступ до репозиторію). Він отримує лише короткострокові облікові дані обмеженого призначення, описані в розділі 4.
- Жодної аналітики, жодної реклами, жодних трекінгових cookie, жодного запису сесій — ні на сайті, ні в клієнті.
3. Які дані обробляє сервіс сигналізації/присутності
Коли десктопний клієнт підключається до signal.coopsync.app, щоб показати, хто з ваших друзів онлайн, і передати налаштування WebRTC-з'єднання (заплановані P2P-функції), сервер обробляє:
| Дані | Призначення | Де зберігається | Термін зберігання |
| IP-адреса вашого з'єднання | Обмеження кількості з'єднань на IP (захист від зловживань/флуду) | Лише в оперативній пам'яті (RAM) сервера | Видаляється одразу після закриття з'єднання; ніколи не записується на диск |
| Ваш числовий ID та логін GitHub | Ідентифікація вас для взаємно підтверджених друзів заради присутності/сигналізації | Лише в пам'яті сервера | Очищається після відключення; нічого не зберігається після перезапуску сервера |
| Presence-JWT / токен автентифікації (у хешованому вигляді) | Щоб не перевіряти повторно при кожному повідомленні | Кеш у пам'яті, ключем якого є SHA-256-хеш токена, ніколи не сам токен | Автоматично спливає через 15 хвилин (успішна автентифікація) або 60 секунд (невдала автентифікація) |
| Заявлений вами список "друзів" і корисне навантаження WebRTC-сигналізації (offer/answer/ICE-кандидати) | Показати статус онлайн і налаштувати пряме P2P-з'єднання лише між взаємними друзями | Передається через пам'ять; сервер не читає і не зберігає вміст, лише пересилає його | Не зберігається — існує лише на час обміну |
| Рядки Game-ID, що надсилаються з подіями "я запушив збереження" / "я граю" | Запустити миттєве сповіщення про нове збереження та значок "друг грає" для ваших друзів | Лише в пам'яті сервера | Очищається після відключення |
Ніщо з переліченого вище ніколи не записується у файл журналу, базу даних чи будь-яке постійне сховище, за одним винятком, описаним нижче.
Лічильник зареєстрованих користувачів
Коли ваш числовий ID GitHub вперше підключається до сервера сигналізації, цей голий числовий ID (нічого більше — ні логін, ні токен, ні IP, ні часова мітка) додається до невеликого файлу-лічильника, щоб ми могли показувати на сайті "N зареєстрованих користувачів". Це єдине, що сервер зберігає постійно. Голий числовий ID усе ще можна зіставити з конкретним GitHub-акаунтом, тож він вважається персональними даними — наразі автоматичного видалення немає, і ми усвідомлюємо, що це прогалина у термінах зберігання. Ми розглядаємо перехід на суто числовий лічильник, який взагалі не зберігає ідентифікатор конкретного користувача; доки це не реалізовано, ви можете в будь-який момент запросити видалення свого ID (див. розділ 6).
Ендпоінти /healthz і /stats
Вони повертають лише агреговані числа (аптайм, загальна кількість з'єднань, кількість зареєстрованих користувачів) — жодних персональних даних. Їх опитує зовнішній сервіс моніторингу доступності (UptimeRobot), який бачить тільки ці агреговані числа й ніколи — ваші дані.
4. Сайт/Worker coopsync.app (обмін presence-токеном)
Перед підключенням до сервера сигналізації клієнт надсилає ваш GitHub sync-токен через HTTPS на coopsync.app/api/presence-token. Цей Worker робить один виклик GET /user до API GitHub, щоб підтвердити вашу особу, і повертає короткостроковий підписаний токен (дійсний 10 хвилин) — ваш GitHub sync-токен ніде в цьому процесі не зберігається і не логується; він існує лише на час цього одного запиту.
Старіші версії клієнта (≤0.9.40) натомість надсилають окремий GitHub-токен без доступу до репозиторіїв напряму на сервер сигналізації для тієї ж одноразової перевірки особи; цей токен так само ніколи не зберігається, а лише хешується для короткострокового кешу (див. розділ 3).
Сайт також надає ендпоінт /api/geo, який повертає країну, яку Cloudflare визначає для вашого з'єднання (використовується для вибору мови/регіону відображення) — це ніде не зберігається.
5. Треті сторони / субобробники
| Сторона | Роль | Що вони бачать |
| Cloudflare | Зворотний проксі / edge-мережа перед coopsync.app і signal.coopsync.app; хостить Worker для presence-токена | IP-адресу з'єднання та метадані, які бачив би будь-який веб-хостинг, згідно з Політикою конфіденційності Cloudflare |
| GitHub (як наш обробник) | Одноразова перевірка особи (GET /user) під час обміну presence-токеном | Ваш GitHub-токен для цього одного запиту; ми його не зберігаємо і не логуємо |
| UptimeRobot | Зовнішній моніторинг доступності /healthz | Лише агреговані, неперсональні дані про стан сервісу |
Окремо, і не як наш субобробник: якщо ви користуєтеся функцією синхронізації збережень CoopSync, ваші збереження та історія версій зберігаються у приватному GitHub-репозиторії, яким безпосередньо володієте ви з другом. Для цих даних GitHub є вашим власним, незалежним контролером — а не обробником, що діє за нашими інструкціями — і на них поширюється власна Політика конфіденційності GitHub, а не ця політика.
Ми не продаємо і не передаємо ваші дані нікому іншому, і не використовуємо жодних рекламних чи аналітичних сервісів.
6. Ваші права
Згідно з GDPR (Загальним регламентом про захист даних) ви маєте право на:
- Доступ до даних, які ми про вас зберігаємо.
- Виправлення неточних даних.
- Видалення ваших даних (наприклад, видалення вашого ID з файлу-лічильника зареєстрованих користувачів, описаного в розділі 3).
- Обмеження обробки.
- Перенесення даних (право на портативність), якщо застосовно.
- Заперечення проти обробки на підставі законного інтересу, зокрема присутності та сигналізації (див. розділ 7) — функції синхронізації збережень залишаються повністю доступними без них; це вплине лише на індикатор "онлайн" і миттєві сповіщення.
Щоб скористатися будь-яким із цих прав, напишіть на vitalii.kravchenko.work@gmail.com. Оскільки це проєкт однієї людини, запити опрацьовуються протягом одного місяця; для складних або численних запитів цей термін може бути продовжено ще до двох місяців, про що ми повідомимо вас протягом першого місяця. Відповідь на ваш запит безкоштовна, якщо запит не є явно необґрунтованим або надмірним.
Ви також маєте право подати скаргу до наглядового органу — у Польщі це Urząd Ochrony Danych Osobowych (UODO) — Управління захисту персональних даних (вул. Stawki 2, 00-193 Варшава), або орган захисту даних у вашій країні проживання.
7. Правова підстава обробки
- Присутність, сигналізація, функція миттєвих сповіщень про збереження та одноразова перевірка особи (
GET /user) обробляються на підставі законного інтересу — надання функції онлайн-статусу/миттєвих сповіщень для авторизованих користувачів, а також підтвердження особи, щоб присутність і сигналізація доходили лише до взаємно підтверджених друзів. Присутність підключається автоматично одразу після входу в акаунт (наразі вона прив'язана до входу, а не має окремого перемикача); це не основна функція застосунку — синхронізація збережень повністю працює без неї — тож ви можете в будь-який момент заперечити проти цієї обробки (розділ 6), а вихід з акаунту повністю її зупиняє.
- Короткострокові механізми захисту від зловживань з'єднаннями (ліміти з'єднань за IP, обмеження частоти запитів) також обробляються на підставі законного інтересу — підтримання роботи сервісу без зловживань для всіх, хто ним користується.
8. Діти
CoopSync не орієнтований на дітей. Якщо вам менше 16 років (вік цифрової згоди за польським/європейським законодавством), будь ласка, користуйтеся CoopSync лише за участі батьків або опікуна — зокрема щодо GitHub-акаунту, необхідного для функцій синхронізації.
9. Міжнародна передача даних
Cloudflare і GitHub (Microsoft) можуть обробляти дані за межами ЄС/ЄЕЗ (наприклад, у США). Обидві компанії беруть участь у Рамковій угоді про захист даних ЄС-США (EU-U.S. Data Privacy Framework), яку Європейська комісія визнає такою, що забезпечує належний рівень захисту (стаття 45 GDPR), а також пропонують Стандартні договірні положення (SCC) як запасний механізм захисту — актуальний статус їхньої сертифікації дивіться в політиках конфіденційності, на які є посилання вище.
Польські правила зберігання телекомунікаційних даних (Prawo komunikacji elektronicznego) стосуються зареєстрованих телекомоператорів, а не некомерційного ретранслятора сигналізації на кшталт цього — і в будь-якому разі, як описано в розділі 3, ми не ведемо постійних журналів IP-адрес незалежно від цього.
10. Зміни до цієї політики
Якщо зміниться те, що збирає сервіс, або як це обробляється, цей файл буде оновлено, а дата "Востаннє оновлено" вгорі зміниться. Оскільки цей файл знаходиться в публічному GitHub-репозиторії, повну історію змін можна переглянути через git log PRIVACY.md.
11. Мова
Ця політика також доступна іншими мовами інтерфейсу застосунку на coopsync.app/privacy.html. Ці переклади надаються для зручності; у разі будь-яких суперечностей чи неоднозначностей визначальною є англійська версія.