
Context
ProfitMaker, the CCXT-based trading engine on this record, needed a front door: a place where customers sign up, verify identity, connect exchange accounts, subscribe, watch balances and orders, and withdraw. This project is that layer. I designed the service boundaries and the money-handling rules and had the build executed by a developer on my team.
What was built
Exchange connectivity through CCXT
Endpoints to load markets, fetch balances across connected exchanges, read the order book, list orders, place market and limit orders on both sides, and cancel orders. CCXT abstracts the exchange APIs so the same routes work across venues.
Accounts, KYC and security
Registration, login, password change, profile updates and status changes for operators. KYC documents are uploaded through Multer and stored in S3. Withdrawal requests require a second factor before they are created, and a success-fee calculation runs before funds move.
Subscriptions, billing and affiliates
Personal and business billing paths, subscription creation and verification, and an affiliate programme with tracked commissions and payout history, so growth has a mechanism and every commission is auditable.
On-chain wallets
Web3 is used to generate deposit wallets per subscription and to read transaction counts and blocks when confirming on-chain deposits. Wallet balances and transaction lists are exposed to the customer's dashboard.
Support and history
Support tickets, a transaction history per account, and email notifications through Brevo. WebSockets carry live updates to the React client.
Decisions worth noting
- Separate the money from the strategy. The trading engine and the customer platform are different systems with different risk profiles. Keeping account, KYC and withdrawal logic here, away from the strategy code, made both easier to reason about and audit.
- Two-factor on the one action that matters. Not every route needs a second factor. Withdrawals do.
- Documents off the server. KYC files go to S3 with scoped credentials, never to local disk.
Why it is in the portfolio
It rounds out the FinTech line on the resume: ProfitMaker is the engine, this is the platform around it. It is presented as a team delivery I led, which is what it was.