-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathprivacy.html
More file actions
206 lines (188 loc) · 8.64 KB
/
privacy.html
File metadata and controls
206 lines (188 loc) · 8.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Privacy Policy — Kagenti</title>
<meta name="description" content="Privacy policy for Kagenti.io.">
<meta name="robots" content="noindex, nofollow">
<link rel="icon" type="image/svg+xml" href="favicon.svg">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@400;500;700&family=Red+Hat+Mono:wght@400;500&family=Red+Hat+Text:wght@400;500;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
<style>
.pp-main {
background: var(--c-surface);
border-bottom: none;
padding-block: var(--sp-20);
}
.pp-body {
max-width: 640px;
}
.pp-body h1 {
font-size: var(--sz-heading);
font-weight: 500;
letter-spacing: -0.02em;
line-height: 1.2;
margin-bottom: var(--sp-2);
color: var(--c-text);
}
.pp-updated {
font-size: var(--sz-label);
color: var(--c-muted);
text-transform: uppercase;
letter-spacing: 0.06em;
margin-bottom: var(--sp-10);
display: block;
}
.pp-body h2 {
font-size: var(--sz-body);
font-weight: 600;
color: var(--c-text);
margin-top: var(--sp-8);
margin-bottom: var(--sp-3);
}
.pp-body p, .pp-body li {
font-size: var(--sz-body);
color: var(--c-muted);
line-height: 1.65;
margin-bottom: var(--sp-4);
}
.pp-body ul {
padding-left: var(--sp-5);
margin-bottom: var(--sp-4);
}
.pp-body li { margin-bottom: var(--sp-2); }
.pp-body a { color: var(--c-accent); font-weight: 500; text-decoration: none; }
.pp-body a:hover { text-decoration: underline; }
.pp-body hr {
border: none;
border-top: 1px solid var(--c-border);
margin: var(--sp-10) 0;
}
</style>
</head>
<body>
<a class="skip-link" href="#main-content">Skip to main content</a>
<header class="site-header">
<div class="container header-inner">
<a href="index.html" class="logo" aria-label="Kagenti home">
<svg viewBox="0 0 250 250" aria-hidden="true" focusable="false">
<path d="m143 39.5c-18 0-18 18-18 18s0-18-18-18H22c-2.76.0-5 2.24-5 5v143c0 2.76 2.24 5 5 5h76c7.2.0 8.64 11.52 8.93 16.13.07 1.05.95 1.87 2 1.87h32.14c1.06.0 1.94-.82 2-1.87.29-4.61 1.73-16.13 8.93-16.13h76c2.76.0 5-2.24 5-5V44.5c0-2.76-2.24-5-5-5h-85zM206 163c0 1.38-1.12 2.5-2.5 2.5H143c-18 0-18 18-18 18s0-18-18-18H46.5c-1.38.0-2.5-1.12-2.5-2.5V69c0-1.38 1.12-2.5 2.5-2.5H98c7.2.0 8.64 11.52 8.93 16.13.07 1.05.95 1.87 2 1.87h32.14c1.06.0 1.94-.82 2-1.87.29-4.61 1.73-16.13 8.93-16.13h51.5c1.38.0 2.5 1.12 2.5 2.5v94z" fill="#ee0000"/>
</svg>
<span class="logo-wordmark">Kagenti</span>
</a>
<div style="margin-left: auto;">
<a href="index.html" style="font-size: 0.875rem; color: var(--c-muted); text-decoration: none;">← Back to site</a>
</div>
</div>
</header>
<main id="main-content">
<section class="pp-main">
<div class="container">
<div class="pp-body">
<span class="label" aria-hidden="true">Legal</span>
<h1>Privacy Policy</h1>
<span class="pp-updated">Last updated: March 2026</span>
<p>
This policy describes how Kagenti.io collects and uses information when you visit this website.
Kagenti is an open-source project. This site is a marketing and documentation resource — it does not
offer accounts, process payments, or collect personal information through forms.
</p>
<hr>
<h2>What we collect</h2>
<p>
If you accept analytics cookies, we use Google Analytics 4 (GA4) to collect anonymised usage data, including:
</p>
<ul>
<li>Pages visited and time spent on each page</li>
<li>Referring website or search query</li>
<li>Browser type, operating system, and approximate country (derived from IP address)</li>
<li>Interactions such as button clicks and outbound link clicks</li>
</ul>
<p>
IP addresses are anonymised before storage. We do not collect your name, email address, or any
other information that directly identifies you.
</p>
<p>
If you decline analytics cookies, no tracking cookies are set and no usage data is sent to Google.
</p>
<h2>Browser storage</h2>
<p>
This site does not set any first-party cookies. It uses your browser's
<code>localStorage</code> and <code>sessionStorage</code> to store small, non-personal values
that never leave your browser and are not sent with HTTP requests:
</p>
<ul>
<li><code>kagenti-cookie-consent</code> — your analytics consent preference (<code>localStorage</code>)</li>
<li><code>kagenti-banner-dismissed</code> — whether you dismissed the event banner (<code>sessionStorage</code>, cleared when the tab closes)</li>
<li><code>kagenti-gh-stats</code> — cached GitHub repository statistics (<code>localStorage</code>, refreshed hourly)</li>
</ul>
<h2>Analytics cookies</h2>
<p>
If you accept analytics, Google Analytics sets third-party cookies (<code>_ga</code>, <code>_ga_*</code>)
to distinguish visitors and sessions. These cookies expire after 2 years.
No analytics cookies are set unless you explicitly consent.
</p>
<p>
You can change your preference at any time using the
<a href="#" id="pp-cookie-manage-link">Analytics preferences</a> link in the site footer,
or by clearing your browser storage.
</p>
<h2>Legal basis (GDPR)</h2>
<p>
Google Analytics cookies are processed on the basis of your explicit consent (Article 6(1)(a) GDPR).
Browser storage entries listed above are used for site functionality and do not require consent
under the ePrivacy Directive, as they are strictly necessary for features you have requested.
You are free to decline analytics without any loss of functionality on this site.
</p>
<h2>Data processor</h2>
<p>
Analytics data is processed by Google LLC under the Google Analytics Terms of Service and
Google's standard contractual clauses. Google acts as a data processor on our behalf.
For more information, see <a href="https://policies.google.com/privacy" rel="noopener noreferrer">Google's Privacy Policy</a>.
</p>
<h2>Data retention</h2>
<p>
Analytics data is retained for 14 months in Google Analytics, after which it is automatically deleted.
You can request deletion of your data by
<a href="mailto:kagenti-maintainers@googlegroups.com">contacting us</a>.
</p>
<h2>Your rights</h2>
<p>
Under GDPR, you have the right to access, rectify, or erase your personal data, and to object to or
restrict its processing. Because analytics data is anonymised and not linked to an identity, we may
be unable to locate or retrieve data relating to a specific individual. To exercise your rights,
<a href="mailto:kagenti-maintainers@googlegroups.com">contact us</a>.
</p>
<h2>Changes to this policy</h2>
<p>
We may update this policy from time to time. The date at the top of this page reflects the most
recent revision. Continued use of the site after changes are posted constitutes acceptance of the
updated policy.
</p>
<h2>Contact</h2>
<p>
Questions about this policy can be directed to
<a href="mailto:kagenti-maintainers@googlegroups.com">kagenti-maintainers@googlegroups.com</a>.
</p>
</div>
</div>
</section>
</main>
<script src="script.js"></script>
<script>
// Wire "Cookie preferences" link on this page to the consent manager in script.js
var ppLink = document.getElementById('pp-cookie-manage-link');
if (ppLink) {
ppLink.addEventListener('click', function (e) {
e.preventDefault();
try { localStorage.removeItem('kagenti-cookie-consent'); } catch (err) {}
var bar = document.getElementById('cookie-bar');
if (bar) bar.hidden = false;
});
}
</script>
</body>
</html>