This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What You Reveal is a client-side browser fingerprinting and privacy analysis tool built with Vue 3 + Vite. It collects browser, hardware, network, and privacy data to educate users about their digital footprint. All analysis runs locally in the browser — no server-side tracking.
bun install # Install dependencies
bun run dev # Start Vite dev server
bun run build # Production build
bun run preview # Preview production build locally
bun run lint # Check code style (ESLint)
bun run lint:fix # Auto-fix lint issuesNo test framework is configured.
The app follows a parallel async data collection pattern:
App.vueis the orchestrator — itsonMounted()triggers 16+ collection functions in parallel- Each module in
src/modules/exports an async function that returns an object of key-value data points - Results update Vue reactive refs, which conditionally render
TerminalCardcomponents - Network module (
network.js) supports incremental updates via callback
fingerprint/— Canvas, audio, emoji, voice, WebGL, font, and Intl API fingerprinting; bot/automation detectionnetwork/— IP detection, GeoIP (via ipapi.co), latency measurement, connection infoprivacy/— DNT, GPC, ad blocker detection, WebRTC leak detection, Tor detectionsystem/— Navigator APIs, hardware (CPU/GPU/battery/memory), screen, client hints, media devices/codecs, permissions, clipboard
Module functions return objects where values can be:
- Simple strings/numbers
- Objects with
{ value, url, warning, action, actionLabel, element }—urltypically links to MDN docs
App.vue (data collection orchestrator, 15 card layout)
├── TheHeader.vue (ASCII logo, download/GitHub controls)
├── TerminalCard.vue × 15 (terminal-styled card wrapper, hover scramble animation)
│ └── TerminalDataGrid.vue (renders key-value data pairs with optional links/actions)
├── PrivacyTipsPopup.vue (modal)
└── ScorePhilosophyPopup.vue (modal)
src/utils/crypto.js— SHA-256 hashing and cyrb53 mixing hash for fingerprint generation
Terminal/retro aesthetic using CSS custom properties defined in src/assets/styles/variables.css. Monospace font (JetBrains Mono), dark theme. Two-column responsive grid layout.
Deployed on Vercel. Config in vercel.json includes security headers (CSP, X-Frame-Options), SPA routing, and 1-year static asset caching. Build uses bun run build.
- Vue 3 Composition API with
<script setup>syntax - Plain JavaScript (TypeScript configured but not widely used in source)
- ESLint flat config (v9+) with Vue and TypeScript plugins
- Unused variables allowed with underscore prefix (
_var) - Browser API globals extensively defined in ESLint config