← Legal

Kainyne Privacy Policy (DRAFT)

Last updated: [DECIDE: publish date — e.g. "April 21, 2026"]

⚠ DRAFT — NOT LEGAL ADVICE. This document is a working draft prepared from the RFE-134 scope and an audit of data-collection surfaces in the repository. It has not been reviewed by legal counsel. Before this banner lifts, every [DECIDE: …] placeholder must be resolved and the document circulated for qualified-counsel review. Contact [email protected] with questions.

1. Who we are

Kainyne is an independent project that makes browser-native card games. This Privacy Policy describes what personal data kainyne.com (the "Service") collects when you visit the site or play one of the games, how we use it, how long we keep it, and the rights you have over it.

Data controller: [DECIDE: legal entity — e.g. "Kainyne LLC, a [state] limited liability company" OR "[Your Name], doing business as Kainyne" OR "Kainyne, a sole proprietorship operated by [Your Name]"].

Contact for privacy matters: [email protected].

If you are an EU/EEA resident and want to contact our EU representative, [DECIDE: appoint an EU representative via Article 27 of the GDPR if you have a substantive EU user base — otherwise note "We do not currently have an appointed EU representative because the Service does not process personal data of EU residents on a scale requiring one under Article 27(2) of the GDPR"].

2. What we collect, and why

We collect only the minimum data required to run the games and communicate with you if you ask us to. The table below enumerates every data point currently touched, the purpose for each, and the legal basis we rely on (GDPR Article 6).

WhatWhereWhyLegal basis
Per-tab game state (war_<tabId>_*, president_<tabId>_*) Your browser's sessionStorage So reloading the page during a match doesn't lose your seat and hand Legitimate interest (service functionality)
Your chosen display name (war.screenName, president.screenName) Your browser's localStorage So your name persists between games and across tabs on the same device Consent (you typed it in)
WebRTC signaling state The war-signaling Cloudflare Worker To connect you to another player's browser for peer-to-peer gameplay Legitimate interest
TURN credentials Fetched from the worker, transiently NAT traversal fallback when direct peer-to-peer fails Legitimate interest
Runtime error details (war_<tabId>_errlog) Your browser's sessionStorage (and, once [RFE-111] ships, a short-retention server log) So we can debug crashes you or other users encounter Legitimate interest (security & service integrity)
Future: your email address — only if you subscribe to the newsletter Our email service provider [DECIDE: Buttondown / ConvertKit / self-hosted via Cloudflare Worker — pick one before launching the newsletter] To send you the newsletters you subscribed to Consent (double-opt-in)
Future: aggregated analytics (page views, rough referrers, device class) Our analytics provider [DECIDE: Plausible / Fathom / self-hosted Umami / server-side counters — pick one before enabling analytics] To understand roughly how the site is used, at an aggregate level Legitimate interest (we do not profile individuals)

We process all of these data points for the single purpose listed. We do not sell, rent, or share them with anyone outside the processors listed in §4.

3. What we do not collect

For clarity and to prevent scope creep over time:

4. Third-party processors

We use a small number of service providers to run the Service. Each of them processes personal data on our behalf under a Data Processing Agreement (DPA) where applicable.

For EU/EEA users, cross-border transfers to U.S.-based processors (Cloudflare, and potentially the email and analytics providers) rely on [DECIDE: Standard Contractual Clauses with the processor, the EU-U.S. Data Privacy Framework where the processor participates, or equivalent transfer mechanism]. Request the list of transfer-mechanism documents via the privacy contact in §1.

5. How long we keep your data

DataRetention
Per-tab sessionStorageUntil you close the tab (browser-controlled)
Your screen name (localStorage)Until you clear it yourself in our UI or via browser settings
WebRTC signaling state in the WorkerCleared by the Worker's TTL within minutes of the match ending
Errlog client ring buffer50 entries rolling, cleared on tab close
Errlog server log (once [RFE-111] ships)7 days, then automatically deleted
Newsletter email addressUntil you unsubscribe (immediate deletion on unsubscribe)
Analytics aggregates[DECIDE: typically 12 months is a sensible ceiling; Plausible defaults to rolling-window aggregates so no individual events persist past the window]

For proof-of-consent records (§6) we retain the timestamp and consent scope for [DECIDE: 6 years after the consent ends, per the GDPR statute-of-limitations convention] to be able to respond to later regulator audits.

6. Your rights

Depending on where you live, you may have any of the following rights over your personal data:

To exercise any of these rights, email [DECIDE: privacy contact from §1] with your request. We will respond within 30 days. We may ask for enough information to confirm that the request comes from you (not from someone trying to extract your data by impersonation); we will collect the minimum needed for that check.

California residents have additional rights under the CCPA/CPRA, including the right not to be discriminated against for exercising these rights.

7. Children's privacy

The Service is not directed at children under 13 (United States, per the Children's Online Privacy Protection Act) or under 16 [DECIDE: or whichever threshold applies in the specific EU member state — 13 to 16 depending on national GDPR transposition]. We do not knowingly collect personal data from users below these ages.

If you believe a child has provided personal data to us, please contact [DECIDE: privacy contact from §1] and we will delete the data within 30 days, without requiring a guardian's retroactive signed consent and without penalty to the child.

8. Cookies and similar technologies

The Service is cookie-free by default as of the publication date of this policy. We set no cookies through our own origin, and we do not load third-party scripts that set cookies on your device.

Browser-side storage we do use, which is not a cookie but is subject to similar user controls:

You can clear either at any time via your browser's developer tools or site settings. Doing so will reset your display name and end any in-progress match.

If the analytics tool chosen under [RFE-140] ends up using cookies (e.g. if we migrate from a cookie-less tool to a tool like Google Analytics, which we currently do not plan to do), this section will be updated, a cookie banner will appear before such cookies are set, and EU/EEA users will be asked for explicit consent per the ePrivacy Directive.

9. Security

We cannot guarantee absolute security of any system, but we commit to using reasonable measures consistent with the risk profile of the data we hold (primarily: ephemeral game state and opt-in newsletter addresses).

10. Changes to this policy

We will revise this policy when our practices change.

Previous versions of this policy will be retained [DECIDE: linked from a /legal/privacy/archive/ page, or stored in the repo's git history and linked via a permalink — the latter is zero-maintenance] so you can see what the policy said at any given time.

11. Contact

For privacy questions, rights requests, or anything else covered here:

For general, non-privacy questions, reach us at [email protected].