Guilda WorkDevelopers

DESPLIEGUE

Desarrollo local

Clona el proyecto y levanta tu propio entorno de pruebas.

Guilda Work es una app Flask + SQLite (Python 3.11+), sin dependencias obligatorias de infraestructura para el modo de escritorio — el modo hospedado (multi-tenant, SSO, herramientas conectadas) sí necesita el stack Docker completo, ver Autoalojamiento.

  1. 1

    Entorno virtual y dependencias

    python -m venv .venv, actívalo, y pip install -r requirements.txt.

  2. 2

    Arranca la app

    python run.py — crea data/registro.db la primera vez, sin pasos previos. Abre una ventana nativa (WebView2), no un navegador.

  3. 3

    Ejecuta los tests

    pip install -r requirements-dev.txt && pytest — cada módulo de integración externa mockea su cliente HTTP de bajo nivel; ningún test toca data/registro.db ni depende de un contenedor real, cada uno usa su propia base de datos temporal.

bash
python -m venv .venv
source .venv/bin/activate  # .venv\Scripts\activate en Windows
pip install -r requirements.txt
python run.py

Estructura del proyecto

text
app/
  main.py         # rutas Flask + arranque de la ventana nativa (pywebview)
  db.py           # esquema y acceso a SQLite
  export.py       # exportación a JSON/CSV/Markdown + resumen automático nocturno
  importador.py   # importación de JSON/CSV de vuelta a la base
  ai_local.py     # integración con Ollama / LM Studio
  rutas_api.py    # API REST con token (ver Referencia de la API)
  rutas_docs.py   # esta misma Guía para desarrolladores
  rutas_tareas.py # blueprint de la pestaña Tareas (lista + calendario estilo Outlook)
  rutas_correo.py # blueprint del cliente de correo IMAP/POP3/SMTP
  correo.py       # lógica de correo (conexión, sincronización, envío HTML)
  templates/      # HTML (Jinja2)
  static/         # CSS/JS, logo.png, favicon.ico
data/
  registro.db     # se crea automáticamente
  backups/        # copias diarias automáticas
exports/auto/     # resúmenes automáticos nocturnos (Markdown)
tests/            # pytest
run.py            # punto de entrada (arranca el servidor + la ventana)
cli.py            # acceso a los datos por línea de comandos, sin servidor
mcp_server.py         # servidor MCP local (stdio) para Claude/Codex
mcp_server_remoto.py  # servidor MCP remoto (streamable-http + OAuth2) para ChatGPT
requirements.txt      # dependencias para ejecutar la app
requirements-dev.txt  # + pytest
requirements-mcp.txt  # + mcp, solo para los servidores MCP

Leer los datos sin arrancar la app

cli.py es de solo lectura y no requiere que la app esté corriendo — útil para scripts o para que un agente de IA con acceso a la carpeta consulte el histórico directamente:

bash
python cli.py menus
python cli.py export --formato json --desde 2026-07-01 --hasta 2026-07-31
python cli.py demo    # datos de ejemplo para pruebas/demos
python cli.py backup  # fuerza una copia de seguridad ahora mismo

También puedes leer data/registro.db directamente con sqlite3 (esquema en app/db.py) para consultas que la CLI no cubra.

Servidor MCP en desarrollo

bash
pip install -r requirements-mcp.txt
claude mcp add guilda-work-dev -- python mcp_server.py
El paquete mcp vive en un requirements-mcp.txt aparte a propósito — la app de escritorio empaquetada con PyInstaller no lo necesita, y así el .exe no carga una dependencia que la mayoría de usuarios nunca usa.

Generar el .exe de escritorio (Windows)

bash
pyinstaller --onefile --windowed --name "GuildaWork" ^
  --icon "assets/icon.ico" ^
  --add-data "app/templates;app/templates" ^
  --add-data "app/static;app/static" ^
  run.py

El ejecutable queda en dist/GuildaWork.exe. La primera vez que se ejecuta crea data/registro.db junto al propio .exe (no en una carpeta temporal), así que los datos persisten entre ejecuciones aunque lo muevas de sitio — llévate la carpeta data/ con él si lo haces. Este modo no pasa por MCP ni por la API REST multi-tenant: es un único usuario local de confianza, sin pantalla de login.