diff --git a/public/chat.js b/public/chat.js index fa5491d..aea0eaf 100644 --- a/public/chat.js +++ b/public/chat.js @@ -52,6 +52,8 @@ a:()=>`All four training videos are on the Training page: (1) How the team build works, (2) Create your MetaMask wallet, (3) Funding your wallet, (4) Buying the Premium position. Watch them in order.`}, {k:['seed phrase','secret recovery','recovery phrase','private key','12 words','passphrase'], a:()=>`Never share your Secret Recovery Phrase or private keys with anyone โ€” not this site, not a sponsor, not "support". Anyone asking for it is trying to steal your funds. MetaMask will never ask for it either, except when you restore a wallet yourself.`}, + {k:['promote','promo','promo tools','tools','swipe','swipes','email swipe','banners','marketing','share this','invite people','video clips','how do i share'], + a:()=>`Grab share-ready promo tools at rmcircle.team/tools: the promo videos (tap Copy link to share), email & message swipes you can personalize, and a builder for your personal invite link. Banner graphics can be generated on request. Keep it honest โ€” point people to the videos and the contract review, never promise income.`}, {k:['telegram','group','chat','human','support','contact','talk','someone','admin','help me'], a:()=>`For live help from the team, join the Telegram group: ${tgLink()}. Tell them where you're stuck and someone will walk you through it.`}, {k:['after join','next','what happens','confirmed','joined','i bought','i am in'], diff --git a/public/styles.css b/public/styles.css index fce2c4a..bcafece 100644 --- a/public/styles.css +++ b/public/styles.css @@ -59,6 +59,11 @@ a{color:inherit}.wrap{width:min(1160px,calc(100% - 32px));margin:auto}.nav{heigh .pp-body strong{font-size:15px} .pp-meta{color:var(--muted);font-size:12.5px;margin-top:3px} .pp-gen{color:var(--gold);font-weight:800;background:rgba(243,190,67,.12);border:1px solid rgba(243,190,67,.35);border-radius:6px;padding:1px 7px} +.tool-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px 22px;margin-bottom:18px;box-shadow:var(--shadow)} +.tool-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap} +.tool-head h3{font-size:24px;margin:4px 0 4px}.tool-head p{color:var(--muted);font-size:15px;margin:0;line-height:1.5;max-width:640px} +.swipe{white-space:pre-wrap;background:#071827;border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-top:12px;color:var(--text);font-size:14.5px;line-height:1.55;font-family:inherit;overflow-x:auto} +.share-link{background:#071827;border:1px solid var(--line);border-radius:10px;padding:9px 12px;color:var(--gold);font-size:14px;flex:1;min-width:200px;overflow:auto;white-space:nowrap} .pp-passed{color:#f2c768;font-size:12px;margin-top:3px} .pp-verify{flex:0 0 auto;font-size:13px;color:var(--teal);text-decoration:none;border:1px solid rgba(78,214,203,.35);border-radius:9px;padding:7px 10px;white-space:nowrap} .pp-verify:hover{background:rgba(78,214,203,.1)} diff --git a/public/tools.html b/public/tools.html new file mode 100644 index 0000000..2da6662 --- /dev/null +++ b/public/tools.html @@ -0,0 +1,61 @@ +Promo Tools | Crypto Team Build + + + + +
+
+
For the team

Promo Tools.

Everything you need to invite people to the team โ€” share-ready videos, email swipes, and your personal invite link. Grab what you want, personalize it, and send. Keep it honest: these link to educational content, not income promises.

+ +

๐ŸŽฌ Video clips

+

Send these on WhatsApp, Telegram, text, or social. Tap Copy link to share, or right-click the video to save it.

+ +
Flagship promo ยท ~66s

The RM Circle โ€” team build overview

Scroll of the live site + captions + the 8-level pay ladder. Best all-round invite clip.

+ +
Clean promo ยท ~66s

The RM Circle โ€” designed explainer

Minimal, premium motion graphics version. Great where a calmer, "fintech" feel fits better.

+ +
Teaching ยท ~3 min

How payments work โ€” direct vs pass-ups

Send this to team members confused about payouts. Walks a real on-chain example, generation by generation.

+ +

๐Ÿ”— Your invite link

+

Enter your RM Circle ID to build your personal invite page link โ€” it shows a live preview when shared and points people to the current join steps.

+
โ†’

Tip: always confirm the current sponsor on the Getting Started page before someone buys โ€” placements rotate.

+ +

โœ‰๏ธ Email & message swipes

+

Copy, swap [name] and [your link], and send. Written to inform, not to promise โ€” keep it that way.

+ +
Swipe 1 ยท the soft intro

"The team build I mentioned"

Subject: The team build I mentioned
+
+Hey [name] โ€” remember the crypto team build I told you about? I finally have something that explains it in about a minute, including why it runs on a smart contract you can verify yourself, and how the team actually gets paid. No hype, just the mechanics: [your link]
+
+Take a look and tell me what you think. โ€” [you]
+ +
Swipe 2 ยท how you get paid

"The part everyone asks about"

Subject: How the payouts actually work
+
+A lot of people ask me how this pays out. Short version โ€” two ways: a reward when someone joins on your link, and payments as your team upgrades below you, matched by generation. This short video breaks it down with a real, on-chain example anyone can check: [your link]
+
+Every payment is public and verifiable. If it makes sense to you, let's talk. โ€” [you]
+ +
Swipe 3 ยท the invite

"Ready when you are"

Subject: Want in on the team build?
+
+If you've been thinking it over โ€” here's my invite link: [your link]. It shows the current team placement and walks you through joining. Watch the short training first, and I'm here for any questions.
+
+No pressure and no promises โ€” just the tools to decide for yourself. Crypto carries risk, so only ever use funds you can afford to lose. โ€” [you]
+ +
๐Ÿ–ผ๏ธ Banners & social graphics โ€” coming. Ask your sponsor: a matched banner kit (social 1200ร—630, square 1080ร—1080, story 1080ร—1920, and display sizes) can be generated on request.
+
Keep it clean: never promise income or guaranteed returns. Point people to the videos, the contract review, and the disclaimers โ€” let them decide. Misleading claims hurt the whole team.
+
+
+ + diff --git a/public/tools.js b/public/tools.js new file mode 100644 index 0000000..9b5dc33 --- /dev/null +++ b/public/tools.js @@ -0,0 +1,17 @@ +(function(){ + function copy(text, btn){ + if(!text) return; + navigator.clipboard.writeText(text).then(()=>{ + const old=btn.dataset.label||btn.textContent; btn.dataset.label=old; + btn.textContent='Copied โœ“'; btn.disabled=true; + setTimeout(()=>{btn.textContent=old; btn.disabled=false;},1500); + }).catch(()=>{ btn.textContent='Copy failed'; setTimeout(()=>{btn.textContent=btn.dataset.label||'Copy';},1500); }); + } + document.querySelectorAll('.copy-btn').forEach(b=>b.addEventListener('click',()=>copy(b.getAttribute('data-copy'),b))); + + const idIn=document.getElementById('toolId'), link=document.getElementById('shareLink'), copyShare=document.getElementById('copyShare'); + function url(){ const id=(idIn.value||'').replace(/\D/g,'').slice(0,15); return id?`https://rmcircle.team/join/${id}`:''; } + function render(){ link.textContent=url()||'https://rmcircle.team/join/โ€ฆ'; } + if(idIn){ idIn.addEventListener('input',render); render(); } + if(copyShare){ copyShare.addEventListener('click',()=>{ const u=url(); if(!u){ idIn.focus(); return; } copy(u,copyShare); }); } +})(); diff --git a/public/training.html b/public/training.html index fa088b2..273e10e 100644 --- a/public/training.html +++ b/public/training.html @@ -16,6 +16,8 @@
Video 4 ยท 5 min

Buying the Premium position

Connect to the RM Circle dApp with the current team sponsor and complete your Premium entry.

+
Video 5 ยท 3 min ยท payments explained

Why you're not getting paid yet โ€” direct rewards vs pass-ups

The #1 thing that confuses new members: how direct payments differ from upgrade pass-ups, which generation gets paid, and in what order. Watch this the moment you wonder "where's my payment?" โ€” it walks a real, on-chain example.

+
Must-know ยท 3 min read

Understanding spillover โ€” and getting paid instead of passed

What spillover is. When a sponsor already has both matrix slots filled, the smart contract places the next new member in the first open slot further down the team โ€” left to right, generation by generation. That member "spills over" into someone else's matrix. If your upline is recruiting, people can land under you that you never spoke to.

Why you can have people under you and still not be qualified. Qualification counts your directs โ€” people who joined using your ID โ€” not who sits in your matrix. Spillover fills your structure, but only your own two recruits qualify your position. Your Member Dashboard tags every spillover placement so you can see the difference at a glance.

diff --git a/public/training/how-payments-work-poster.jpg b/public/training/how-payments-work-poster.jpg new file mode 100644 index 0000000..91eb635 Binary files /dev/null and b/public/training/how-payments-work-poster.jpg differ diff --git a/server.js b/server.js index a3f4ab1..908a465 100644 --- a/server.js +++ b/server.js @@ -553,7 +553,7 @@ const server=http.createServer(async(req,res)=>{ if((mj=pathname.match(/^\/join\/(\d{1,15})$/)))return serveMemberPage(req,res,path.join(PUBLIC_DIR,'join.html'),'join',mj[1]); } let file; - if(pathname==='/')file=path.join(PUBLIC_DIR,'index.html');else if(pathname==='/start'||pathname==='/start/')file=path.join(PUBLIC_DIR,'start.html');else if(pathname==='/training'||pathname==='/training/')file=path.join(PUBLIC_DIR,'training.html');else if(pathname==='/admin'||pathname==='/admin/')file=path.join(PUBLIC_DIR,'admin.html');else if(pathname==='/my'||pathname==='/my/'||/^\/my\/\d{1,15}$/.test(pathname))file=path.join(PUBLIC_DIR,'my.html');else if(pathname==='/contract'||pathname==='/contract/')file=path.join(PUBLIC_DIR,'contract.html');else if(pathname==='/disclaimer'||pathname==='/disclaimer/')file=path.join(PUBLIC_DIR,'disclaimer.html');else if(pathname==='/how-pay-works'||pathname==='/how-pay-works/')file=path.join(PUBLIC_DIR,'how-pay-works.html');else if(/^\/join\/\d{1,15}$/.test(pathname))file=path.join(PUBLIC_DIR,'join.html');else if(pathname==='/join'||pathname==='/join/'){res.writeHead(302,{Location:'/start'});return res.end();}else{ + if(pathname==='/')file=path.join(PUBLIC_DIR,'index.html');else if(pathname==='/start'||pathname==='/start/')file=path.join(PUBLIC_DIR,'start.html');else if(pathname==='/training'||pathname==='/training/')file=path.join(PUBLIC_DIR,'training.html');else if(pathname==='/admin'||pathname==='/admin/')file=path.join(PUBLIC_DIR,'admin.html');else if(pathname==='/my'||pathname==='/my/'||/^\/my\/\d{1,15}$/.test(pathname))file=path.join(PUBLIC_DIR,'my.html');else if(pathname==='/contract'||pathname==='/contract/')file=path.join(PUBLIC_DIR,'contract.html');else if(pathname==='/disclaimer'||pathname==='/disclaimer/')file=path.join(PUBLIC_DIR,'disclaimer.html');else if(pathname==='/how-pay-works'||pathname==='/how-pay-works/')file=path.join(PUBLIC_DIR,'how-pay-works.html');else if(pathname==='/tools'||pathname==='/tools/')file=path.join(PUBLIC_DIR,'tools.html');else if(/^\/join\/\d{1,15}$/.test(pathname))file=path.join(PUBLIC_DIR,'join.html');else if(pathname==='/join'||pathname==='/join/'){res.writeHead(302,{Location:'/start'});return res.end();}else{ const safe=path.normalize(pathname).replace(/^([.][.][/\\])+/, '').replace(/^[/\\]+/,'');file=path.join(PUBLIC_DIR,safe);if(!file.startsWith(PUBLIC_DIR))file=''; } if(file&&staticFile(req,res,file))return;return staticFile(req,res,path.join(PUBLIC_DIR,'404.html'),404);