IngeniaLegalAppAPI
API multi-tenant con arquitectura en capas
El repositorio de este proyecto es privado. Puedo recorrer el código y las decisiones de arquitectura en una llamada.
01_STACK
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
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.