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.