page.tsx228 lines · main
| 1 | export const metadata = { title: 'privacy policy' }; |
| 2 | |
| 3 | export default function PrivacyPage() { |
| 4 | return ( |
| 5 | <> |
| 6 | <h1 className="font-mono text-2xl text-[var(--color-text)]">privacy policy</h1> |
| 7 | <p className="mt-2 font-mono text-xs text-[var(--color-text-subtle)]"> |
| 8 | last updated 2026-05-10 · phase 0 private alpha |
| 9 | </p> |
| 10 | |
| 11 | <p className="mt-8"> |
| 12 | This Privacy Policy explains what personal data the briven Service (briven.tech and any |
| 13 | subdomain) collects, why, and what you can do about it. The Service is operated by{' '} |
| 14 | <strong>flndrn Limited</strong> (the “Operator”, also the data controller |
| 15 | for the purposes of the EU General Data Protection Regulation), a company registered at |
| 16 | Arch. Makariou III 171, Vanezis Business Center 4th floor, 3027 Limassol, Cyprus. |
| 17 | Day-to-day development takes place in Flanders, Belgium. For brand and legal context see |
| 18 | the <a href="/terms" className="text-[var(--color-text-link)]">Terms of Service</a>. |
| 19 | </p> |
| 20 | |
| 21 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">1. what we collect</h2> |
| 22 | <p>We process the following categories of personal data:</p> |
| 23 | <ul className="mt-2 list-disc pl-6"> |
| 24 | <li> |
| 25 | <strong>Account data</strong> — email address (required), display name (optional), |
| 26 | OAuth provider identifier and avatar URL (only if you sign in via Google). |
| 27 | </li> |
| 28 | <li> |
| 29 | <strong>Project metadata</strong> — names you give projects, schemas you push, |
| 30 | deployment timestamps, and a per-project audit log of mutations (who did what, when). |
| 31 | </li> |
| 32 | <li> |
| 33 | <strong>Encrypted secrets</strong> — project env vars and API keys, encrypted at rest |
| 34 | with AES-256-GCM. The Operator can never read these without your authenticated request. |
| 35 | </li> |
| 36 | <li> |
| 37 | <strong>Operational telemetry</strong> — request paths, response codes, and latency on |
| 38 | the API and dashboard. We use these to debug and to bill function-invocation usage. |
| 39 | </li> |
| 40 | <li> |
| 41 | <strong>IP-derived identifiers</strong> — your IP address is hashed with a server-side |
| 42 | pepper at the moment a request is logged. The plaintext IP is never written to disk. |
| 43 | The hash is what appears in the audit log; it lets us correlate sessions for security |
| 44 | investigations without de-anonymising you. |
| 45 | </li> |
| 46 | <li> |
| 47 | <strong>Billing data</strong> (when paid tiers launch) — billing email and a token from |
| 48 | our payment processor. We do not store card or bank-account details on briven |
| 49 | infrastructure; the processor handles all of that. |
| 50 | </li> |
| 51 | </ul> |
| 52 | |
| 53 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">2. what we do not collect</h2> |
| 54 | <ul className="mt-2 list-disc pl-6"> |
| 55 | <li> |
| 56 | <strong>The contents of your customer database.</strong> We operate the Postgres |
| 57 | cluster and the runtime; we do not read your tables, rows, or function code outside of |
| 58 | the support paths you explicitly authenticate. |
| 59 | </li> |
| 60 | <li> |
| 61 | <strong>Third-party advertising cookies, marketing trackers, or session-replay tools.</strong>{' '} |
| 62 | briven.tech ships zero analytics scripts to your browser. |
| 63 | </li> |
| 64 | <li> |
| 65 | <strong>Plaintext IP addresses</strong>, browser fingerprints, or device identifiers |
| 66 | for advertising purposes. |
| 67 | </li> |
| 68 | </ul> |
| 69 | |
| 70 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">3. why we process it</h2> |
| 71 | <p>The legal bases for processing under GDPR Article 6 are:</p> |
| 72 | <ul className="mt-2 list-disc pl-6"> |
| 73 | <li> |
| 74 | <strong>Contract</strong> (Art. 6(1)(b)) — to provide you the Service you signed up |
| 75 | for: hosting your Postgres, running your functions, serving your dashboard. |
| 76 | </li> |
| 77 | <li> |
| 78 | <strong>Legitimate interests</strong> (Art. 6(1)(f)) — security, abuse prevention, and |
| 79 | operational debugging. The audit log and IP hashing fall under this basis. |
| 80 | </li> |
| 81 | <li> |
| 82 | <strong>Legal obligation</strong> (Art. 6(1)(c)) — when a court order, regulatory |
| 83 | subpoena, or DSA/DMA disclosure requirement compels us. |
| 84 | </li> |
| 85 | <li> |
| 86 | <strong>Consent</strong> (Art. 6(1)(a)) — currently used only for optional product |
| 87 | announcements; you can decline at sign-up and withdraw any time without affecting your |
| 88 | access to the Service. |
| 89 | </li> |
| 90 | </ul> |
| 91 | |
| 92 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">4. who we share with</h2> |
| 93 | <p> |
| 94 | We share data only with the third-party processors listed at{' '} |
| 95 | <a href="/subprocessors" className="text-[var(--color-text-link)]"> |
| 96 | briven.tech/subprocessors |
| 97 | </a> |
| 98 | . Each one is bound by a data-processing agreement that limits them to the purpose for |
| 99 | which we engage them. We do not sell personal data and do not rent it to advertisers. |
| 100 | We disclose data to law enforcement only when required by binding legal process and we |
| 101 | challenge over-broad demands where we can. |
| 102 | </p> |
| 103 | |
| 104 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">5. retention</h2> |
| 105 | <ul className="mt-2 list-disc pl-6"> |
| 106 | <li> |
| 107 | <strong>Account data</strong> — kept while your account is active. After account |
| 108 | closure: 30-day soft-delete window during which you can restore, then permanent erasure. |
| 109 | </li> |
| 110 | <li> |
| 111 | <strong>Project data</strong> — same: 30-day soft-delete after you close the project, |
| 112 | then permanent erasure including from backups within 90 days. |
| 113 | </li> |
| 114 | <li> |
| 115 | <strong>Audit logs</strong> — 13 months, then rotated. Required so we can investigate |
| 116 | security incidents that surface late. |
| 117 | </li> |
| 118 | <li> |
| 119 | <strong>Function invocation logs</strong> — 7 days for free-tier projects, 30 days for |
| 120 | paid tiers (when applicable). Customer-controlled retention is on the roadmap. |
| 121 | </li> |
| 122 | <li> |
| 123 | <strong>Backups</strong> — encrypted off-site backups are kept for 30 days then |
| 124 | rotated. A deletion request runs through the active store immediately; backup |
| 125 | deletion follows the 30-day rotation cycle. |
| 126 | </li> |
| 127 | </ul> |
| 128 | |
| 129 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">6. security</h2> |
| 130 | <p> |
| 131 | TLS 1.3 on every public endpoint; AES-256-GCM for project env vars at rest; bcrypt for |
| 132 | password hashes; SHA-256 for API key hashes; constant-time comparison on every secret |
| 133 | check. SSH access to the host is key-only; root-password authentication is disabled. |
| 134 | Dependency updates roll weekly. No system is ever fully secure; if you discover a |
| 135 | vulnerability, please email <strong>security@flndrn.com</strong> rather than disclosing |
| 136 | publicly. |
| 137 | </p> |
| 138 | |
| 139 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]"> |
| 140 | 7. international transfers |
| 141 | </h2> |
| 142 | <p> |
| 143 | Your data is hosted in the EU (Hostinger Frankfurt VPS). Some of our subprocessors are |
| 144 | located outside the EU; transfers to those processors rely on Standard Contractual |
| 145 | Clauses approved by the European Commission, supplemented where appropriate by additional |
| 146 | technical and organisational measures (encryption at rest and in transit, minimisation |
| 147 | of data shared with each processor). The{' '} |
| 148 | <a href="/subprocessors" className="text-[var(--color-text-link)]"> |
| 149 | subprocessors page |
| 150 | </a>{' '} |
| 151 | notes the location of each processor. |
| 152 | </p> |
| 153 | |
| 154 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">8. your rights</h2> |
| 155 | <p>Under GDPR and equivalent laws, you have the right to:</p> |
| 156 | <ul className="mt-2 list-disc pl-6"> |
| 157 | <li> |
| 158 | <strong>access</strong> the personal data we hold about you; |
| 159 | </li> |
| 160 | <li> |
| 161 | <strong>rectify</strong> inaccurate or incomplete data — most fields are user-editable |
| 162 | in the Settings page; |
| 163 | </li> |
| 164 | <li> |
| 165 | <strong>erase</strong> your data — open <a className="text-[var(--color-text-link)]" href="/dashboard/settings">Settings → Danger zone</a> and click <em>delete account</em>. We send a confirmation email the moment the request lands, soft-delete your projects and sole-owner orgs, revoke your API keys, and clear your PII (legal name, address, VAT id, display name, profile image) from our control plane. After the 30-day reversal window the row is hard-deleted and the data is unrecoverable. Multi-owner team orgs survive (you're removed from membership instead). |
| 166 | </li> |
| 167 | <li> |
| 168 | <strong>port</strong> your data — <code>briven export --with-data</code> produces a |
| 169 | portable JSON archive plus a pg_dump of every row; |
| 170 | </li> |
| 171 | <li> |
| 172 | <strong>restrict</strong> or <strong>object</strong> to a specific processing purpose; |
| 173 | </li> |
| 174 | <li> |
| 175 | <strong>withdraw</strong> any consent you previously gave; |
| 176 | </li> |
| 177 | <li> |
| 178 | <strong>complain</strong> to your local data protection authority. The Operator’s |
| 179 | lead supervisory authority is the Belgian Data Protection Authority (Autorité de |
| 180 | protection des données / Gegevensbeschermingsautoriteit). |
| 181 | </li> |
| 182 | </ul> |
| 183 | <p className="mt-3"> |
| 184 | To exercise any of these rights, email <strong>privacy@flndrn.com</strong>. We answer |
| 185 | within 72 hours and resolve within 30 days, extendable by 60 days for complex requests |
| 186 | (we will tell you). |
| 187 | </p> |
| 188 | |
| 189 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">9. cookies</h2> |
| 190 | <p> |
| 191 | briven.tech sets exactly two cookies, both first-party and HTTP-only: |
| 192 | </p> |
| 193 | <ul className="mt-2 list-disc pl-6"> |
| 194 | <li> |
| 195 | <strong>briven.session</strong> — your sign-in session, sent only to briven.tech and |
| 196 | its subdomains. Cleared on sign-out or after 30 days of inactivity. |
| 197 | </li> |
| 198 | <li> |
| 199 | <strong>briven.csrf</strong> — a per-session anti-CSRF token. Cleared with the session. |
| 200 | </li> |
| 201 | </ul> |
| 202 | <p className="mt-3"> |
| 203 | We do not set advertising or analytics cookies. There is no consent banner because there |
| 204 | is nothing to consent to that we don’t already need to operate the Service. |
| 205 | </p> |
| 206 | |
| 207 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">10. children</h2> |
| 208 | <p> |
| 209 | briven is not directed to children under 16 and we do not knowingly collect their data. |
| 210 | If you believe a child has signed up, contact us and we will erase the account. |
| 211 | </p> |
| 212 | |
| 213 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">11. updates</h2> |
| 214 | <p> |
| 215 | Material changes to this policy will be announced on briven.tech/changelog and emailed to |
| 216 | the address on your account at least 30 days before they take effect. The |
| 217 | “last updated” date at the top of this page reflects the most recent version. |
| 218 | </p> |
| 219 | |
| 220 | <h2 className="mt-10 font-mono text-lg text-[var(--color-text)]">12. contact</h2> |
| 221 | <p> |
| 222 | Privacy questions and rights requests: <strong>privacy@flndrn.com</strong>. Until |
| 223 | brand-fronted email is fully wired up, this address forwards to{' '} |
| 224 | <strong>flandriendev@hotmail.com</strong>. We answer within 72 hours. |
| 225 | </p> |
| 226 | </> |
| 227 | ); |
| 228 | } |