CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
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 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 | /**
* Privacy Policy — GDPR + CCPA + COPPA aware.
*
* DRAFT — requires attorney review before any paid launch.
*/
import { Hono } from "hono";
import { Layout } from "../../views/layout";
import { softAuth } from "../../middleware/auth";
import type { AuthEnv } from "../../middleware/auth";
const privacy = new Hono<AuthEnv>();
privacy.use("*", softAuth);
privacy.get("/legal/privacy", (c) => {
const user = c.get("user");
return c.html(
<Layout title="Privacy Policy" user={user}>
<article style="max-width: 820px; margin: 0 auto; line-height: 1.7; font-size: 15px">
<h1 style="font-size: 28px; margin-bottom: 8px">Privacy Policy</h1>
<p style="color: var(--text-muted); font-size: 13px; margin-bottom: 24px">
DRAFT — requires attorney review. Last updated: 2026-04-16.
</p>
<div
style="background: rgba(210, 153, 34, 0.1); border: 1px solid var(--yellow); color: var(--yellow); padding: 12px 16px; border-radius: var(--radius); margin-bottom: 24px; font-size: 13px"
>
<strong>DRAFT notice.</strong> This Privacy Policy is a good-faith
draft published during Gluecron's pre-launch phase. It has not been
reviewed by privacy counsel. Article 13 GDPR disclosures,
sub-processor lists, and retention schedules are provisional and
will be finalized before general availability.
</div>
<h2>1. Data we collect</h2>
<ul>
<li>
<strong>Account data:</strong> username, email address, display
name, hashed password, 2FA secrets, WebAuthn credentials, SSH
public keys, personal access tokens (stored as SHA-256 hashes).
</li>
<li>
<strong>Git content:</strong> repositories you push, including
commits, branches, tags, file contents, commit messages, and
author metadata embedded in commits.
</li>
<li>
<strong>AI interactions:</strong> prompts you submit to AI
features (chat, code review, explanations, completions) and
responses generated by third-party AI providers.
</li>
<li>
<strong>Usage telemetry:</strong> requests, request IDs, rate-limit
counters, error traces, audit events, deployment events, gate run
results.
</li>
<li>
<strong>Network data:</strong> IP address, user-agent string,
request timestamps, session cookie identifiers.
</li>
</ul>
<h2>2. How we use it</h2>
<ul>
<li>To operate, maintain, and secure the Service.</li>
<li>
To provide AI-assisted features that you explicitly invoke (code
review, chat, explanations, test generation, auto-repair,
dependency updates, incident summaries, semantic search).
</li>
<li>
To detect, investigate, and prevent abuse, fraud, security
incidents, and violations of our Terms or AUP.
</li>
<li>
To comply with legal obligations, respond to lawful requests from
authorities, and enforce our rights.
</li>
<li>
To communicate service-related messages (security alerts, policy
updates, incident notifications).
</li>
</ul>
<h2>3. Data controller</h2>
<p>
The data controller is <strong>Gluecron</strong> (entity name
placeholder — <em>DRAFT</em>; final legal entity name and registered
address to be inserted prior to launch). Contact:
support@gluecron.com (placeholder).
</p>
<h2>4. Sub-processors</h2>
<p>
We engage the following sub-processors to operate the Service. This
list is current as of the date above and may change; we intend to
provide 30 days' notice of material changes.
</p>
<div style="overflow-x: auto; margin: 12px 0">
<table style="width: 100%; border-collapse: collapse; font-size: 14px; border: 1px solid var(--border); border-radius: var(--radius)">
<thead style="background: var(--bg-tertiary)">
<tr>
<th style="text-align: left; padding: 8px 12px; border-bottom: 1px solid var(--border)">
Sub-processor
</th>
<th style="text-align: left; padding: 8px 12px; border-bottom: 1px solid var(--border)">
Purpose
</th>
<th style="text-align: left; padding: 8px 12px; border-bottom: 1px solid var(--border)">
Data categories
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Neon (neon.tech)
</td>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Managed PostgreSQL (primary database)
</td>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Account data, metadata, telemetry
</td>
</tr>
<tr>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Anthropic
</td>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Claude API (AI features)
</td>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
AI prompts (including code snippets you submit)
</td>
</tr>
<tr>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Resend (if enabled)
</td>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Transactional email delivery
</td>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Email address, message contents
</td>
</tr>
<tr>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Fly.io / Railway
</td>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
Application hosting (compute)
</td>
<td style="padding: 8px 12px; border-bottom: 1px solid var(--border)">
All transient request data
</td>
</tr>
<tr>
<td style="padding: 8px 12px">Cloudflare (if fronting)</td>
<td style="padding: 8px 12px">CDN, DDoS mitigation, DNS</td>
<td style="padding: 8px 12px">
IP address, request metadata
</td>
</tr>
</tbody>
</table>
</div>
<p>
<em>DRAFT — requires attorney review; sub-processor list must be
verified against signed DPAs prior to launch.</em>
</p>
<h2>5. Data retention</h2>
<ul>
<li>
<strong>Account data:</strong> retained while your account is
active and for thirty (30) days after account deletion, after
which we intend to purge it.
</li>
<li>
<strong>Git repository content:</strong> retained for the
lifetime of your account; deleting a repository is intended to
purge its content within 30 days.
</li>
<li>
<strong>Sessions:</strong> 30 days (rolling).
</li>
<li>
<strong>Audit and security logs:</strong> up to 12 months for
security and abuse-detection purposes.
</li>
<li>
<strong>Backups:</strong> may persist for up to 30 days beyond
the primary retention period.
</li>
</ul>
<h2>6. GDPR compliance (EU / UK residents)</h2>
<p>
If you are in the European Economic Area, the United Kingdom, or
Switzerland, we process your data under the following lawful bases
(GDPR Art. 6): (a) performance of a contract (providing the
Service to you); (b) our legitimate interests in securing and
improving the Service; (c) compliance with legal obligations; and
(d) where required, your consent (which you may withdraw at any
time).
</p>
<p>
<strong>Article 13 disclosures.</strong> The identity of the
controller, data categories, purposes, retention, recipients, and
your rights are described throughout this Policy. International
transfers of personal data outside the EEA/UK will rely on the EU
<em> Standard Contractual Clauses</em> ("SCCs") or another approved
transfer mechanism.
</p>
<p>
<strong>Your rights</strong> include access, rectification,
erasure, restriction, portability, and objection. You may lodge a
complaint with your local supervisory authority. <em>DRAFT —
requires attorney review.</em>
</p>
<h2>7. CCPA / CPRA compliance (California residents)</h2>
<p>
If you are a California resident, you have the right to (a) know
what personal information we collect, use, disclose, and sell or
share; (b) delete your personal information, subject to legal
exceptions; (c) correct inaccurate personal information; (d) opt
out of the sale or sharing of personal information (we do not
sell personal information); and (e) non-discrimination for
exercising these rights.
</p>
<h2>8. Right to erasure / access</h2>
<p>
To exercise any of the rights above, email{" "}
<strong>support@gluecron.com</strong> (placeholder). We intend to
respond within thirty (30) days. We may need to verify your
identity before acting. Some data (e.g., audit logs required for
security, legal holds) may be exempt from deletion.
</p>
<h2>9. Cookies</h2>
<p>
We use only <strong>strictly necessary cookies</strong> (session
authentication, theme preference, CSRF). We do not use advertising
cookies. We do not use third-party analytics cookies on our
marketing surfaces.
</p>
<h2>10. Children</h2>
<p>
The Service is not directed to children under 18. We do not
knowingly collect personal information from children under 13
(COPPA, U.S.) or 16 (GDPR, EEA). If you believe a child has
provided us information in violation of this Policy, contact us
and we will delete it.
</p>
<h2>11. Breach notification</h2>
<p>
In the event of a personal-data breach that is likely to result in
a risk to your rights and freedoms, we intend to notify the
relevant supervisory authority within <strong>72 hours</strong> of
becoming aware, as required by GDPR Art. 33, and to notify
affected users without undue delay where required.
</p>
<h2>12. Changes to this Policy</h2>
<p>
We intend to provide thirty (30) days' notice of material changes
to this Policy, by email or by posting a notice in the Service.
</p>
<hr style="margin: 32px 0; border: none; border-top: 1px solid var(--border)" />
<p style="font-size: 13px; color: var(--text-muted)">
See also:{" "}
<a href="/legal/terms">Terms of Service</a> ·{" "}
<a href="/legal/acceptable-use">Acceptable Use Policy</a> ·{" "}
<a href="/legal/dmca">DMCA Policy</a>
</p>
</article>
</Layout>
);
});
export default privacy;
|