Three things. GERMAN AND PORTUGUESE. Marty's call, and the right one: the translation cache only shows who is already here, not who Manson is bringing. Manson knows his audience, so Portuguese goes in even though site data ranks German above it. All five videos now carry English, Italian, French, Spanish, German and Portuguese. Disclaimers checked by hand in the two new languages: "Es wird kein Einkommen garantiert" and "Nenhuma renda e garantida". FINDABILITY. Marty went looking for the multilingual feature on his own training page and could not find it, because the first build leaned on the native CC control and nothing switches on for an English reader. A feature nobody can find is not shipped. Every captioned player now carries a visible row of subtitle chips underneath, named in their own language, with an Off option. Captions still stay off by default for an English reader and still turn themselves on for anyone who already picked a language with the globe button; the chips just make the choice visible instead of buried. THE DEAD BUTTON. The inbox banner's "Add mine" shipped with NO click handler, so it rendered and did absolutely nothing. That is why Marty could not add his address while connected to the right wallet: nothing was listening. It now opens the same optional profile dialog and re-renders when it completes. Tests: gate-e2e 38 (up from 33, and rendering that button is explicitly not the test any more, it has to actually open the dialog), captions-e2e 158 across six languages including the new chip behaviour, clicking one and turning them back off. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
RM Circle Premium — Crypto Team Build Sponsor Router
A small deployable Node/Express app with:
/— evergreen advertising/bridge page/start— dynamic onboarding page with the current team sponsor/admin— password-protected sponsor queue manager- JSON-file persistence suitable for a Docker volume
Core workflow
- Traffic lands on the evergreen bridge page.
- Visitors click Get Started.
/startreads the active sponsor from the server and builds the RM Circle referral link dynamically.- In
/admin, increment a sponsor's direct count as joins are verified. - When a sponsor reaches 2, click Qualified.
- The next waiting sponsor becomes active immediately—no HTML or ad changes required.
Default seeded queue
The seed data reflects the working Crypto Team Build priority list at build time:
- ID 30 — Orlando (active)
- ID 36 — Mad Dog
- ID 35 — Michael Camire
- ID 32 — Melissa
- ID 34 — Janie
You can change, reorder, add, or delete sponsors in /admin.
Local run
cp .env.example .env
# edit .env and set a strong ADMIN_PASSWORD + SESSION_SECRET
set -a && . ./.env && set +a
npm start
Open:
http://localhost:3000/http://localhost:3000/starthttp://localhost:3000/admin
Docker / Coolify
This project includes a zero-dependency Node server, Dockerfile, and docker-compose.yml. No npm package download is required.
Coolify recommendation
- Create a new application from this source/repository.
- Use the Dockerfile or Compose deployment.
- Add environment variables:
ADMIN_PASSWORD— strong unique passwordSESSION_SECRET— long random stringNODE_ENV=productionDATA_DIR=/app/data
- Persist
/app/datausing a volume. - Point your domain/subdomain at port
3000through Coolify's normal proxy/domain configuration. - Open
/admin, sign in, and verify the queue before sending traffic.
Sponsor referral URL
The default base is:
https://app.thermcircle.com?ref=
The app appends the current sponsor ID, for example:
https://app.thermcircle.com?ref=30
Change the base URL at any time in Admin → Public Page Settings without editing code.
Important operational behavior
The app intentionally does not auto-qualify sponsors based on clicks or blockchain activity. A team admin verifies the actual placement and clicks Qualified. This prevents an ad click or abandoned transaction from rotating the sponsor queue incorrectly.
Safety and compliance notes
The public pages include risk language, avoid guaranteed-income claims, and remind users never to disclose a MetaMask Secret Recovery Phrase. The onboarding page points to the official MetaMask website and identifies Polygon Mainnet as chain ID 137 with POL as the native gas token.
This app does not custody crypto, request wallet seed phrases, execute transactions, or store private keys.