Commit Graph

268 Commits

Author SHA1 Message Date
martbost 89f27b89a2 Close the conversion loop: member ID submission with Hermes Telegram notify
- Start page step 6 is now a bold gold-highlighted "Submit your NEW RM
  Circle ID" form with larger step numbers throughout; captures the
  sponsor the visitor was shown at join time.
- POST /api/public/submit-id: validates numeric ID, dedupes, stores on
  the volume, records a per-source "purchase" analytics event, fires a
  BeMob postback (txid=purchase-<clickid>) to close paid campaigns, and
  posts the new ID + sponsor + source to the configured Telegram chat
  (MB Hermes pattern). Rate-limited.
- Admin: Member ID Submissions table, "Confirmed joins" tile, and
  Telegram bot token / chat ID settings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 13:30:53 -05:00
martbost 63e8b4cdd0 Add paid-traffic tracking: clickid capture and BeMob conversion postback
- track.js stores ?clickid= (or ?cid=) for the session; rides through
  bridge -> start navigation alongside the existing source attribution.
- Join click (the conversion) sends the clickid; server fires a
  fire-and-forget S2S postback to the admin-configured BeMob postback
  URL (cid + txid=join-<clickid>, payout 0) and counts successes per
  source in analytics.
- New admin setting: BeMob postback URL (server-side only, not exposed
  in public config).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 11:26:34 -05:00
martbost c1ec687768 Let admins enable AI chat by pasting an OpenRouter key in the admin panel
Key is stored on the persistent volume (0600, never in git), read
dynamically per request, maskable status only in admin state, and
clearable to fall back to built-in answers. OPENROUTER_API_KEY env var
still takes precedence if ever set.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 09:17:39 -05:00
martbost ca5605e056 Add AI chat backend via OpenRouter with knowledge-base fallback
POST /api/public/chat proxies to OpenRouter (model from
OPENROUTER_MODEL, default deepseek/deepseek-v4-flash:nitro) with a
system prompt built from live site config, sponsor queue, and strict
guardrails (no income claims, seed-phrase warnings, Telegram fallback).
Rate-limited per IP. Without OPENROUTER_API_KEY set, or on any API
error, the widget transparently falls back to the built-in knowledge
base, so the chat always works.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 08:47:02 -05:00
martbost 708068a9a7 Add collapsible Team Help chat widget on all public pages
Self-contained assistant (no external services) with a knowledge base
covering the strategy, levels, costs, wallet setup, funding, joining,
training videos, and live current-sponsor/queue data; falls back to
the configured Telegram group link when it can't answer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 08:35:28 -05:00
martbost 023f8a3464 Add poster thumbnails to training videos
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 07:39:47 -05:00
martbost ec2091631e Add /training page with four self-hosted walkthrough videos
- Videos loudness-normalized to -16 LUFS (originals were ~-33 LUFS).
- Static file serving rewritten to stream with HTTP Range support so
  video seeking works; .mp4/.webm MIME types added.
- Training nav links on homepage and /start, plus a first-time callout
  on /start; training page views tracked per source in admin analytics.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 07:32:59 -05:00
martbost c1f2ccbd3e Inline video card sizing so it renders correctly with stale cached CSS
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 10:25:30 -05:00
martbost a32a710c80 Make video embed responsive with size fallback; stop caching CSS/JS
CSS and JS are now served no-cache like HTML so style/script updates
apply on normal refresh instead of waiting out a 1-hour browser cache.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 10:18:30 -05:00
martbost 2890dc2f1b Embed team build walkthrough video on homepage; allow YouTube in CSP
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 10:14:23 -05:00
martbost 4115d3a920 Add simple traffic analytics with source attribution and conversion funnel
- track.js captures first-touch source per session (utm_source/src param
  or external referrer domain) and logs bridge/start page views.
- Join clicks now carry the source; all events aggregate per-source in
  data/analytics.json on the persistent volume.
- Admin: new Traffic & Conversions card with funnel totals (bridge ->
  start -> join click rates) and a per-source breakdown table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 08:07:41 -05:00
martbost ba14a1f1a9 Move roadmap graphic below sponsor placement on /start
Keeps the current sponsor card above the fold; the roadmap stays
above the fold on the bridge homepage.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 08:04:07 -05:00
martbost 97f695cec2 Add Open Graph and Twitter card meta tags with 1200x630 share image
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 08:02:36 -05:00
martbost 4fcc7e6e55 Apply admin site name and program name to visible header branding
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 07:57:44 -05:00
martbost 4315e196e3 Show team build roadmap graphic on the bridge homepage hero
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 07:45:08 -05:00
martbost 241bc2060d Serve .webp with correct image/webp content type
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 07:41:51 -05:00
martbost 2b1f526bef Add inline level editing in admin queue and roadmap infographic on start page
- Admin: Level column is now a dropdown of the 8 premium levels (Scintilla
  through Corona), saving immediately via PATCH; server validates levels.
- Start page: RM Circle Team Build Roadmap graphic above the fold with
  Crypto Team Build Network attribution (compressed to 198KB WebP).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 07:40:00 -05:00
martbost 76bd288bf6 Initial commit: RM Circle team sponsor router (bridge page, /start, /admin, Docker)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 07:04:08 -05:00