Experience
Sendcoins
Hybrid fiat-crypto rails engineered so no one ever gets double-credited.

Sendcoins moves money between fiat and crypto across borders, virtual NGN accounts, stablecoin sends, and everything in between. As the primary backend engineer I built the rails that make it safe: the multi-chain send engine, the idempotent ledger, and the approval and reconciliation layers that guarantee no one is ever double-credited.
Stack
The systems I built
05 distinct products under one engagement, built end to end.
Core backend
The core Express + PostgreSQL API powering wallets, crypto sends, the fiat on/off-ramp, KYC, auth and pricing. I was the lead engineer and owned nearly every major subsystem.
Multi-provider KYC routing, CrayFi (BVN/NIN) for Nigerian users, Dojah for international passport/licence, and MetaMap for face liveness, each behind signed webhook handlers that verify HMAC signatures before updating verification state.
Fiat on/off-ramp via CrayFi, virtual-account creation, balance queries and payouts, gated behind KYC and wired into MetaMap-driven account provisioning.
Anti-arbitrage pricing engine, a symmetric buy/sell spread over live CoinGecko/RedStone prices so users can't arbitrage the platform's rate.
Security hardening after a real wallet-drain incident, an account-ban guard, funded-wallet threshold alerts and a full remediation trail.
Admin service & operator console
A NestJS admin API with a Vite/React operator console for managing users, wallets, KYC, payouts, conversions, reconciliation and staff roles. I built the service and its frontend.
Full RBAC, roles, permissions and departments as first-class Prisma models, with a permissions health-check script.
Comprehensive audit logging, an append-only audit-log capturing every privileged action across the console.
Broad operational surface, around 28 modules spanning wallets, deposits, payouts, conversions, reconciliation, merchants, rates, campaigns and analytics.
Admin 2FA, TOTP via speakeasy/qrcode, behind Helmet, throttling and guarded routes.
User dashboard
The React end-user web app for onboarding, KYC, wallet management, crypto sends, recipients and fiat setup. I was the primary engineer.
End-to-end send flow with client-side address validation, per-chain recipient validation before submission.
KYC and fiat onboarding flows, dedicated onboarding, KYC and CrayFi virtual-account setup surfaces.
Downloadable transaction receipts, generated client-side with jsPDF + html2canvas.
Domain-organized Redux store, separate slices for auth, registration, user, recipients, transactions and wallet.
Crypto TX engine
A standalone multi-network sending engine that builds, signs, funds and broadcasts on-chain transfers, callable both as an HTTP service and as a module from the backend. I built it as the dedicated on-chain execution layer.
Multi-strategy send orchestration, DIRECT_SEND from the user wallet (auto-funding gas) vs MASTER_SEND from a master wallet with the user's DB balance deducted, plus a hybrid path for Bitcoin.
Automatic gas funding, tops up TRX/BNB/ETH so token transfers never fail for lack of gas.
Safe balance locking, Postgres SELECT … FOR UPDATE row locks plus a solvency check to prevent double-spend on DB balances.
Multi-chain clients, TRC20/ERC20/BEP20 for USDT/USDC, native Bitcoin, and a Solana client, with on-chain confirmation polling.
Native Bitcoin integration
A native Bitcoin send capability layered across the TX engine, backend and dashboard, a distinct cross-cutting workstream with its own design docs and test artifacts.
Native BTC sends across three strategies, including a Bitcoin-specific hybrid that reclaims the user's on-chain UTXOs to the master wallet before sending the full amount.
Dynamic mining-fee estimation, sat/vByte pulled live from mempool.space, separate from a DB-tracked platform fee with min/max bounds.
Enforced economic guardrails, a minimum BTC send value enforced server-side in the fee layer.
Documented end-to-end flow, Dashboard → Backend → TX engine → Bitcoin network, with reference-based confirmation polling.
Next
LuliSign