Privacy

What's stored

  • Reading state (scroll position, saved posts, series progress). AES-GCM ciphertext in Cloudflare KV, keyed by your ID. Plaintext stays in localStorage.
  • Comments. Display name, text, ID, signature, and timestamps, in Cloudflare D1. Deletion is soft; email me for a hard delete.
  • Edit suggestions. Name, text, post slug, ID, and timestamp, in D1. Email me to delete.
  • Record log. Per comment and edit suggestion: a hash, signature, public key, and timestamp, in D1.
  • Rate-limit counters. Per-ID request counts in D1, expiring after one hour.
  • Used sign-in challenges. Random nonces in D1, rejected on reuse, expiring after two minutes.

Identity

On first visit your browser generates a non-extractable ECDSA P-256 keypair and AES-256-GCM key, held in IndexedDB. Your ID is SHA-256 of the public key. Clearing site data yields a new, unlinked ID.

Not collected

Analytics, first-party cookies, and your IP. Cloudflare's edge may set its own cookies and log your IP.

Verify

/privacy/my-data/ audits your record log in your browser.

Contact

ethan@gtfo.dev

Keyboard Shortcuts

Key Action
j Next section
k Previous section
n Next post
p Previous post
/ Open search
Cmd + K Command palette
Esc Close dialog / popover
? Show this help