Table of contents

Arquitectura

T-Suite es un conjunto de servicios Node.js / TypeScript contenedorizados detrás de tres aplicaciones web de una sola página, respaldados por MongoDB y Redis, conectados mediante Kafka y gRPC, y anclados a smart contracts en varias cadenas EVM y en Cardano. Esta página describe la forma del sistema; para un recorrido menos técnico, véase Arquitectura e Integraciones.

Diagrama del sistema

  Navegadores (inversionistas, emisores, gestores, admins, transfer agents)
        │  HTTPS (REST)                         ▲  Server-Sent Events
        ▼                                       │
┌───────────────────────────────────────────────┴──────────────────────┐
│  App T-Suite (Marketplace)  ·  Consola Admin  ·  App Transfer Agent  │
│              aplicaciones de una sola página — React / TypeScript    │
└──────────┬──────────────────────────┬─────────────────────┬──────────┘
           │                          │                     │
┌──────────▼─────────┐   ┌────────────▼─────────┐  ┌────────▼───────────┐
│  API Marketplace   │◄──┤  API Admin           │  │ API Transfer Agent │
│  (API principal,   │   │  (proxy firmado HMAC)│  │                    │
│   tareas, SSE)     │   └──────────────────────┘  └────────────────────┘
└───┬────────┬───────┘          ▲    gRPC (llamadas internas)   ▲
    │        └──────────────────┴───────────────────────────────┘
    │                         Kafka (eventos)
    │   ┌──────────────────────┬──────────────────────┬─────────────────┐
    ▼   ▼                      ▼                      ▼                 ▼
┌──────────────┐   ┌──────────────────┐   ┌──────────────────┐  ┌──────────────┐
│ Servicio de  │   │ Servicio de      │   │ Servicio de      │  │ Servicio     │
│ notificación │   │ eventos (indexer)│   │ dividendos       │  │ Cardano      │
└──────────────┘   └────────┬─────────┘   └──────────────────┘  └──────┬───────┘
                            │                                          │
┌───────────────────────────▼──────────────────────────────────────────▼──────┐
│  Cadenas: Base · Ethereum · Polygon · Arbitrum (+ testnets EVM) · Cardano   │
└─────────────────────────────────────────────────────────────────────────────┘

  Datos: MongoDB · Redis · almacenamiento de blobs en la nube
  Terceros: SumSub · Stripe · Bridge.xyz · SendGrid · Gmail · Anthropic · proveedores RPC

Aplicaciones frontend

AppQuién la usaQué contiene
App T-Suite (Marketplace)Inversionistas, emisores, gestores de activosPlataformas de Inversionista, Emisor y Asset Management, Distribution Hub, Structuring, Trading, Stablecoin Studio, Custodian Wallet. Se sirve bajo el dominio de Libertum y bajo el dominio propio de cada tenant whitelabel.
Consola AdminAdministradores de LibertumOperaciones de SuperAdmin: comisiones, planes, restricciones por país, aprobaciones, configuración de la plataforma
App Transfer AgentTransfer agentsCap table, decisiones de whitelist de wallets, diario de transferencias, transacciones

Las tres son aplicaciones de una sola página compiladas de forma estática. Se comunican con el backend por HTTPS (REST con JSON) y, para las actualizaciones en vivo, mediante un stream Server-Sent Events.

Servicios backend

ServicioResponsabilidad
API MarketplaceLa API principal. Usuarios y onboarding, ofertas, órdenes y pagos, suscripciones y módulos, acuerdos y firma electrónica, Custodian Wallet, redenciones, gobernanza, Distribution Hub, Structuring, Trading, Stablecoin Studio, tareas programadas y el stream de notificaciones en tiempo real
API AdminOperaciones de SuperAdmin (comisiones, restricciones por país, aprobaciones). Las llamadas de la consola admin hacia la API Marketplace se firman entre servidores
Servicio de notificaciónEnvío de correos y notificaciones dentro de la app
Servicio de eventosIndexador de eventos blockchain: consulta periódicamente cada cadena soportada y publica lo que encuentra en Kafka
Servicio de dividendosProcesamiento de dividendos
API Transfer AgentBackend de la app Transfer Agent
Servicio CardanoOperaciones de tokens CIP-20 y CIP-113 y firma de la custodia en Cardano

La API Marketplace se organiza en componentes, uno por dominio — por ejemplo structuring, aiUsage, sseNotifications, custodianWallet, gasTreasury, bridge (T-Pay vía Bridge.xyz), governance, p2p, hosting, investorStatements, agreements, redemption, distributionHub, countryRestrictions, feeConfig, y los componentes de infraestructura XRPL xrplPlatform, xrplCredentialIssuer y xrplReserve.

Mensajería: Kafka y gRPC

Los servicios usan dos canales complementarios:

  • Kafka — eventos asíncronos. Los productores publican y siguen; los consumidores reaccionan a su propio ritmo. Existen dos grandes grupos de tópicos: tópicos de notificación (los servicios piden al servicio de notificación que envíe un correo o una notificación en la app) y tópicos de actualización de producto (el servicio de eventos y la API Admin informan a la API Marketplace sobre eventos on-chain y decisiones de aprobación). Las notificaciones en tiempo real del navegador también llegan desde Kafka al stream SSE.
  • gRPC — llamadas internas síncronas. Cuando un servicio necesita una respuesta inmediata de otro — por ejemplo una consulta de usuario o de KYC, una acción de aprobación, o leer y marcar notificaciones en la app — usa gRPC. gRPC conecta los servicios de marketplace, admin, notificación y transfer agent.

Ni Kafka ni gRPC están expuestos fuera de la plataforma. Un integrador solo ve la API HTTPS y el stream SSE.

Tareas programadas

El trabajo recurrente se ejecuta con node-cron dentro de la API Marketplace — alrededor de dos docenas de tareas, como expirar órdenes impagas, abrir los listados Coming Soon en su fecha de lanzamiento, procesar redenciones, el resumen de notificaciones de la plataforma, la facturación mensual del uso de IA y el vencimiento de suscripciones.

Como la API puede ejecutarse en más de una instancia, cada tarea toma un lock en Redis antes de ejecutarse, de modo que solo una instancia ejecuta una tarea dada a la vez.

La indexación de cadenas es independiente: el servicio de eventos consulta cada cadena con su propio calendario y publica los eventos en Kafka.

Entrega en tiempo real

El navegador recibe actualizaciones en vivo (notificaciones, decisiones de whitelist, aprobaciones de KYC/KYB y similares) mediante un stream Server-Sent Events servido por la API Marketplace. El stream se abre con un ticket de un solo uso de corta duración, para que el token de acceso nunca aparezca en una URL. Véase Tiempo real y webhooks.

Datos y almacenamiento

AlmacénUso
MongoDBAlmacén documental principal — usuarios, ofertas, órdenes, suscripciones, acuerdos, custodian wallets, registros de auditoría y más
RedisFijación de sesiones, códigos y tickets de corta duración, cachés, y los locks que mantienen las tareas programadas en una sola instancia
Almacenamiento de blobs en la nubeArchivos subidos — branding, documentos de ofertas, archivos relacionados con KYC/KYB, PDFs generados

Las claves privadas de la Custodian Wallet se guardan cifradas (AES-256-GCM).

Acceso a cadenas

Las cadenas EVM se acceden mediante proveedores RPC comerciales con failover. Los datos de la cadena Cardano provienen de un proveedor de datos de Cardano, y las transacciones de Cardano se construyen y firman en el servicio Cardano. Véase Smart contracts para ver qué funciona en cada cadena.

Integraciones de terceros

ProveedorUso
SumSubKYC (personas) y KYB (entidades)
StripePagos con tarjeta, facturación de suscripciones, Stripe Connect para los pagos a emisores, cobros de gas de transacciones de custodia
Bridge.xyzRampa fiat de entrada/salida de T-Pay (disponibilidad limitada)
SendGridCorreo transaccional
Gmail (OAuth de solo lectura)Conexión de la bandeja de entrada del Distribution Hub
Modelos Claude de AnthropicLibby AI y Structuring
CloudflareDominios propios para tenants whitelabel (Cloudflare for SaaS)
Proveedores RPC comercialesAcceso a cadenas EVM, con failover
SentrySeguimiento de errores

Las llamadas entrantes de los proveedores (por ejemplo, resultados de verificación de SumSub y eventos de pago de Stripe) se verifican por firma antes de procesarse.

Modelo de despliegue

  • Los servicios backend se compilan como imágenes de contenedor y se ejecutan como servicios contenedorizados en máquinas virtuales en la nube. Cada imagen debe arrancar correctamente en una ejecución de verificación antes de desplegarse.
  • La app web T-Suite es una compilación estática servida desde el edge de una CDN; los dominios propios whitelabel sirven la misma app.
  • Producción y el entorno de pruebas son despliegues separados con datos separados — véase Entornos y redes.