Volver a Documentación
Visión General

Visión General del Sistema

Un mapa conciso del sistema, el ciclo principal y las dependencias requeridas.

15 min de lectura

PlanToCode es un espacio de trabajo de escritorio que planifica y valida cambios de codigo antes de la ejecucion. Coordina un motor de trabajos Rust local, una UI React y un proxy de servidor para llamadas LLM. El sistema sigue una arquitectura offline-first donde la aplicacion de escritorio opera de forma independiente usando SQLite para el estado local, mientras que el servidor maneja la autenticacion, enrutamiento de proveedores LLM y facturacion. Sin acceso a LLM (gestionado en hosting o con tus claves en self-host), los pipelines de planificacion y analisis no se ejecutaran.

Mapa del sistema

Mapa de la aplicación de escritorio, el núcleo Rust, almacenamiento SQLite local y el proxy del servidor.

Diagrama del mapa del sistema PlanToCode
Click to expand
Arquitectura de cuatro capas con datos fluyendo hacia abajo y eventos transmitidos hacia arriba.

Ciclo principal en práctica

  1. Captura la tarea desde texto, transcripción de voz (a través del hook useVoiceTranscription) o análisis de grabación de video.
  2. Refina la descripción de la tarea y los objetivos con trabajos text_improvement a través de TextImprovementProcessor.
  3. Ejecuta el flujo de trabajo de descubrimiento de archivos: RootFolderSelectionProcessor selecciona directorios, RegexFileFilterProcessor aplica patrones, FileRelevanceAssessmentProcessor puntúa contenidos, ExtendedPathFinderProcessor expande el contexto.
  4. Genera planes de implementación a través de ImplementationPlanProcessor, que transmite planes formateados en XML al visor Monaco.
  5. Opcionalmente fusiona múltiples borradores de planes con ImplementationPlanMergeProcessor usando planes fuente etiquetados con XML.
  6. Ejecuta o exporta el plan aprobado a través de sesiones de terminal PTY o plantillas de botones de copiado para agentes externos.
  7. Persist every job, artifact, and terminal log to SQLite (background_jobs, terminal_sessions tables) for history and recovery.

Componentes principales

  • UI de Escritorio (React) en desktop/src/ con vistas de planes Monaco, paneles de terminal y proveedores (SessionProvider, TextImprovementProvider).
  • Núcleo Rust (Tauri v2) en desktop/src-tauri/ manejando comandos, trabajos y persistencia con permisos basados en capacidades.
  • Esquema SQLite local en desktop/src-tauri/migrations/consolidated_schema.sql con modo WAL para acceso concurrente.
  • Proxy del servidor (Actix-Web) en server/src/ para autenticación, enrutamiento de proveedores, respuestas en streaming y facturación a través de Stripe.
  • Cliente móvil iOS en mobile/ios/Core/ con interfaz SwiftUI, Auth0 PKCE y enlace de dispositivo WebSocket.
  • Automatización de infraestructura en infrastructure/ansible/ para servidores dedicados Hetzner (UE) e InterServer (EE.UU.).

Dependencias requeridas

  • Proveedores LLM externos (OpenAI, Anthropic, Google, X.AI, OpenRouter) para generación de planes, transcripción y análisis.
  • Autenticación basada en Auth0 con flujo PKCE para sesiones de escritorio y móvil.
  • PostgreSQL 17 y Redis 7+ para cuentas de usuario del lado del servidor, estado de facturación y colas de trabajos (despliegues auto-hospedados).
  • Acceso al sistema de archivos local a través de git ls-files o recorrido de directorios para flujos de trabajo de descubrimiento de archivos.
  • Endpoint de transcripción compatible con Whisper para procesamiento de entrada de voz.

Dónde vive el comportamiento en el repositorio

  • Comandos Tauri: desktop/src-tauri/src/commands/ (35+ módulos de comandos: job_commands.rs, workflow_commands.rs, terminal_commands.rs, session_commands.rs, auth0_commands.rs)
  • Orquestación de flujos de trabajo: desktop/src-tauri/src/jobs/workflow_orchestrator/ (definition_loader.rs, stage_scheduler.rs, event_emitter.rs, payload_builder.rs)
  • Procesadores de trabajos: desktop/src-tauri/src/jobs/processors/ (implementation_plan_processor.rs, text_improvement_processor.rs, root_folder_selection_processor.rs)
  • Repositorios SQLite: desktop/src-tauri/src/db_utils/ (background_job_repository/, session_repository.rs, terminal_repository.rs)
  • Rutas del servidor: server/src/routes.rs (configure_routes, configure_public_auth_routes, configure_webhook_routes)
  • Manejadores de proxy LLM: server/src/handlers/proxy_handlers.rs y server/src/handlers/proxy/ (router.rs, providers/)
  • Transformadores de proveedores: server/src/handlers/provider_transformers/ (openai.rs, google.rs, anthropic.rs, xai.rs)
  • Flujos de trabajo iOS: mobile/ios/Core/Sources/Workflows/WorkflowManager.swift con MobileSessionManager y APIClient
  • Playbooks de infraestructura: infrastructure/ansible/site-base.yml (endurecimiento, PostgreSQL, Redis) y site-app.yml (despliegue)

Continue to the runtime walkthrough

See how the core loop executes in practice with detailed job timelines and artifact flows.