From d936093c56d974e3ec8a2f4c3635fa1ae1fd2c16 Mon Sep 17 00:00:00 2001 From: martbost Date: Fri, 21 Aug 2026 12:08:05 -0500 Subject: [PATCH] Add the printable 48-Hour Fast Start sheet /fast-start: one-page checklist that personalizes with the member's ID, invite link, and a scannable QR of /join/ when opened from their dashboard (or with ?id=). Print stylesheet flips it to clean black-on-white letter format; floating translate/chat widgets are now excluded from printing on every page. Dashboard share card links to it; chatbot + AI prompt synced. --- public/chat.js | 2 + public/fast-start.html | 102 +++++++++++++++++++++++++++++++++++++++++ public/fast-start.js | 25 ++++++++++ public/my.html | 2 +- public/my.js | 1 + public/translate.js | 3 +- server.js | 4 +- 7 files changed, 135 insertions(+), 4 deletions(-) create mode 100644 public/fast-start.html create mode 100644 public/fast-start.js diff --git a/public/chat.js b/public/chat.js index 25ce28e..00a2d56 100644 --- a/public/chat.js +++ b/public/chat.js @@ -34,6 +34,8 @@ a:()=>`Great question — and we checked it on-chain, not just in theory. The contract needs no one to keep it running: joins, upgrades, placement and every payout are fully automatic — no button anyone has to press, no expiry. If the creators walked away, lost their keys, or vanished, member payments keep flowing exactly as coded. We also verified that the founder, development and fee wallets are ordinary wallets, not programs — an ordinary wallet always accepts an incoming payment even if its key is lost forever, so a dead admin wallet can't jam a single member payment (at worst the project's own fee sits there uncollected). And the contract holds no stored balance — every payment is delivered in the same transaction. Full write-up in section 6 of rmcircle.team/contract.`}, {k:['pyramid','ponzi','pyramid scheme','ponzi scheme','mlm','recruiting scheme','is this a scheme'], a:()=>`A pyramid or Ponzi scheme funnels everyone's money to a central company and pays earlier joiners out of later joiners' deposits — and you can't verify any of it. This is the opposite: no company holds the money. A public smart contract on Polygon sends each payment person-to-person in the same transaction it arrives, and you can read the code and every payout yourself on-chain — nothing pooled, nothing hidden, rules that can't be changed. It is a team build, so it takes real effort and carries real crypto risk — not a passive investment. But you don't have to trust anyone; verify it at rmcircle.team/contract. No income is guaranteed.`}, + {k:['fast start','checklist','printable','print','48 hour','48-hour','getting started sheet'], + a:()=>`Grab the 48-Hour Fast Start sheet — a printable one-page checklist for your first two days. Open it from YOUR dashboard and it comes pre-filled with your invite link and a scannable QR code, then hit the print button (it prints clean black-on-white, in whatever language you've picked with the 🌐 button).`}, {k:['translate','translation','language','español','espanol','spanish','french','portuguese','not in english','other language'], a:()=>`Tap the 🌐 Translate button in the bottom-left corner of any page — pick your language once and every page stays translated while you browse. Your phone's browser also usually offers its own "Translate page" option. And you can type to me here in ANY language — I'll answer in yours.`}, {k:['how many people','team size','organization size','org size','how big is my team','total team','people in my team','members below'], diff --git a/public/fast-start.html b/public/fast-start.html new file mode 100644 index 0000000..895b31f --- /dev/null +++ b/public/fast-start.html @@ -0,0 +1,102 @@ +48-Hour Fast Start | RM Circle Team Build + + +
+
+

⚡ RM Circle 48-Hour Fast Start

+

Print this. Stick it on the fridge. Check the boxes.

+ +
+
+
My position ID: #______
+
My invite link: rmcircle.team/join/______
+
Team Telegram: t.me/cryptoteambuild
+
Scan the code → my personal page
+
+
+
+ +

☐ Hour One — Lock it in

+
Open your dashboard (rmcircle.team/my) and bookmark it on your phone
+
Find your invite link on the dashboard — send it to yourself so it's always one copy-paste away
+
Sign in to Messages on your dashboard (free wallet signature) and say hello to your sponsor
+
Join the team Telegram — say hi, that's it
+
+ +

☐ Day One — Learn the machine (about 30 minutes)

+
Watch the Team Overview video (Training page, Video 1)
+
Watch How Payments Work — so you can say "every payment is public" and mean it
+
Open your Pipeline panel and look at it — this is your scoreboard from now on
+
Open the Promo Tools page FROM your dashboard — everything arrives pre-loaded with YOUR link
+
+ +

☐ Day One — First shares (before you feel ready)

+
Write your list of 10 curious people (curious — not desperate, not "needs convincing")
+
+ 1.2. + 3.4. + 5.6. + 7.8. + 9.10. +
+
Send the "$27" video (or the one that hooked YOU) to your first 3 people — one at a time, never a group blast
+
Use the ready-made message from Promo Tools — tweak one word so it sounds like you
+
Then stop typing. Send the link and let it work.
+
+ +

☐ Day Two — Follow up + set the rhythm

+
Follow up with your 3: "Did you get a chance to watch it? What did you think?" (opinion, not pressure)
+
Send to 3 more people from your list
+
Show someone the QR code on this sheet — let one person scan it just to see it work
+
Put 20 minutes in your calendar, same time every week: check pipeline → message one mover → share one video
+
Message your sponsor: "First 48 done. Who can I help?"
+
+ +
+ The only goal that matters this week: two curious people looking at a short video.
+ Get your 2. Help your 2 get theirs. The team helps them do the same.
+ Real effort, real crypto, no guarantees — never use money you can't afford to lose.
+ Questions any hour of the day: the chat bubble on rmcircle.team speaks your language. +
+
+
+← Back to my dashboard
+
+ + + + diff --git a/public/fast-start.js b/public/fast-start.js new file mode 100644 index 0000000..12e1321 --- /dev/null +++ b/public/fast-start.js @@ -0,0 +1,25 @@ +// Personalize the printable Fast Start sheet: member ID from ?id= or the +// dashboard's saved ID, invite link + high-res QR of /join/ (the moving +// link — scans route to the member's page and self-rotate like the share card). +(function(){ + function getId(){ + var q=new URLSearchParams(location.search).get('id'); + if(q&&/^\d+$/.test(q))return q; + try{var s=localStorage.getItem('ctb.myId');if(s&&/^\d+$/.test(s))return s;}catch(e){} + return ''; + } + var id=getId(); + if(!id)return; // blank sheet still prints fine with fill-in-by-hand blanks + var link='rmcircle.team/join/'+id; + var el=document.getElementById('fsId'); if(el)el.textContent='#'+id; + el=document.getElementById('fsLink'); if(el)el.textContent=link; + var qr=document.getElementById('fsQr'); + if(qr&&typeof qrcode==='function'){ + try{ + var q=qrcode(0,'M');q.addData('https://'+link);q.make(); + qr.innerHTML=q.createSvgTag({cellSize:4,margin:2,scalable:true}); + }catch(e){} + } + var btn=document.getElementById('fsPrintBtn'); + if(btn)btn.addEventListener('click',function(){window.print();}); +})(); diff --git a/public/my.html b/public/my.html index 2ac5e10..60b91a1 100644 --- a/public/my.html +++ b/public/my.html @@ -22,7 +22,7 @@

Messages

Wallet-verified messaging along your matrix lines — your upline and your team can reach you here, and you can reach them. No email needed; your wallet is your identity. Messages are member-to-member; the team admin can review them for abuse.

Loading…

Email me my alerts

Get an email the moment this position is paid, and when it needs an upgrade to catch incoming pay — so you never miss one. Opt in with your email; unsubscribe anytime.

-

Share this position

🎬 Get Your Promo Tools — posts, swipes, videos & banners →

Ready-made content to share with your invite link — no writing needed.

+

Share this position

🎬 Get Your Promo Tools — posts, swipes, videos & banners →🖨️ Print your 48-Hour Fast Start sheet

Ready-made content to share with your invite link — no writing needed.

Just joined under this position?

Welcome to the team! Enter the new member ID the RM Circle dApp gave you — we'll verify it on the blockchain and let the team know you're in.

Payments received

Every payment your position has received, straight from the smart contract.

Your lineage

diff --git a/public/my.js b/public/my.js index 66a4ee7..f7f18a9 100644 --- a/public/my.js +++ b/public/my.js @@ -114,6 +114,7 @@ document.getElementById('dTitle').textContent='#'+d.id; // hand the member's id to the tools page so every promo asset arrives pre-personalized document.querySelectorAll('a[href="/tools"]').forEach(function(a){a.href='/tools?id='+d.id;}); + document.querySelectorAll('a[href="/fast-start"]').forEach(function(a){a.href='/fast-start?id='+d.id;}); const qb=document.getElementById('dQualified'); if(qb)qb.outerHTML=d.directCount>=2 ?'★ Qualified' diff --git a/public/translate.js b/public/translate.js index a6a90c4..614ffdc 100644 --- a/public/translate.js +++ b/public/translate.js @@ -19,7 +19,8 @@ '#rmcTrPanel button{display:block;width:100%;text-align:left;background:none;border:none;color:#f7f9fc;'+ 'padding:8px 10px;border-radius:8px;font:600 14px/1 Inter,system-ui,sans-serif;cursor:pointer}'+ '#rmcTrPanel button:hover{background:#123049}'+ - '#rmcTrPanel button.on{background:#123049;color:#4ed6cb}'; + '#rmcTrPanel button.on{background:#123049;color:#4ed6cb}'+ + '@media print{#rmcTrBtn,#rmcTrPanel,.chat-fab,.chat-panel{display:none!important}}'; var lang=null; try{ lang=localStorage.getItem('rmc.lang')||null; }catch(e){} var cacheKey=function(){ return 'rmc.tr.'+lang; }; diff --git a/server.js b/server.js index 30777c9..812da56 100644 --- a/server.js +++ b/server.js @@ -46,7 +46,7 @@ FACTS: - MEMBER DASHBOARD & ALERTS: each member has a live dashboard at https://rmcircle.team/my (enter your ID) showing position, team, payments, pipeline (incoming money forming below), a team-depth summary (members per generation below you and which level's upgrade each generation pays you at), a "Coach Your Team" panel (who in YOUR leg needs a nudge — qualified-but-not-upgraded members sitting on entry rewards, members about to miss forming payments, members one direct from qualifying), spillover tags, and qualification badges. Members can turn on opt-in EMAIL ALERTS there (notified when paid, and when they need to upgrade to catch incoming pay). A member's personal invite page to share is https://rmcircle.team/join/. - RESILIENCE ("what if the creators disappear / owner loses keys / it falls apart over time"): the contract is autonomous and immutable — NO admin action, heartbeat, or living operator is required for joins, upgrades, matrix placement, or payouts; there is no pause switch and no expiry. Verified on-chain that the founder, development, and fee-receiver wallets are ordinary wallets (EOAs), NOT smart contracts — an ordinary wallet always accepts incoming POL even if its key is lost forever, so a dead or abandoned admin wallet cannot block any member payment (only the project's OWN uncollected fee would sit idle). The contract stores no balance (every payment is delivered in the same transaction). If the owner's key were lost, only the four limited admin powers freeze in place; members are unaffected. Details in section 6 of https://rmcircle.team/contract. - Current team sponsor: ${a ? `ID ${a.id}${c.showSponsorName && a.name ? ` (${a.name})` : ''}, ${a.directs}/2 directs` : 'shown on the start page'}. ${waiting} placement(s) waiting. Placements rotate as positions qualify — always verify on https://rmcircle.team/start right before joining. -- Site pages: https://rmcircle.team/ (strategy overview + roadmap + live team stats), https://rmcircle.team/start (current sponsor + join steps), https://rmcircle.team/training (7 videos — team overview, wallet setup, funding, the new connect-wallet join flow on the site, the dApp backup method, how payments work, and a full 14-min Member Dashboard walkthrough — + spillover article), https://rmcircle.team/how-pay-works (the two income streams shown as a pay-flow diagram + Premium/Standard tier comparison), https://rmcircle.team/contract (plain-language security review of the verified smart contract — code can't change, no pooled funds, locked rules, honest list of operator powers), https://rmcircle.team/my (member dashboard — its "Your team" panel opens with an organization bar: total members in your org, generations deep, qualified count below you, POL earned below you, and its approximate USD value at an hourly-cached POL price; the matrix under it drills leg by leg), https://rmcircle.team/tools (for existing team members who want to promote — share-ready promo videos (including the “$27” curiosity hook video — 25 ways people burn $27 with nothing to show for it, then the side-hustle flip; it deliberately shows no URL so the poster's invite link in the caption/description carries the credit, and matching $27-angle post copy sits in the Social posts section), copy-paste social posts, short/long email swipes, a downloadable banner kit in every standard size, and an Official RM Circle Media library (13 vertical social videos + 15 graphics from the creators — pair them with your own invite link in the caption); open it from the gold Promo Tools button on your dashboard and every post/swipe arrives pre-personalized with YOUR invite link; to write promos in their own voice, mybrandedvoice.com), https://rmcircle.team/disclaimer (affiliate/earnings/risk disclosures). +- Site pages: https://rmcircle.team/ (strategy overview + roadmap + live team stats), https://rmcircle.team/start (current sponsor + join steps), https://rmcircle.team/training (7 videos — team overview, wallet setup, funding, the new connect-wallet join flow on the site, the dApp backup method, how payments work, and a full 14-min Member Dashboard walkthrough — + spillover article), https://rmcircle.team/how-pay-works (the two income streams shown as a pay-flow diagram + Premium/Standard tier comparison), https://rmcircle.team/contract (plain-language security review of the verified smart contract — code can't change, no pooled funds, locked rules, honest list of operator powers), https://rmcircle.team/fast-start (printable 48-Hour Fast Start checklist — personalized with the member's invite link and a scannable QR code when opened from their dashboard; prints clean black-on-white, and prints in whatever language the member selected with the 🌐 button), https://rmcircle.team/my (member dashboard — its "Your team" panel opens with an organization bar: total members in your org, generations deep, qualified count below you, POL earned below you, and its approximate USD value at an hourly-cached POL price; the matrix under it drills leg by leg), https://rmcircle.team/tools (for existing team members who want to promote — share-ready promo videos (including the “$27” curiosity hook video — 25 ways people burn $27 with nothing to show for it, then the side-hustle flip; it deliberately shows no URL so the poster's invite link in the caption/description carries the credit, and matching $27-angle post copy sits in the Social posts section), copy-paste social posts, short/long email swipes, a downloadable banner kit in every standard size, and an Official RM Circle Media library (13 vertical social videos + 15 graphics from the creators — pair them with your own invite link in the caption); open it from the gold Promo Tools button on your dashboard and every post/swipe arrives pre-personalized with YOUR invite link; to write promos in their own voice, mybrandedvoice.com), https://rmcircle.team/disclaimer (affiliate/earnings/risk disclosures). - UPGRADING FROM THE DASHBOARD: a qualified member can upgrade their level directly on their dashboard (rmcircle.team/my/) — an "Upgrade" card appears with the exact next-level cost read live from the contract; they connect the wallet that OWNS the position, confirm one transaction, done. The site never touches the funds (wallet pays the contract directly). If the wallet doesn't cover the cost, the card offers the MoonPay card-buy option. On phones, open the page inside the wallet app's browser. - MESSAGES (on-site, wallet-verified): every member dashboard has a Messages panel — sign in once with the wallet that owns your position (a free signature, cannot move funds), then message your upline or anyone in your own team, or broadcast to your whole team. Spam-proof by design: messaging only works along your own matrix lines, so strangers can't message you. Unread messages show as a bell on your dashboard. Members are told the team admin can review messages for abuse. No email address needed. - BUYING POL WITH A CARD (for people brand new to crypto): the site links to MoonPay (moonpay.com/buy/pol) on the training page, the start page, and automatically on the join page when a connected wallet's balance is short. Guidance to give: choose POL on the POLYGON network, send it to YOUR OWN wallet address, buy about entry + gas (~385 POL). MoonPay is an independent company (merchant of record) — it handles ID verification and charges its own card fee (~4.5%); this site never touches or holds anyone's money. First purchases can take a few minutes to arrive. @@ -800,7 +800,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(pathname==='/tools'||pathname==='/tools/')file=path.join(PUBLIC_DIR,'tools.html');else if(pathname==='/direct-join'||pathname==='/direct-join/'){if(!getSession(req)){res.writeHead(302,{Location:'/admin'});return res.end();}file=path.join(ROOT,'private','direct-join.html');}else if(pathname==='/join-now'||pathname==='/join-now/'){if(!getConfig().dappFallbackPublic){res.writeHead(302,{Location:'/start'});return res.end();}file=path.join(ROOT,'private','join-now.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:'/join-now'});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(pathname==='/fast-start'||pathname==='/fast-start/')file=path.join(PUBLIC_DIR,'fast-start.html');else if(pathname==='/direct-join'||pathname==='/direct-join/'){if(!getSession(req)){res.writeHead(302,{Location:'/admin'});return res.end();}file=path.join(ROOT,'private','direct-join.html');}else if(pathname==='/join-now'||pathname==='/join-now/'){if(!getConfig().dappFallbackPublic){res.writeHead(302,{Location:'/start'});return res.end();}file=path.join(ROOT,'private','join-now.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:'/join-now'});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);