Privacy
Checkable here too.
This site collects two things: an email address if you join the waitlist, and first-party visit counts. Both are described below the way the rest of this site describes things — with the claim, and then the source file that implements it.
The waitlist stores what you type
Joining the waitlist stores your email address, the referral code we mint for you, the code of whoever invited you, and when you joined. It is used to send you one email when your wave opens, and to order the queue. It is not sold, shared, or used for anything else. To be removed, reply to any email we send you and say so.
lib/waitlist.ts
Visits are counted, visitors are not tracked
The site records first-party, server-side analytics: the page you viewed, the referrer, your browser and screen size as reported by your browser, coarse geography from the CDN, and timing. The visitor identifier is a hash that folds in the calendar date, so it can answer “how many distinct people today” and cannot follow anyone across days. The raw IP address is never stored.
lib/visits.ts
Opt-out is honoured before anything is recorded
If your browser sends Global Privacy Control or Do Not Track, no visit row is written at all — no hash, no path, nothing. The check runs before any data is derived.
lib/visits.ts · trackingOptedOut()
No third parties, enforced at runtime
There are no third-party scripts, no advertising or analytics trackers, no remote fonts or images, and no analytics cookies. The Content-Security-Policy this site ships blocks the browser from contacting any outside origin, so this is a property you can verify in your devtools, not a promise.
next.config.ts
No fingerprinting
Nothing is collected that identifies a person across sites — no canvas, WebGL, font, or audio fingerprints. Counting visits is a different activity from identifying visitors, and this site only does the first.
supabase/migrations/0002_visits.sql
One CSP claim you can check without any repository access: open your browser’s network panel on any page here and look for a request that leaves this origin. There isn’t one. Back to the start