What the app does
• Deterministic market replay: repeatable replays, one time anchor across 1m to 1W, and quality checks on practice scenarios.
• Web app: the same Compose UI compiled to WebAssembly, with desktop layouts, the TradingView chart and Stripe billing.
• Live trading events: 60-minute venue competitions on one server clock, with a live projector leaderboard, a final-results ceremony and verifiable certificates.
• AI Mentor (Gemini): macro and fundamental context at the historical date, with outcome-leak guards, cost caps and model failover.
• Ranking, leagues and tournaments: skill ratings in PostgreSQL, monthly seasons, user-hosted tournaments and daily trade caps.
• Analytics for traders: equity curve, drawdown, win rate, streaks, R-multiples, and breakdowns by session, weekday and instrument.
• Social layer: profiles, followers, DMs, community chat, a public trade feed and moderation.
• Monetisation: server-verified subscriptions (Adapty on mobile, Stripe on web), a referral program and an affiliate program with payouts.
Trader Admin: the business side
An internal panel on UI Bakery (React + TypeScript) over the same Postgres database.
• Live Events: event setup, START/blackout/STOP, score adjustments, Excel export and a full-screen projector view.
• Growth and acquisition: cohort retention, onboarding funnel, and installs and users by channel and country.
• Monetisation: signup-to-churn funnel, MRR, ARPU and paywall conversion, with test and granted premium excluded.
• Technical health: crashes per app version, chart load time and failed saves.
• Affiliates and trust: partner payouts, plus spam and duplicate-account flags.
Engineering highlights
• Thin client: business rules live in PostgreSQL functions behind row-level security, shared by all three platforms.
• Web without a fork: browser implementations of every platform API; API keys stay server-side behind an authenticated proxy.
• Safe changes with live users: versioned server functions, a config table for tunables, and rehearsed migrations.
• Idempotent writes: retries only for provably safe operations, using advisory locks and match-and-return logic.















