Case study
ZestAMC
Cryptocurrency investment management platform connecting investors with professional fund managers.
$10M+
AUM on the platform
200K+
registered users
5
role-based portals
179
SQL migrations
The challenge
A crypto fund management company with no platform
ZestAMC's team managed multiple cryptocurrency funds across spreadsheets and manual bank transfers. Fund managers tracked investor allocations by hand. Payouts took days. A single decimal error on a $2M fund meant real money lost.
They needed a platform where investors could browse funds, complete KYC verification, invest, and receive automated crypto payouts, all while fund managers tracked performance with financial-grade precision. Five distinct user types (admin, fund manager, investor, fund admin, support) each required different views and permissions.
The platform also had to comply with KYC/AML regulations, support multiple crypto networks (TRC20, ERC20, BEP20), and handle profit distribution across complex referral chains, all without a single rounding error.
What we built
10 systems. One platform.
5 role-based portals
Each user type sees a different application. Admins manage funds and users. Fund managers track AUM and distribute profits. Investors browse indices, invest, and withdraw. Fund admins handle compliance workflows. Support agents resolve issues through real-time chat. One codebase, five distinct experiences, all sharing the same data layer.
Automated crypto payout engine
We integrated NOWPayments to process payouts across TRC20, ERC20, and BEP20 networks. BullMQ background jobs handle the two-step profit distribution: first to investors, then to referral chains. Each payout runs as an atomic transaction. If any step fails, the entire batch rolls back.
KYC/AML compliance and financial precision
Sumsub handles identity verification through its SDK and webhook callbacks. Every investor completes KYC before their first investment. On the financial side, all monetary values use NUMERIC(30,8) in Postgres paired with decimal.js on the application layer. No floating-point math touches money. 30 digits, 8 decimal places, zero rounding errors.
Smart tranches and passwordless auth
Investors buy into funds through tranches. A deferred aggregation system batches small investments into larger pool entries, reducing database writes and improving query performance on fund analytics. Authentication uses passwordless OTP, eliminating password-related support tickets and reducing the attack surface.
Infrastructure and tooling
- Real-time support chat via Supabase Realtime, so agents and investors communicate without page refreshes or polling.
- Feature flag system for progressive rollouts, letting the team ship to a subset of users before a full release.
- 179 SQL migration files with pgTAP database tests, ensuring schema changes never break production data.
- Two-step profit and referral distribution via BullMQ background jobs, processing payouts asynchronously without blocking the main thread.
Tech decisions
Why we chose this stack
React 19 + Vite 6
Five portals share one React codebase. Vite's module federation keeps bundle sizes small per-portal. React 19's concurrent features let the dashboard render fund analytics without freezing the UI during large data fetches.
Hono on Fly.io
Hono runs the API layer. It starts in under 50ms, which matters for Fly.io's scale-to-zero model. Cold starts happen; they need to be fast. Hono's middleware system handles auth, rate limiting, and request validation in a composable chain.
Supabase + Upstash Redis
Supabase provides Postgres, auth primitives, and Realtime subscriptions for the support chat. Upstash Redis handles session caching and rate limiting at the edge. Both services scale without ops overhead.
NUMERIC(30,8) + decimal.js
JavaScript's native Number type loses precision above 2^53. For a platform managing $10M+ in crypto assets, that's unacceptable. We store all monetary values as NUMERIC(30,8) in Postgres and use decimal.js for every calculation in the application layer. No floating-point math ever touches money.
Tools
Results
Production numbers
$10M+
assets under management on the platform
200K+
registered users across all portals
179
SQL migrations with pgTAP tests
5
role-based portals in one codebase
Related reading
Technical due diligence: what investors and acquirers miss
75% of investors rank digital maturity as a top-3 value driver. But most tech DD reviews miss the risks that kill deals after close. Here's what to look for.
REST vs GraphQL vs gRPC: how to pick the right API for your product
Two-thirds of teams still default to REST. But 40% are piloting GraphQL, and gRPC owns the microservices layer. Here's when each one wins, with real tradeoffs.
Serverless vs containers: which architecture fits your SaaS?
Serverless costs $0 at launch but gets expensive at scale. Containers cost more upfront but stay predictable. Here's how to pick the right architecture for your SaaS product.
Get in touch
Start a conversation
Tell us about your project. We'll respond within 24 hours with a clear plan, estimated timeline, and pricing range.
Based in
UAE & India
Message received
We'll review your project and get back to you within 24 hours.
You can also reach us at hello@savibm.com