What we collect
If you sign in. Your email address (from Google or from the code we email you), and, if you use Google, the display name and profile picture Google provides. Your votes and comments are linked to that account.
If you vote anonymously. To limit everyone to one vote per day without an account, your browser computes a fingerprint using the open-source FingerprintJS library, and the server sees your IP address. Both are stored only as one-way hashes; the raw fingerprint and IP address are not written to the database. The server also sets a signed, httpOnly cookie that remembers which vote is yours for the rest of the UTC day, so you can change it. It expires at the next UTC midnight.
What you post. Your score, an optional comment (signed-in users only) and an optional screenshot. Comments and scores are public and shown in the feed with your display name or avatar.
Abuse prevention. Every vote is checked by Cloudflare Turnstile (an invisible bot check) and rate-limited by IP address through Upstash Redis. Those counters are keyed by your IP address and expire within about a minute; signed-in actions such as comment up-votes are limited per account instead.
Preferences. Your light/dark theme choice is kept in your browser’s local storage and never sent to us.
How we use it
- To sign you in and keep you signed in (session cookies).
- To count votes, compute the daily score and show the history.
- To display comments and screenshots in the public feed.
- To stop spam, bots and multiple voting.
We do not run advertising, sell data, or build profiles. There is no analytics tracker on the site.
Cookies
- Session cookies from Supabase Auth, set when you sign in, so you stay signed in.
- One anonymous-vote cookie (
anon_vote), signed andhttpOnly, set when you vote without an account. Gone at the next UTC midnight.
Nothing else. No third-party or advertising cookies.
How long we keep it
- Votes and comments: indefinitely, as part of the public record. Each day’s score is finalized at 00:00 UTC.
- Screenshots: stored with the comment they were attached to and removed when you replace or delete that comment (deleting means submitting your vote with an empty comment), or when you ask us to delete your account. Uploads that never got attached to a comment are cleaned up automatically.
- Rate-limit counters: roughly one minute.
- Account data: until you ask us to delete it.
Who processes it
- Supabase — database, authentication and screenshot storage (EU, Ireland region).
- Vercel — hosting and serverless functions.
- Upstash — Redis, used only for rate limiting.
- Cloudflare Turnstile — bot protection on the vote form.
- Google — only if you choose to sign in with Google.
Your rights
You can ask us to delete your account and everything linked to it, or to export it, and we will. Anonymous votes cannot be deleted on request because we hold nothing that ties them to you; that is the point of hashing.
Contact
Open an issue or write to the maintainer on GitHub. This policy changes when the site changes; the date at the top is the one that counts.