All documentation

Beta Launch Checklist

Everything required before accepting paying users, organized by category. Each item is marked:

  • ✅ Done, verified — confirmed in this codebase/pass, nothing left

to do.

  • ⚠️ Done, needs a human action this codebase can't perform itself —

the code/config is ready; something outside this environment (a real credential, a live account, a production infrastructure decision) still needs to happen.

  • ❌ Not done — a real, named gap.

This list is the executive summary; every item links to the document with the full detail, methodology, and reasoning behind the checkbox.

1. Core product

  • ✅ Subscription system (trial, Starter/Professional/Enterprise,

monthly/yearly, upgrade/downgrade, cancel, usage limits) — docs/BILLING.md.

  • ✅ Onboarding (setup wizard, broker connect, first copier, guided

walkthrough) — docs/ONBOARDING.md.

  • ✅ Live copier management (start/stop/pause/resume/emergency-stop,

health, latency, reconnect, logs).

  • ✅ Risk management (global/per-account limits, daily loss, drawdown,

max trades, position sizing) — docs/RISK_PROFILES.md.

  • ✅ Trade copier features (all copy topologies, symbol mapping,

multipliers, reverse copy, partial close, pending orders, magic number/comment filtering) — docs/TRADE_FILTERS.md.

  • ✅ Dashboard, notifications (Email/Slack/Discord/Telegram/SMS) —

docs/ALERT_SYSTEM.md. Push notifications: ❌ architecture-ready, no vendor configured — not required for launch, named explicitly so it's not discovered as a surprise.

  • ✅ Administration panel (users, orgs, brokers, monitoring, audit,

analytics/revenue, subscription cancel/reactivate) — docs/ADMINISTRATOR_GUIDE.md.

  • ✅ Security features (2FA, API keys, sessions, audit log, rate

limiting) — docs/SECURITY_REVIEW.md.

2. Broker integrations

  • ✅ MT5, TradeLocker, Tradovate, DXtrade, cTrader, Match-Trader — all

code-complete, all with real automated test coverage (474/474 tests passing) across every requested capability (login, account, balance, equity, positions, pending orders, market orders, close, modify SL/TP, reconnect, error recovery, latency instrumentation) — full matrix in docs/BROKER_INTEGRATION_REPORT.md.

  • ⚠️ **No connector has been exercised against a real/demo broker

account in this environment (no credentials, no network access to broker servers here) — this is stated plainly in `docs/BROKER_INTEGRATION_REPORT.md` and was true before this pass, not introduced by it. Required before launch**: run that report's Validation Checklist against a real demo account for every broker you intend to support at launch, using real credentials someone on your team provides.

  • ❌ Rithmic: wire transport not connected to a live gateway at all

(not just untested — genuinely unimplemented pending real developer access) — see docs/RITHMIC_TRANSPORT.md. Do not offer Rithmic at launch unless this is completed first.

3. Performance

  • ✅ Local, synthetic Copy Engine load testing at 100-10,000 simulated

users — real numbers, real bottleneck identified (single-process throughput flat to ~1,000-2,000 simultaneous events, then degrading) — docs/STRESS_TEST_REPORT.md.

  • ❌ No real database load testing — the local test deliberately

never touched the real Supabase project (a shared dev resource, not something to load-test without its owner's explicit go-ahead). Required before launch at meaningful scale: real load testing against a staging (not production) database, specifically to measure connection-pool behavior and real query latency under concurrent write load — the single biggest unmeasured variable in this report.

  • ❌ No sustained/soak testing — only burst-and-measure-once was

performed.

  • ❌ No multi-process/horizontal CopyWorker sharding has been built

— docs/STRESS_TEST_REPORT.md gives you the numbers to plan shard boundaries around, but the actual sharding logic (assigning users/orgs to worker instances) doesn't exist yet. Required before onboarding enough simultaneous users to exceed one process's ~1,000-2,000-event flat region — not necessarily required for an initial beta with a modest user count.

4. Security

  • ✅ Authentication/JWT, authorization (RLS on all 47 tables), SQL

injection, XSS, CSRF, secrets/env-var hygiene — all reviewed and confirmed correct, no code changes needed — docs/SECURITY_REVIEW.md.

  • ✅ Encryption (AES-256-GCM broker credentials, SHA-256 API keys) —

reviewed with two honestly-documented, non-blocking gaps (no key rotation tooling, no AAD binding).

  • ❌ `npm audit`: 13 vulnerabilities (2 critical, 4 high), all

transitive dependencies of metaapi.cloud-sdk (axios, crypto-js, lodash, and others). Not auto-fixed — the only available automated fix is a six-major-version SDK downgrade, which this environment cannot safety-test against a live MT5 account. Required before launch if MT5 is offered: either wait for an upstream metaapi.cloud-sdk release with patched dependencies, or apply narrow package.json overrides and run a full live MT5 retest before trusting them — see docs/SECURITY_REVIEW.md §14 for the exact reasoning and staged remediation path. Do not skip this silently.

  • ⚠️ No penetration test performed (code-level review only) — normal

for a pre-launch codebase-only pass; recommended before/shortly after a public (non-beta) launch, not blocking a beta with real users under an NDA/beta agreement.

5. Infrastructure & deployment

  • ✅ Docker: web app + Copy Engine worker + nginx, all three services

now defined (copy-worker was missing entirely before this pass — fixed) — DEPLOYMENT.md.

  • ❌ The Docker build itself has not been run in this environment

(no Docker available here) — the worker target's multi-stage semantics were reviewed carefully and the compose YAML was syntax-validated, but neither has gone through an actual docker build/docker compose up. Required before launch: run a real build, confirm both app and copy-worker start and pass their health checks, before this compose file is trusted in production.

  • ✅ Supabase Cloud deployment steps, migration application, RLS —

documented and verified.

  • ✅ Automatic recovery: restart: unless-stopped on every service;

each broker connector's own reconnect/backoff logic; Copy Engine session re-hydration on worker restart.

  • ✅ Monitoring, logging, health checks — /admin/monitoring,

/api/health*, structured logging throughout, all reviewed and confirmed real (not stubbed).

  • ❌ Disaster recovery plan has not been rehearsed — the plan

itself is real and complete (docs/DISASTER_RECOVERY_PLAN.md), but a written plan and a tested one are different confidence levels. Recommended before or shortly after launch: a real restore drill against a non-production project.

6. Documentation

  • ✅ Deployment Guide (DEPLOYMENT.md), Administrator Guide, User

Guide, API Documentation, Disaster Recovery Plan, Backup Strategy — all written this pass, all real (no placeholder content), all auto-discoverable in-app via /docs.

Not reviewable from source code — confirm separately before accepting payment from real users:

  • ❌ Terms of Service / Privacy Policy content accuracy (pages exist at

/terms//privacy — this pass did not review their legal content, only that the pages render; that's a legal review, not a code review).

  • ❌ Regulatory considerations for a trade-copying product in your

target jurisdictions (this varies enormously by region and this codebase has no way to know your specific target market).

  • ❌ Broker-side terms of service for automated/API trading — confirm

each broker you support actually permits this use pattern.

Summary: what genuinely blocks launch vs. what doesn't

Blocks launch for any broker you intend to actually support: that broker's own live demo-account validation checklist (§2) has not been run in this environment — this is not optional, it's the one thing no amount of code review substitutes for.

Blocks launch if MT5 is offered: the npm audit findings (§4) — at minimum, a documented decision (not silence) on the remediation path.

Blocks launch at any real production scale: the untested Docker build (§5) and unrehearsed DR plan (§5) — both are "probably fine, verify before betting the launch on it," not "known broken."

Does NOT block a small, invite-only beta with a handful of real users on demo/low-risk accounts: horizontal CopyWorker sharding (§3), real-database load testing (§3), a formal penetration test (§4) — all real, named, worth doing before scaling past a beta, not before starting one.