Draft: under review

Privacy and cookies

Last updated

We store as little as we can. You can browse all of Willet without an account. There is no advertising and no outside analytics or tracking service. We count visits ourselves, on our own database, without cookies and without IP addresses (see what we count).

This page lists everything we keep, why, and how to get it deleted.

If you sign in with GitHub

Your profile here holds:

  • Your GitHub username and numeric GitHub id.
  • Your GitHub display name and a link to your GitHub avatar.
  • The date your GitHub account was created, read from GitHub when you sign in. New accounts have to wait before they can comment.
  • Whether you’re the editor.

Sign-in runs on Supabase Auth. When you sign in, GitHub shares your email address with it, and it keeps that address with your login, along with when you signed in. We never copy your email into your profile, show it, or use it.

What you write

  • Comments: the text, when you posted it, and when you last edited it. Your username, display name, and avatar show next to it. When you delete a comment, its text is removed; an empty record stays so the posting limits keep working. We also log when you edit (not what), and clear that log after a day.
  • Comment reports: the reason you picked, and either your account (if you’re signed in) or a scrambled code made from your connection (see rate limits below), so one person can’t report the same comment twice. It’s kept with the report. If you delete your account, your name comes off your reports; the reports themselves stay, anonymous.
  • Removal requests and project reports: the reason, any details, and a contact handle or link if you give one. Email addresses are refused in these forms. If you’re signed in, we keep your GitHub username and whether you own the repo.
  • Suggestions: the link, your note, and the search that led you there, if any.
  • Newsletter: the email address you type, whether it’s confirmed, the page you signed up on, and when you agreed. If you’re signed in, the address is linked to your account so you can unsubscribe here. We don’t send any emails yet; when we do, each one carries an unsubscribe link, and we keep only a scrambled copy of that link’s code (a one-way hash). This is the only email address we ever use.

What we keep without asking

  • Searches: the words you searched (lowercased), how many results came back, the top result, and when. Never who searched. It shows the editor what people look for and can’t find.
  • Rate-limit counters: to stop spam, each form and search counts requests per visitor. A visitor is a scrambled code made from the connection’s IP address, a secret, and the date (a one-way hash). It changes every day and can’t be turned back into an IP address. Each counter covers an hour at most, and it’s deleted after an hour. The visit counter below uses it the same way.
  • Posts about projects: public posts on Hacker News, Reddit, and Bluesky that link to a listed project: the link, the title or a short excerpt, the author’s public handle, the date, and the points and comment counts.

What we count

To see which pages and projects people find useful, our own server counts these, and nothing else:

  • Page views: the page’s address (without anything after the “?”, except Discover’s filters, like a category or sort), the domain of the site that linked you here (for example news.ycombinator.com, never the full link), and the time.
  • Clicks out: when you follow a project’s “View on GitHub” or “Website” link, which project and which link; and clicks on “Join the Discord”.
  • Stars: that a project was starred through our Star button (not by whom).
  • Searches, sign-ups, and comments: counted from what we already keep (above); nothing more is stored about them.

No cookies, no browser storage, no IP addresses, no device or browser details, and nothing that tells one visitor from another: each count is just the event. To stop spam, the counter uses the same short-lived rate-limit code as our forms (above), and never stores it with the count. If your browser sends Do Not Track or Global Privacy Control, we count nothing at all. Obvious bots aren’t counted either. The individual events are deleted after 30 days; we keep only daily totals (views per page, per linking site, and per project, and the day’s clicks, stars, searches, sign-ups, and comments). Only the editor sees them.

What we never store

  • IP addresses. Our database has no place for them.
  • Your GitHub password. You type it on GitHub, never here.
  • Your GitHub key for the Star button. It stays encrypted in your browser (see cookies).
  • Anyone’s email from GitHub, beyond what sign-in keeps as described above.

Cookies and browser storage

Willet sets no tracking or advertising cookies, and no cookies at all until you sign in or use the Star button. Counting visits uses none. These are all of them:

NameWhat it’s forHow long
sb-goonxklhxrafudvpnsdp-auth-tokenKeeps you signed in. Set when you sign in, removed when you sign out. A long session can be split into .0, .1, and so on.Up to 400 days, renewed while you use the site
sb-goonxklhxrafudvpnsdp-auth-token-code-verifierA one-time check that the GitHub sign-in you finish is the one you started.Removed when sign-in finishes
willet_gh_starYour GitHub key for the Star button, encrypted. Only our server can read it.Until GitHub's key expires (about 6 months) or you disconnect
willet_gh_star_onHolds just “1”, so the page knows to show whether you starred a repo.Same as the key above
willet_gh_star_oauthA one-time check while GitHub asks you to authorize the Star button.10 minutes

One thing is kept in your browser’s local storage, not in a cookie:

NameWhat it’s forHow long
willet:newsletter-signed-upHolds just “1” after you sign up for the newsletter in this browser, so the form isn’t shown again. Never your address.Until you clear your browser data

Fonts and project images are served from our own site. The small avatars next to comments, and yours in the header when you’re signed in, load straight from GitHub, so GitHub sees those image requests.

Unsubscribe or delete your data

Newsletter: if you signed up while signed in, use Unsubscribe in the newsletter block. Every newsletter email has an unsubscribe link: one click on the page it opens, and the emails stop (mail apps that offer “Unsubscribe” next to the sender use the same link, without the page). To have your address removed completely, write to [contact address to be added].

Star button: use “Disconnect GitHub” in its menu. That revokes the key at GitHub and clears the cookies. You can also revoke it in your GitHub settings under Applications.

Your account: signed in, choose “Delete account” in your account menu (top right), then confirm on your account page. It deletes, right away, your profile and your sign-in (with the email address it kept), every comment you posted, your name on comments you reported, and the link between your account and the newsletter (that subscription is unsubscribed). If this browser has the Star button connected, it revokes that key at GitHub and clears its cookies. Your stars on GitHub stay. The editor’s account can’t be deleted this way. For anything else, write to [contact address to be added].