Etude de cas

ZestAMC

Plateforme de gestion d'investissements en cryptomonnaies reliant les investisseurs a des gestionnaires de fonds professionnels.

$10M+

AUM sur la plateforme

200K+

utilisateurs inscrits

5

portails bases sur les roles

179

migrations SQL

En production depuis 2024
zestamc.com
ZestAMC marketing landing page

Le defi

Une societe de gestion de fonds crypto sans plateforme

L'equipe de ZestAMC gerait plusieurs fonds de cryptomonnaies via des tableurs et des virements bancaires manuels. Les gestionnaires de fonds suivaient les allocations des investisseurs a la main. Les paiements prenaient des jours. Une seule erreur decimale sur un fonds de $2M signifiait une perte d'argent reelle.

Ils avaient besoin d'une plateforme ou les investisseurs pouvaient parcourir les fonds, completer la verification KYC, investir et recevoir des paiements crypto automatises, tandis que les gestionnaires de fonds suivaient la performance avec une precision financiere. Cinq types d'utilisateurs distincts (admin, gestionnaire de fonds, investisseur, admin de fonds, support) necessitaient chacun des vues et des permissions differentes.

La plateforme devait aussi se conformer aux reglementations KYC/AML, supporter plusieurs reseaux crypto (TRC20, ERC20, BEP20) et gerer la distribution des profits a travers des chaines de parrainage complexes, le tout sans une seule erreur d'arrondi.

Ce que nous avons construit

10 systemes. Une plateforme.

5 portails bases sur les roles

Chaque type d'utilisateur voit une application differente. Les admins gerent les fonds et les utilisateurs. Les gestionnaires de fonds suivent les actifs sous gestion et distribuent les profits. Les investisseurs parcourent les indices, investissent et retirent. Les admins de fonds gerent les workflows de conformite. Les agents de support resolvent les problemes via le chat en temps reel. Une base de code, cinq experiences distinctes, toutes partageant la meme couche de donnees.

ZestAMC application dashboard showing fund management interface

Moteur de paiements crypto automatises

Nous avons integre NOWPayments pour traiter les paiements sur les reseaux TRC20, ERC20 et BEP20. Les taches en arriere-plan BullMQ gerent la distribution des profits en deux etapes : d'abord aux investisseurs, puis aux chaines de parrainage. Chaque paiement s'execute comme une transaction atomique. Si une etape echoue, le lot entier est annule.

ZestAMC investment steps showing the investor flow

Conformite KYC/AML et precision financiere

Sumsub gere la verification d'identite via son SDK et ses callbacks webhook. Chaque investisseur complete le KYC avant son premier investissement. Cote financier, toutes les valeurs monetaires utilisent NUMERIC(30,8) dans Postgres associe a decimal.js sur la couche applicative. Aucune arithmetique en virgule flottante ne touche l'argent. 30 chiffres, 8 decimales, zero erreurs d'arrondi.

ZestAMC platform features overview

Tranches intelligentes et authentification sans mot de passe

Les investisseurs achetent des parts de fonds via des tranches. Un systeme d'agregation differee regroupe les petits investissements en entrees de pool plus importantes, reduisant les ecritures en base de donnees et ameliorant les performances de requete sur l'analytique des fonds. L'authentification utilise un OTP sans mot de passe, eliminant les tickets de support lies aux mots de passe et reduisant la surface d'attaque.

ZestAMC indices section showing available crypto funds

Infrastructure et outillage

  • Chat de support en temps reel via Supabase Realtime, pour que les agents et les investisseurs communiquent sans rafraichissement de page ni polling.
  • Systeme de feature flags pour des deploiements progressifs, permettant a l'equipe de livrer a un sous-ensemble d'utilisateurs avant un lancement complet.
  • 179 fichiers de migration SQL avec des tests de base de donnees pgTAP, garantissant que les changements de schema ne cassent jamais les donnees de production.
  • Distribution des profits et des parrainages en deux etapes via des taches en arriere-plan BullMQ, traitant les paiements de maniere asynchrone sans bloquer le thread principal.

Decisions techniques

Pourquoi nous avons choisi ce stack

React 19 + Vite 6

Cinq portails partagent une base de code React. La federation de modules de Vite garde les tailles de bundles petites par portail. Les fonctionnalites concurrentes de React 19 permettent au tableau de bord de rendre l'analytique des fonds sans geler l'UI lors de grandes recuperations de donnees.

Hono sur Fly.io

Hono fait tourner la couche API. Il demarre en moins de 50ms, ce qui compte pour le modele scale-to-zero de Fly.io. Les demarrages a froid arrivent ; ils doivent etre rapides. Le systeme de middleware de Hono gere l'auth, la limitation de debit et la validation des requetes dans une chaine composable.

Supabase + Upstash Redis

Supabase fournit Postgres, des primitives d'auth et des abonnements Realtime pour le chat de support. Upstash Redis gere le cache de session et la limitation de debit en edge. Les deux services scalent sans surcharge operationnelle.

NUMERIC(30,8) + decimal.js

Le type Number natif de JavaScript perd en precision au-dessus de 2^53. Pour une plateforme qui gere $10M+ d'actifs crypto, c'est inacceptable. Nous stockons toutes les valeurs monetaires en NUMERIC(30,8) dans Postgres et utilisons decimal.js pour chaque calcul dans la couche applicative. L'arithmetique en virgule flottante ne touche jamais l'argent.

React 19 Vite 6 Hono TypeScript Tailwind CSS v4 shadcn/ui TanStack Query Supabase Upstash Redis BullMQ decimal.js Cloudflare Pages Fly.io NOWPayments Sumsub pgTAP

Resultats

Chiffres de production

$10M+

actifs sous gestion sur la plateforme

200K+

utilisateurs inscrits sur tous les portails

179

migrations SQL avec tests pgTAP

5

portails bases sur les roles dans une seule base de code

Nous contacter

Demarrer une conversation

Parlez-nous de votre projet. Nous vous repondrons sous 24 heures avec un plan clair, un calendrier estime et une fourchette de prix.

Base a

EAU et Inde