TRANSPARENCY MODE: ALL DATA ON THIS PAGE IS PUBLIC
Full Data Disclosure
Here is the exact database schema we use. Every field, every column — nothing hidden. This is the complete picture of what we store per page view.
TABLE: page_views
| COLUMN | TYPE | WHAT IT IS |
|---|---|---|
| id | INTEGER | Auto-increment primary key |
| path | TEXT | URL pathname only — query params & fragments stripped via new URL().pathname |
| referrer | TEXT? | Referring hostname only (e.g. “google.com”) — full URL discarded, self-referrals filtered |
| browser | TEXT? | One of 6 families: Chrome, Firefox, Safari, Edge, Opera, Other — raw user-agent never stored |
| visitor_hash | TEXT | SHA-256 of (IP + daily-rotating salt), truncated to 16 chars — rotates every 24h, not reversible |
| created_at | TEXT | UTC timestamp of the visit |
HOW WE PROCESS
- • IP address → hashed with SHA-256 using a server secret + today's date as salt → first 16 hex chars stored as visitor_hash → raw IP immediately discarded
- • User-Agent → regex-classified into one of 6 browser families → raw string never touches the database
- • Path → parsed through
new URL(path).pathname→ query params like?token=secretare stripped - • Referrer → only
new URL(ref).hostnameis kept → full URLs discarded → visits from our own domain filtered out - • Bots → detected via user-agent regex, excluded from all data
WHAT WE NEVER STORE
- • Raw IP addresses
- • Raw user-agent strings
- • Cookies, localStorage, or sessionStorage
- • Screen size, resolution, or viewport
- • Device model, OS version, or GPU info
- • Canvas/WebGL/audio fingerprints
- • Mouse movements, scroll depth, or click maps
- • Form inputs or page content
- • Any cross-site or cross-session identifier
- • Any PII whatsoever
API ENDPOINTS
POST /api/track — records a page view. Rate limited to 60/min per visitor. Always returns {ok:true} regardless of success or failure — zero information leakage.
GET /api/analytics?range=1m — returns only aggregated counts (COUNT, COUNT DISTINCT, GROUP BY). No individual page_view rows ever leave the database. Cached for 60 seconds. Rate limited to 120/min globally.
All analytics are self-hosted in our own Turso/SQLite database. No data leaves our infrastructure. No Google Analytics, no Plausible, no Fathom, no Vercel Analytics — nothing. We wrote the tracking code ourselves and you're looking at every byte we collect. The “unique visitors” count overcounts because the hash rotates daily — we consider that a privacy feature, not a bug. All source code is public.