xmr.club
EN 中文 ES RU
← back home
the stack · tech behind it

The stack

End-to-end documentation of what runs xmr.club + how to fork it. Companion to /colophon (rationale) — this page is the recipe.

Curator's daily kit

What the curator actually uses end-to-end. Each carries a directory link so you can read the formal grade.

Role Tool Why
Privacy networkMullvad VPNAccount-ID only signup, cash + XMR accepted, audited.
XMR walletFeatherDesktop XMR wallet — fast sync, hardware wallet support, Tor-aware.
XMR mobileCake WalletMobile XMR with built-in non-KYC exchange.
BrowserTor BrowserDefault for any signup flow we audit.
Anonymous emailProton MailLight-KYC tier — email required for upstream signups; we burn aliases.
Swapkyc.rip / ghost1ST PARTY — two-hop XMR-detour aggregator, no markup.
SIM / eSIMSilent.LinkXMR-paid eSIM with no identity tied to data line.
Anonymous hostingNjallaPseudonymous VPS + domain, crypto pay.
SearchSearXNGSelf-hostable metasearch front-end.

Each tool here is graded under /methodology — sponsorship doesn't move grade, only placement. Curator does not affiliate-stack on these.


Runtime

Frontend

Data flow

  1. Curator edits content/<category>.json in the source repo.
  2. apps/web/scripts/seed-d1.mjs pushes the JSON into D1 via INSERT OR REPLACE. Idempotent. Status field on each provider supports active / draft / inactive.
  3. Worker queries D1 at request time. Edge cache via Cache-Control. 14 categories × ~15 providers each = ~210 active rows currently.
  4. Daily cron probes every provider's clearnet URL + Onion-Location header. Results land in provider_probe — surfaced on /status, /onion-audit, and the per-provider audit trail.

Open surfaces

Fork instructions

  1. Clone the source repo. Install Node 22+ and pnpm.
  2. wrangler d1 create kyc-rip-directory, update wrangler.jsonc binding id, run schema/migrate.
  3. node scripts/seed-d1.mjs to push your content/*.json into D1.
  4. pnpm build && wrangler deploy. Done — your fork is up.

Bun + SQLite + Caddy works as an offline alternative. SSR-first means the edge isn't load-bearing — it's a latency optimisation. See /colophon for the rationale and /heroes for the upstream projects this stack rests on.