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.