Saltar al contenido principal

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:

  1. DTOs explícitos para requests y responses.
  2. Interfaces para servicios e infraestructura.
  3. SPs y vistas como punto real de persistencia.
  4. Respuestas unificadas con ServiceResponse<T>.

Esto permite cambiar piezas de la capa de transporte sin tocar el núcleo de datos.

Stack tecnológico

CapaTecnología
Base de datosMicrosoft SQL Server
Backend.NET 10 Web API modular
FrontendFlutter
DocumentaciónDocusaurus (este sitio)
DNSCloudflare API v4
IntegracionesN8N, 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.