Contexto del sistema¶
Vista de contenedores¶
flowchart LR
User["Usuario o miembro del equipo"] --> UI["Frontend React y Vite"]
UI -->|HTTP /api and WebSocket| API["Backend FastAPI"]
API --> Vault["Vault Markdown y recursos"]
API --> Local["SQLite, índices, cachés y secretos exclusivamente locales"]
API --> MCP["Servidores MCP y proveedores de IA"]
API --> Comms["Proveedores de correo, calendarios y contactos"]
API --> Zotero["Servidor de traducción de Zotero"]
API --> Publish["Notion, Drupal y servicios de redes sociales"]
Desktop["Shell de escritorio Electron"] --> UI
Desktop --> API
Office["Complementos de oficina y clipper web"] --> API
Límite del frontend¶
El frontend es una aplicación React de una sola página. app/App.tsx gestiona
la autenticación y el shell global; app/routes.tsx compone rutas, ámbito del
Vault, redirecciones y carga diferida de páginas, mientras Home se carga al inicio.
app/bootstrap.tsx prepara el enrutamiento y el idioma;
app/AppProviders.tsx conserva el orden StrictMode → API → router → autenticación.
El traslado sitúa la entrada CSS y la llamada a bootstrap en app/main.tsx,
con estilos ordenados en app/styles/index.css. Vite actúa como proxy de /api
y WebSocket durante el desarrollo nativo.
Organización de los módulos¶
El traslado revisado asigna composición, navegación e integración global a
app/; dominios de producto a features/; infraestructura, UI, registros,
enrutamiento y adaptadores API reutilizables a shared/; y contratos generados
a generated/. Los contratos generados se regeneran, nunca se editan a mano.
El proveedor de autenticación pertenece a features/auth/context/AuthProvider.tsx
y su contexto reutilizable a shared/auth/auth-context.ts.
El manifiesto frontend/feature-public-entries.json recoge rutas
públicas exactas revisadas y sus motivos. Las entradas index de la raíz de
cada feature siguen admitidas; un módulo vecino no listado sigue siendo privado.
Los consumidores acceden directamente a una entrada raíz o explícitamente
revisada, incluidos imports diferidos separados, sin introducir un agregador de
carga inmediata. El manifiesto describe el acceso; no importa módulos.
Las dependencias pueden ir de app hacia las features y la infraestructura
compartida. Las features no dependen de app; shared no depende de features
ni de app, tampoco en imports solo de tipos. Trasladar la previsualización
Markdown/wikilink a la infraestructura compartida no resuelve su ciclo interno.
El traslado debe conservar carga diferida, estilos, rutas y payloads; la
estructura por sí sola no acredita una integración ni una release completas.
Los componentes llaman al backend mediante adaptadores API tipados en shared/api/.
El backend sigue autorizando usuarios, workspaces, vaults y operaciones destructivas.
Límite del backend¶
backend/server.py crea la aplicación FastAPI y registra los routers de dominio. Los módulos de rutas convierten los contratos HTTP en llamadas a servicios. La lógica de negocio reside en backend/services/; las entidades relacionales persistidas, en backend/models/; la orquestación de IA, en backend/agent/; y el trabajo programado, en backend/scheduler/ y las habilidades de ejecución.
El ciclo de vida de la aplicación inicia la infraestructura compartida, construye las capacidades del agente, precarga los índices que pueden prepararse de forma segura e inicia los workers IDLE de correo; al finalizar, cierra esos recursos. El arranque de las integraciones opcionales está aislado para que la indisponibilidad de un proveedor no aborte todo el servidor.
Límites de almacenamiento¶
El vault y los datos locales tienen deliberadamente propiedades distintas de durabilidad y sincronización:
- Vault: contenido portátil del usuario; puede residir en un disco local o en un proveedor de archivos respaldado por la nube.
- Datos locales: SQLite, índices, cachés, secretos, registros, puntos de control y salidas; nunca se sincronizan con la nube.
- Configuración: combina valores predeterminados de la aplicación, parámetros del usuario o del vault, valores sobrescritos por el entorno y almacenes locales de credenciales.
Consulte datos y almacenamiento para conocer las responsabilidades y las reglas de reconstrucción.
Sistemas externos¶
Todos los servicios externos son dependencias opcionales de dominio. OAuth y credenciales se gestionan localmente. Los adaptadores normalizan el comportamiento específico del proveedor para Google, Microsoft, IMAP/SMTP, CalDAV, Notion, Drupal, proveedores de IA, redes sociales, proveedores de archivos y traducción Zotero.