V.NÚÑEZ / 2026_INDEX
← Volver al índice
[ PRJ.ID / 002 ] — Ingenia (legal-tech)

IngeniaLegalAppAPI

API multi-tenant con arquitectura en capas

SeniorActivoIngenia (legal-tech)
Ver en GitHub →

01_STACK

Backend
ASP.NET Core 9 Web APIEntity Framework Core 9SQL ServerJWT BearerHosted services (background jobs)Email service

02_DESCRIPCIÓN

API principal del sistema legal Ingenia: despachos, expedientes, acuerdos, finanzas, planificación, catálogos jurídicos y licenciamiento multi-tenant.

Stack tecnológico

Backend: ASP.NET Core 9 Web API

BD/Infraestructura: Entity Framework Core 9 + SQL Server, JWT Bearer, hosted services (background jobs), email service, almacenamiento local de archivos

Conceptos y patrones

  • Arquitectura en capas (Controller → Interface → Service → DbContext)
  • DTOs por operación
  • Multi-tenancy real con EF Core global query filters
  • Middleware unificado (UnifiedContextMiddleware) que resuelve el contexto de tenant/despacho por request
  • Atributo custom [RequireDespacho]
  • Auditoría cross-tenant para SuperAdmin
  • Políticas de acceso a expedientes
  • Rate limiting
  • Health checks
  • Roles jerárquicos

Notas arquitectónicas

Usé EF Core global query filters junto con un middleware que resuelve el tenant por request para aislar los datos de cada despacho sin necesitar instancias separadas de la API. El SuperAdmin puede auditar accesos entre tenants.

03_CONCEPTOS_Y_PATRONES

  • Arquitectura en capas (Controller → Interface → Service → DbContext)
  • DTOs por operación
  • Multi-tenancy real con EF Core global query filters
  • Middleware unificado UnifiedContextMiddleware
  • Auditoría cross-tenant para SuperAdmin
  • Políticas de acceso a expedientes
  • Rate limiting
  • Health checks
  • Roles jerárquicos

04_COMPLEJIDAD_Y_NOTAS

Complejidad
Alta
Notas arquitectónicas

Usé EF Core global query filters junto con un middleware que resuelve el tenant por request para aislar los datos de cada despacho sin necesitar instancias separadas de la API. El SuperAdmin puede auditar accesos entre tenants.

¿Hablamos del próximo sistema?