Skip to content

Vista General de Arquitectura

¿Qué es Imagy?

Imagy es una plataforma multi-tenant de servicios financieros digitales construida por Reimagine Tech LLC. Permite a empresas (B2B) operar servicios de crédito, firma digital, validación de identidad y gestión de clientes bajo un modelo SaaS con aislamiento por tenant y soporte para organizaciones internas.

Productos de la Plataforma

ProductoDominioDescripción
Imagy IdentityIdentityAutenticación, tenants, organizaciones, sesiones, RBAC
ImagFlowFlowMotor de flujos genérico: diseño, ejecución, proveedores, reglas
ImagLendLendingProductos de crédito configurables, originación, cartera, cobranza
ImagSignSignFirma digital y electrónica multi-proveedor
ImagIDSubjectSubject 360: perfil unificado, dispositivos, listas B/N, scoring
ImagGuardComplianceKYC, AML, PEP, listas restrictivas (futuro)

Diagrama de Arquitectura de Alto Nivel

Capas de la Arquitectura

Capa de Clientes

ClienteTecnologíaPropósito
Imagy ConsoleReact 19 + Vite + TypeScriptPanel administrativo unificado para todos los módulos y tenants
Apps PúblicasReact 19 (standalone)Wizard de crédito, ejecución de flujos (sin autenticación previa)
Apps TercerosCualquieraIntegración via API REST con JWT o API Key

Capa Edge (API Gateway)

El Gateway es el único punto de entrada público. Basado en YARP (.NET), implementa:

  • BFF Pattern: Tokens almacenados server-side, solo cookies httpOnly al browser
  • JWT Validation: Valida firma, expiración, issuer de Keycloak
  • JWT Propagation: Propaga el JWT completo a servicios internos
  • Tenant Routing: Resuelve tenant desde subdominio, header o query param
  • Rate Limiting: Por tenant y por endpoint
  • CORS: Configurado por tenant (white-label)

Capa de Identity

ComponenteResponsabilidad
KeycloakIdentity Provider multi-realm, Organizations API, SSO, IdP brokering
Tenant ManagementControl Plane: CRUD tenants, usuarios, roles, módulos, organizaciones, temas

Capa de Servicios de Negocio

Cada servicio es un microservicio independiente con su propia base de datos:

ServicioBDComunicación
ImagFlowimagy_flowPublica eventos, expone API para ejecución
ImagLendimagy_lendingConsume eventos de Flow, invoca Flow y Sign
ImagSignimagy_signInvocado por Flow (como paso) y por Lend (firma de contratos)
ImagIDimagy_subjectConsume eventos de todos, expone API de consulta

Capa Transversal

ServicioResponsabilidad
Provider GatewayAdapter pattern para proveedores externos, failover, circuit breaker
NotificationsEnvío multi-canal (SMS, email, webhook, push)
AuditTrazabilidad inmutable de todas las acciones

Capa de Infraestructura

ComponenteServicio AWSPropósito
PostgreSQL 16Aurora Serverless v2Persistencia (cluster compartido, BD por dominio)
Valkey 8ElastiCache ServerlessCache, sesiones, datos temporales
RabbitMQAmazon MQMensajería asíncrona entre servicios
Object StorageS3Documentos, imágenes, evidencias
SecretsSecrets ManagerCredenciales, API keys, rotación automática
DNSRoute 53Dominios, wildcard, resolución
TLSACMCertificados auto-renovables
WAFAWS WAFProtección OWASP, rate limiting
ComputeECS FargateContenedores serverless

Comunicación entre Servicios

TipoCuándo usarEjemplo
HTTP síncronoNecesitas respuesta inmediata para continuarImagLend consulta ImagID para verificar listas antes de aprobar
Evento asíncronoNotificar algo que pasó, sin esperar respuestaImagLend publica credit.disbursed, ImagID lo consume para actualizar perfil
HTTP + eventoAcción que requiere confirmación + notificaciónImagFlow invoca ImagSign (HTTP), luego ImagSign publica signature.completed

Principios de Diseño

PrincipioImplementación
JWT PropagationEl JWT viaja completo entre servicios. Cada servicio valida independientemente.
Database per DomainCada dominio tiene su BD. Nunca acceder a la BD de otro servicio.
Event-DrivenComunicación asíncrona via RabbitMQ. Eventos son contratos versionados.
Multi-Tenancy (RLS)PostgreSQL Row Level Security. Aislamiento por tenant_id en cada query.
Zero TrustValidación en cada capa. No confiar en headers custom.
Maker-CheckerCambios críticos requieren aprobación (configurable por tenant).
Trazabilidad TotalTodo evento se publica. Subject 360 consolida la vista del cliente.
FTR-CompliantDiseñado para certificación AWS Partner desde el inicio.

Flujo de un Request Típico

Despliegue

Producción (AWS)

Local (Docker Compose)

bash
docker compose -f docker-compose.infra.yml up -d   # PostgreSQL, Valkey, RabbitMQ, Keycloak
dotnet run --project src/Imagy.{Domain}.Api         # Cada servicio individualmente

Repositorios

RepositorioCapaDescripción
imagy-identity-gatewayEdgeAPI Gateway (BFF, OIDC, YARP)
imagy-identity-managementIdentityTenant Management (Control Plane)
imagy-flow-engineCoreMotor de flujos, ejecución, proveedores, reglas
imagy-lendingCoreProductos de crédito, originación, cartera
imagy-signCoreFirma digital y electrónica
imagy-subjectCoreSubject 360, dispositivos, listas
imagy-consoleClientPanel administrativo React
imagy-console-publicClientApps públicas (wizard, ejecución)
imagy-infraInfraAWS CDK (Infrastructure as Code)
imagy-sharedSharedLibrerías compartidas (.NET)
docs/reimagine-platformDocsDocumentación central (este sitio)

Stack Tecnológico

CapaTecnología
Backend.NET 10, C# 13, ASP.NET Core
ORM (escritura)Entity Framework Core 10
Queries (lectura)Dapper 2.x
CQRSMediatR
ValidaciónFluentValidation
MensajeríaMassTransit + RabbitMQ
AuthKeycloak 24+ (realm-per-tenant, Organizations)
GatewayYARP 2.x
FrontendReact 19, TypeScript 6, Vite 8
State (FE)Zustand, TanStack Query
Forms (FE)React Hook Form + Zod
EstilosTailwind CSS 4
Base de datosPostgreSQL 16 (Aurora Serverless v2)
CacheValkey 8 (ElastiCache)
MensajeríaRabbitMQ (Amazon MQ)
StorageS3
ComputeECS Fargate
IaCAWS CDK (TypeScript)
CI/CDGitHub Actions
ObservabilityCloudWatch, X-Ray
SecurityWAF, KMS, Secrets Manager, GuardDuty

Documentos Relacionados

Reimagine Tech LLC — Documentacion Interna