All work

Production · Trader engagement · Built solo

GoldTraders Trader Portal

Telegram Mini App that lifted average monthly net from ~$50K to ~$200K within one year. Solo build that replaced what would have been a 3-engineer + PM scope.

  • $50K → $200K

    Avg monthly net within 1 year

  • 1 engineer

    Replaced 3-eng + PM scope

  • 23 tables · 103 migrations

    D1 ledger as source of truth

The problem

A broker community with no retention loop and no ledger.

Active traders engaged through scattered channels — Telegram chats, ad-hoc contests run by hand, sponsor rewards tracked in spreadsheets. Two structural failures: there was no daily reason to come back, and every credit or prize the bank paid out was tracked off-system. Reconciliation was manual and brittle, contest disputes happened weekly, and growth flattened because nothing tied an active trading day to a measurable outcome the user could feel.

The approach

One mini-app on a credit kernel. One ledger. One funnel for every reward.

Solo build, end-to-end: spec, schema, backend, frontend, auth, contests, anti-cheat, ops. Hono on Cloudflare Workers, React 19 on Pages, D1 as system of record, KV for hot reads, Durable Objects for the spin-lock and rate-limit primitives. The discipline that made the numbers move was the credit kernel: every points and USD mint funnels through a single function backed by a tamper-evident ledger and an outbox drainer that propagates to the legacy spreadsheet without ever letting the spreadsheet become the source of truth again.

  • Gamification core — daily points cap, streaks, achievements, spin wheel, quests, lucky draw
  • Four-mode contest engine — disabled / points-only / cash-prize / real RoboForex Copy Trading with DOM-fragile scraper, snapshot failure monitor, and tamper-evident final snapshots
  • Credit kernel + outbox refactor — single mint funnel, frozen reward manifest (~40 sources), D1 credit_ledger, mint_attempts anti-cheat, daily reconcile cron, lint gate blocking new direct mints
  • Admin Users tab — list / search / paginate / edit eight registration fields with JSON-diff audit, super-admin hard-delete with deleteTrader cascade across 23 tables
  • Caught a real prior-art bug under the new test harness: deleteTrader was using a column that did not exist, leaving every prior /delete partially executed
  • Idempotency-key support, per-request structured JSON logs, sheet-based fulfillment tracking with 15-min KV cache

The result

$50K → $200K monthly net. One person on the keyboard.

Average monthly net moved from ~$50K to ~$200K within one year. The system shipped as a single Telegram Mini App with backend on Cloudflare Workers and frontend on Pages — engineered to a posture that would have justified a small product team but executed by one engineer with a ledger discipline that holds up to financial audit. Contests, anti-cheat, reconciliation, and admin operations all run on the same kernel, which is why the cost stayed at workers-tier and the ops headcount stayed at zero.

$50K → $200K

Monthly net · within 1 year · solo build

Live product

  • GoldTraders Trader Portal home tab showing streak count, points balance, contest banner, and active quests list

    Home surface — daily streak, points balance, contest status, and quest queue on a single scroll. The retention loop is built into the first paint.

  • GoldTraders Trade tab with active contest leaderboard and ROI rankings against real RoboForex Copy Trading data

    Trade tab with embedded contest — four-mode engine renders as a sub-tab. Real Contest activates against live RoboForex Copy Trading; demo trading pauses behind a purple banner.

  • GoldTraders community tab with idea board, polls with reaction counts, and threaded comments

    Community surface — ideas, polls, comments, and reactions running on the same credit kernel. Every upvote, every winning prediction, every shared idea is a ledger entry.

Stack used

  • TypeScript
  • Hono
  • Cloudflare Workers
  • D1 (SQLite)
  • KV
  • Durable Objects
  • React 19
  • Tailwind CSS
  • Framer Motion
  • Telegram WebApp SDK
  • Wrangler
  • Vitest