Skip to content

Repository files navigation

doxxme

An opt-in parody marketplace where people choose what to publish, data brokers buy consented data, and the people who made it get paid.

Current product

  • Anonymous visitors can explore the realtime globe and browse public profiles for free.
  • Demo bots make the directory feel alive and are clearly labeled as fictional.
  • Signed-in users authenticate with Google through Clerk and receive a public profile and handle.
  • Users can connect browser location and Spotify current playback from Settings.
  • Google profile photos can be hidden in favor of the doxxme placeholder.
  • Public profiles show only data supplied by those connections: live location, device type, Spotify playback, and an illustrative monthly payout capped around $15.
  • Real and demo profiles share the same layout, map treatment, navigation, sharing controls, and site styling.
  • Location cards use OpenStreetMap tiles and link to their exact coordinates on OpenStreetMap.
  • The app uses Convex for users, consent, public presence, provider connections, and realtime updates.

Discord, the browser extension, and the broker checkout interface are not part of the current product.

Stack

React + Vite + Clerk
  ├─ public globe and profile directory
  ├─ Google authentication and account controls
  ├─ browser geolocation
  └─ Spotify OAuth and current playback
             │
             ▼
Convex
  ├─ users and public profiles
  ├─ versioned consent and live presence
  ├─ Spotify connections and scheduled sync
  └─ historical marketplace and payout records

The production runtime uses Convex. Mock adapters are retained for tests and fictional demo profiles.

Local development

Requirements: Node 20.19+ or 22.12+, pnpm 11, a Clerk application, and a Convex development deployment.

pnpm install --frozen-lockfile
cp .env.example .env.local
npx convex dev
pnpm dev

Run the frontend and Convex together with:

pnpm dev:all

Public browser variables belong in .env.local:

CONVEX_DEPLOYMENT=dev:your-deployment
VITE_CONVEX_URL=https://your-deployment.convex.cloud
VITE_CONVEX_SITE_URL=https://your-deployment.convex.site
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
VITE_SOLANA_RPC_URL=https://api.devnet.solana.com

Create a Clerk JWT template named convex, then configure the server-only Convex environment:

npx convex env set CLERK_JWT_ISSUER_DOMAIN https://your-instance.clerk.accounts.dev
npx convex env set APP_URL http://localhost:5173
npx convex env set SPOTIFY_CLIENT_ID ...
npx convex env set SPOTIFY_CLIENT_SECRET ...
npx convex env set SOLANA_RPC_URL https://api.devnet.solana.com
npx convex env set PLATFORM_TREASURY_WALLET YOUR_DEVNET_TREASURY_ADDRESS
npx convex env set ALLOW_DEV_MOCKS false

Register the Spotify callback as:

https://your-deployment.convex.site/oauth/spotify/callback

Never place OAuth secrets, Clerk secrets, wallet keys, seed phrases, or private RPC credentials in a VITE_* variable or commit them.

Consent model

  • Location and Spotify are off until the user explicitly connects or enables them.
  • Turning live sharing off removes current public presence.
  • Exact location consent covers latitude and longitude.
  • Spotify is current-state-only and is not marketplace eligible.
  • Location history sales remain separate from live sharing and require their own acknowledgement.
  • Paid, time-limited grants are not revoked retroactively when future sales are disabled.

Verification

pnpm lint
pnpm typecheck
pnpm test
pnpm build

Vercel serves the single-page app routes through vercel.json. Convex functions are deployed separately with:

npx convex deploy

About

Data brokers can't doxx you if you sell the data yourself! Visit doxxme.net to share your personal information with the world for profit.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages