poke/html/priv.ejs
2025-08-19 03:57:09 +02:00

468 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Poke — Privacy Policy</title>
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover" />
<meta content="website" property="og:type">
<meta content="PokeTube - Legal thingy to put you into sleep" property="og:title">
<meta content="This is the PokeTube Privacy Policy meta description. Wow, helpful meta description Poke. Thanks!" property="twitter:description">
<meta content="https://cdn.glitch.me/d68d17bb-f2c0-4bc3-993f-50902734f652/aa70111e-5bcd-4379-8b23-332a33012b78.image.png?v=1701898829884" property="og:image" />
<meta content="summary_large_image" name="twitter:card">
<style>
/* ===== Reset & base ===== */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
line-height: 1.55;
background:
radial-gradient(1200px 600px at 0% 0%, #0ea5e9 0%, #0ea5e900 60%),
radial-gradient(1000px 700px at 100% 0%, #8b5cf6 0%, #8b5cf600 65%),
radial-gradient(1000px 700px at 0% 100%, #14b8a6 0%, #14b8a600 65%),
#0b0b0b;
color: #eaeaea;
}
a { color: #54c8ff; text-decoration: none; }
a:hover { text-decoration: underline; }
:focus-visible { outline: 2px solid #54c8ff; outline-offset: 2px; }
img { max-width: 100%; height: auto; }
code, pre, kbd, samp {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "DejaVu Sans Mono", monospace;
font-size: 0.95em;
}
/* ===== Layout ===== */
.wrap {
max-width: 1100px;
margin: 0 auto;
padding: 24px;
}
header.site {
position: sticky;
top: 0;
z-index: 50;
backdrop-filter: saturate(140%) blur(10px);
background: color-mix(in oklab, #0b0b0b 80%, transparent);
border-bottom: 1px solid #222;
}
.site-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 12px 24px;
}
.brand {
display: inline-flex;
align-items: center;
gap: 10px;
text-decoration: none;
color: #fff;
font-weight: 800;
letter-spacing: 0.2px;
}
.brand-mark {
inline-size: 36px; block-size: 36px;
border-radius: 10px;
background: linear-gradient(135deg, #0ea5e9, #8b5cf6);
display: grid; place-items: center;
font-weight: 900;
}
.brand span { font-size: 1.05rem; }
.actions {
display: flex; align-items: center; gap: 10px;
}
.btn {
appearance: none; border: 0; cursor: pointer;
padding: 10px 14px; border-radius: 12px;
background: #111; color: #ddd;
border: 1px solid #222;
transition: transform .08s ease, background .2s ease, border-color .2s ease;
}
.btn:hover { background: #161616; border-color: #2a2a2a; }
.btn:active { transform: translateY(1px); }
.btn.primary {
background: linear-gradient(135deg, #0ea5e9, #8b5cf6);
color: #0b0b0b; font-weight: 700;
border: 0;
}
/* ===== Hero ===== */
.hero {
padding: 28px 24px 6px;
}
.hero-card {
background: color-mix(in oklab, #111 86%, transparent);
border: 1px solid #222;
border-radius: 24px;
padding: clamp(18px, 3.5vw, 28px);
display: grid;
grid-template-columns: 1.2fr .8fr;
gap: clamp(18px, 3.5vw, 28px);
}
.hero h1 {
margin: 0 0 8px 0;
font-size: clamp(1.6rem, 3.6vw, 2.2rem);
letter-spacing: 0.2px;
}
.hero p.lede {
margin: 0 0 14px 0;
color: #cfcfcf;
}
.badges {
display: flex; flex-wrap: wrap; gap: 10px;
margin-top: 10px;
}
.chip {
display: inline-flex; align-items: center; gap: 8px;
padding: 8px 12px; border-radius: 999px;
background: #0f0f10; border: 1px solid #1f1f22; color: #dcdcdc;
font-weight: 600; font-size: 0.9rem;
}
.chip .dot {
inline-size: 10px; block-size: 10px; border-radius: 999px;
background: #22c55e;
box-shadow: 0 0 0 3px color-mix(in oklab, #22c55e 18%, transparent);
}
.hero-side {
display: grid; gap: 12px;
align-content: start;
}
.note {
padding: 12px 14px;
border-radius: 16px;
background: #0f1315;
border: 1px solid #1a2126;
color: #dfe9f3;
}
.note h3 { margin: 0 0 6px 0; font-size: 1rem; }
.muted { color: #a9a9a9; }
/* ===== TOC ===== */
.toc {
margin-top: 16px;
background: #0f0f10;
border: 1px solid #1f1f22;
border-radius: 16px;
padding: 12px;
}
.toc h3 { margin: 0 0 8px 0; font-size: 1rem; }
.toc ul {
list-style: none; margin: 0; padding: 0;
columns: 2; column-gap: 16px;
}
.toc li { break-inside: avoid; margin: 6px 0; }
.toc a { color: #cfe8ff; }
@media (max-width: 780px) {
.hero-card { grid-template-columns: 1fr; }
.toc ul { columns: 1; }
}
/* ===== Sections ===== */
section.policy {
margin: 22px 0;
background: #0f0f10;
border: 1px solid #1f1f22;
border-radius: 18px;
padding: clamp(16px, 3vw, 22px);
}
section.policy h2 {
margin: 0 0 10px 0; font-size: clamp(1.2rem, 2.5vw, 1.6rem);
}
section.policy p { margin: 10px 0; color: #e7e7e7; }
.callout {
background: #0c1114; border: 1px solid #132029; color: #d2ebff;
padding: 12px 14px; border-radius: 14px;
}
.grid-2 {
display: grid; gap: 12px; grid-template-columns: 1fr 1fr;
}
@media (max-width: 780px) { .grid-2 { grid-template-columns: 1fr; } }
/* ===== Details blocks ===== */
details.block {
background: #0c0c0d; border: 1px solid #1a1a1d;
border-radius: 14px; padding: 10px 12px; margin: 10px 0;
}
details.block > summary {
cursor: pointer; list-style: none;
display: flex; align-items: center; gap: 10px;
font-weight: 700; color: #e6f7ff;
}
details.block > summary::before {
content: "▸"; transition: transform .15s ease;
color: #8bd2ff;
}
details[open].block > summary::before { transform: rotate(90deg); }
details.block p, details.block ul { margin-left: 22px; }
/* ===== Footer ===== */
footer.site {
margin: 28px auto 50px;
color: #bdbdbd;
text-align: center;
}
.small { font-size: .925rem; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "DejaVu Sans Mono", monospace; }
/* ===== Theme toggle (pure CSS + a tiny bit of JS for preference) ===== */
.theme-toggle {
display: inline-flex; align-items: center; gap: 8px;
padding: 8px 10px; border-radius: 12px; border: 1px solid #222;
background: #111; color: #ddd; cursor: pointer;
font-size: .95rem;
}
.theme-toggle input { appearance: none; inline-size: 38px; block-size: 22px; background: #222; border-radius: 999px; position: relative; outline: none; margin: 0; }
.theme-toggle input::after {
content: ""; position: absolute; inset: 3px auto auto 3px;
inline-size: 16px; block-size: 16px; border-radius: 999px; background: #eee; transition: transform .2s ease;
}
.theme-toggle input:checked::after { transform: translateX(16px); }
/* ===== Print ===== */
@media print {
header.site, .actions, .theme-toggle, .hero-side, .toc { display: none !important; }
body { background: #fff; color: #000; }
section.policy { border-color: #999; background: #fff; }
a { color: #0645ad; }
}
</style>
</head>
<body>
<!-- Header -->
<header class="site">
<div class="site-row wrap">
<a class="brand" href="/" aria-label="Poke home">
<img style="transform: scale(1.3);width:8.5em;display: block;margin-left: auto;margin-right: auto;" src="/css/logo.svg?v=5"></a>
</a>
</div>
</header>
<!-- Hero -->
<main class="wrap hero" id="top">
<div class="hero-card" role="region" aria-label="Privacy overview">
<div>
<h1>Privacy Policy</h1>
<p class="lede">
Short version? <strong>We dont collect any data about you.</strong> No telemetry, no trackers ! Because Poke is <strong>free software</strong>, you can also check the source and self-host.
</p>
<div class="badges" aria-label="Key guarantees">
<span class="chip"><span class="dot" aria-hidden="true"></span> No data collected</span>
<span class="chip"><span class="dot" aria-hidden="true"></span> No telemetry</span>
<span class="chip"><span class="dot" aria-hidden="true"></span> No thirdparty trackers</span>
<span class="chip"><span class="dot" aria-hidden="true"></span> Requests proxied</span>
</div>
<div class="toc" aria-label="Table of contents">
<h3>Jump to a section</h3>
<ul>
<li><a href="#preamble">Preamble</a></li>
<li><a href="#summary">TL;DR</a></li>
<li><a href="#what-we-collect">What We Do/Dont Collect</a></li>
<li><a href="#cookies">Cookies &amp; Storage</a></li>
<li><a href="#third-parties">Third-Party Requests &amp; Proxy</a></li>
<li><a href="#legal-bases">Legal Bases (GDPR)</a></li>
<li><a href="#your-rights">Your Rights</a></li>
<li><a href="#retention">Data Retention</a></li>
<li><a href="#security">Security</a></li>
<li><a href="#self-host">Self-Hosting</a></li>
<li><a href="#changes">Changes to this Policy</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#license">Policy License</a></li>
</ul>
</div>
</div>
<aside class="hero-side">
<div class="note" role="note" aria-label="Status">
<h3>Current version</h3>
<p class="muted small">Last updated: <time datetime="2025-08-19">August 19, 2025</time></p>
<p class="small">This page is for the default Poke instance (<span class="mono">poketube.fun</span>). If you use a community instance or your own instance, its policy may differ.</p>
</div>
<div class="note" role="note" aria-label="Your privacy controls">
<h3>Your privacy controls</h3>
<ul>
<li>Enable <strong>Do Not Track</strong> and <strong>Global Privacy Control</strong> in your browser.</li>
<li>Use the in-app <strong>“Opt-Out of Metrics”</strong> button (if available on your instance).</li>
<li>Use the built-in <strong>proxy mode</strong> for third-party assets (enabled by default on our instance).</li>
</ul>
</div>
</aside>
</div>
<section id="preamble" class="policy">
<h2>Preamble</h2>
<p>
Welcome to Pokes Privacy Policy. We dont collect data about you and we dont run telemetry. Poke is <strong>free software</strong> you can read, remix, and run yourself.
</p>
<p class="callout">
Not legal advice lol
</p>
</section>
<!-- Summary -->
<section id="summary" class="policy">
<h2>TL;DR</h2>
<div class="grid-2">
<div>
<ul>
<li><strong>No data collected.</strong> Full stop.</li>
<li><strong>No telemetry.</strong> We dont phone home.</li>
<li><strong>No thirdparty trackers.</strong> Were allergic.</li>
<li><strong>YouTube cant see what you watch here.</strong> Its all done on the backend. </li>
</ul>
</div>
<div>
<ul>
<li><strong>Poke Account:</strong> no email required, no personal info needed.</li>
<li><strong>Poke Maps:</strong> uses OpenStreetMap data; map tiles/attribution may have separate privacy rules depending on the tile server you use.</li>
<li><strong>No required cookies.</strong> Preferences (like theme or layout) may live in local storage on your device.</li>
</ul>
</div>
</div>
</section>
<!-- What we collect -->
<section id="what-we-collect" class="policy">
<h2>What We Do/Dont Collect</h2>
<details class="block" open>
<summary>We collect <em>nothing</em> about you</summary>
<p>
We dont store IP addresses, useragent fingerprints, unique identifiers, emails, names—none of it. Theres no telemetry or “anonymous crash reports.”
</p>
</details>
<details class="block">
<summary>What exists briefly so the internet works</summary>
<p>
Your browser and our server exchange data to deliver pages (thats how HTTP works). That info is handled <em>transiently</em> and not logged in a way that identifies you on our primary instance.
</p>
</details>
<details class="block">
<summary>Poke Account</summary>
<p>
If you make a Poke account, we dont require an email or personal details. If you choose to add contact info later (for recovery or notices), its optional and removable.
</p>
</details>
</section>
<!-- Cookies & storage -->
<section id="cookies" class="policy">
<h2>Cookies &amp; Local Storage</h2>
<ul>
<li><strong>No cookies :D!</strong></li>
<li><strong>Local storage only for preferences</strong> (e.g., theme, layout). This stays on your device.</li>
</ul>
</section>
<!-- Third parties -->
<section id="third-parties" class="policy">
<h2>ThirdParty Requests &amp; Proxy</h2>
<p>
When Poke needs assets (videos, thumbnails, etc.), we fetch them through our proxy (e.g., <span class="mono">p.poketube.fun</span>).
</p>
<p>
Fonts and other assets are shipped locally where possible. If a thirdparty endpoint is necessary, we keep it behind the proxy and strip identifying headers.
</p>
</section>
<!-- Legal bases -->
<section id="legal-bases" class="policy">
<h2>Legal Bases for Processing (GDPR)</h2>
<ul>
<li><strong>Legitimate interests:</strong> Operating a secure, reliable service while collecting no personal data.</li>
<li><strong>Consent:</strong> If a future optional feature needs info, well ask first and explain why.</li>
<li><strong>Legal obligation:</strong> If the law requires us to act, we provide only what we actually have (which is essentially nothing personal by default).</li>
</ul>
</section>
<!-- Your rights -->
<section id="your-rights" class="policy">
<h2>Your Privacy Rights</h2>
<p>
We simply dont keep personal data.
</p>
</section>
<!-- Retention -->
<section id="retention" class="policy">
<h2>Data Retention</h2>
<ul>
<li><strong>Server logs:</strong> No personal identifiers on our main instance.</li>
<li><strong>Telemetry/analytics:</strong> Not enabled here.</li>
<li><strong>Optional contact data (if you added it):</strong> Kept only as long as you want it to be.</li>
</ul>
</section>
<!-- Security -->
<section id="security" class="policy">
<h2>Security</h2>
<p>
Connections use modern TLS. We minimize what could ever be exposed by not collecting personal data in the first place. Less data, less risk. Math checks out.
</p>
</section>
<!-- Self-host -->
<section id="self-host" class="policy">
<h2>SelfHosting</h2>
<p>
Poke is free software under the <strong>GNU GPL v3.0 or later</strong>.
</p>
</section>
<!-- Changes -->
<section id="changes" class="policy">
<h2>Changes to this Policy</h2>
<p>
If we ever change how privacy works here, well update the date at the top and announce major changes. Spoiler: changes would not include adding two bananas. this isnt minions LOL :3
</p>
</section>
<!-- Contact -->
<section id="contact" class="policy">
<h2>Contact</h2>
<p>
Questions or concerns? Open an issue on our project tracker or reach out via the contact methods listed on our project page.
</p>
<ul>
<li>Project: <span class="mono">codeberg.org/Ashley/poketube</span></li>
<li>Status (for optional email alerts): <span class="mono">status.poketube.fun</span></li>
</ul>
</section>
<!-- License -->
<section id="license" class="policy">
<h2>Policy License</h2>
<p class="small">
© 20212025 Poke. This policy is licensed under the
<strong>Creative Commons AttributionShareAlike 4.0 International</strong> (CC BY-SA 4.0).
</p>
<details class="block">
<summary>GPLv3 Warranty Disclaimer (excerpt)</summary>
<pre class="small" style="white-space:pre-wrap;margin:8px 0;">
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER,
OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
(E.G., LOSS OF DATA, DATA BEING RENDERED INACCURATE, OR FAILURES OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
</pre>
</details>
</section>
<footer class="site small">
<p>
</p>
<p>
Return to <a href="#top">Top</a>!
</p>
</footer>
</main>
</body>
</html>