Privacy
The short version
No advertising, no cross-site tracking, no profiling. This site stores small amounts of data in your browser to make interactive features work (like remembering which tracks you fired in the Jukebox). Everything stored is functional — we never use it to identify or track you. You can clear it at any time via your browser settings.
Analytics
This site uses two Vercel services, both served as first-party scripts from this domain — no third-party requests leave your browser.
- Vercel Web Analytics — counts page views and tells us where traffic comes from (referrer), what country visitors are in, and what device and browser they use. To avoid counting the same visitor twice in a day, Vercel generates a short-lived hash from your IP address and user-agent string. This hash is discarded after 24 hours, is never exposed to us, and cannot be used to track you across sites. No cookies are set, and the dashboard only shows aggregated totals — we cannot see individual visitors.
- Vercel Speed Insights — measures page load times and Web Vitals (LCP, CLS, etc.) so we can spot performance issues. No visitor identification of any kind.
Neither service sets cookies, builds user profiles, or shares data with third parties. Both are governed by Vercel's analytics privacy policy.
Browser storage
Interactive features on this site use your browser's local storage and session storage to remember your choices. Under EU ePrivacy rules, this storage is exempt from consent requirements because it is strictly necessary for services you explicitly request. No personal data is stored, and none of it leaves your browser.
Local storage (persists until you clear it)
- Jukebox fire reactions — when you fire a track, we remember that locally so the UI reflects your choice on return. Stored as a list of track IDs under the key
jukebox-fired-tracks. - Blog & page reactions — when you react to a blog post or page, we store which reactions you gave to prevent duplicates. Stored per page under keys like
reactions:/blog/…. - Feature request votes — if you upvote a feature request, we store the request ID to prevent duplicate votes. Stored under
request-votes. - Boot animation — a single flag (
dg:booted) that skips the landing page intro animation on return visits. Also skipped automatically if your system has prefers-reduced-motion enabled.
Session storage (cleared when you close the tab)
- Play count deduplication — prevents the same track play from being counted multiple times within a single browsing session.
Cookies
The public-facing site sets no cookies. An encrypted, HTTP-only session cookie (dg-admin-session) is used solely for admin authentication via WebAuthn passkeys. It is never set for regular visitors.
You can clear all local and session storage at any time through your browser's developer tools or settings. This will reset your fire reactions, votes, and animation preference — nothing else on the site will break.
Data hosting & international processing
Application data (Jukebox tracks, reactions, guestbook entries) is stored in Supabase, hosted in Ireland (EU). This data does not leave the EEA.
The site is served by Vercel, which routes requests to the nearest available region — typically Dublin for European visitors. In rare cases (failover, load balancing), a request may be processed in a region outside the EEA. Vercel operates under a Data Processing Agreement with Standard Contractual Clauses (SCCs) as the legal mechanism for these transfers.
Vercel also keeps standard server logs that may include IP addresses. These are governed by Vercel's privacy policy linked above.
External fonts
Some pages load fonts from Google Fonts, which means your browser makes requests to Google's servers to fetch font files. Google may log these requests. See the Google Fonts privacy FAQ for details.
Contact
Questions about this policy? Reach out via GitHub.
Last updated: March 2026