Arquitectura del sistema
Raft sigue un enfoque DB-first: SQL Server conserva el estado y buena parte de la lógica persistente, mientras que el backend .NET expone la API, aplica seguridad y conecta con servicios externos.
Diagrama general
Roles de cada componente
Motor de base de datos (SQL Server)
Almacena el estado persistente y ejecuta reglas que no conviene duplicar en el backend:
- Stored procedures para operaciones de escritura o cambios de estado.
- Views para consultas agregadas o de dashboard.
- Functions para cálculos o transformaciones.
- Jobs para TTL, limpieza y acciones diferidas.
Ver el catálogo y las convenciones en Stored Procedures y el ciclo de vida en Ciclo de vida de bases.
Backend .NET modular
El backend ya no es un monolito de arranque largo. La composición vive por módulos:
Modules/Platform: autenticación, OAuth, CORS, rate limiting y validación de configuración.Modules/Data: DbContexts, Data Protection y bootstrap de SQL.Modules/Domain: servicios de aplicación, trackers y workers de ciclo de vida.Modules/Provisioning: implementaciones de aprovisionamiento para motores y resolvers.Modules/Hosting: pipeline HTTP, forwarded headers y tracking de disponibilidad.
:::danger Regla de oro El backend coordina, pero no reemplaza el contrato persistente. Si un cambio afecta el modelo de negocio, primero se revisa el SQL. :::
Contratos e integración
El contrato backend se apoya en:
- DTOs explícitos para requests y responses.
- Interfaces para servicios e infraestructura.
- SPs y vistas como punto real de persistencia.
- Respuestas unificadas con
ServiceResponse<T>.
Esto permite cambiar piezas de la capa de transporte sin tocar el núcleo de datos.
Stack tecnológico
| Capa | Tecnología |
|---|---|
| Base de datos | Microsoft SQL Server |
| Backend | .NET 10 Web API modular |
| Frontend | Flutter |
| Documentación | Docusaurus (este sitio) |
| DNS | Cloudflare API v4 |
| Integraciones | N8N, AI providers, SMTP |
Próximos pasos de esta sección
- Añadir diagramas de secuencia para login, aprovisionamiento y revocación.
- Documentar el contrato de cada módulo del backend con más detalle.
- Completar un ERD navegable cuando el esquema final esté estabilizado.