Saltearse al contenido

Plugins

Los plugins extienden OpenFactu con campos, tablas, hooks y rutas API. Se activan por empresa.

Estructura

plugins/mi-plugin/
├── index.ts ← exporta init()
├── manifest.json ← UI (opcional)
├── ui/Page.tsx ← componentes React (opcional)
└── package.json ← con @openfactu/plugin-sdk

SDK

Ventana de terminal
npm install @openfactu/plugin-sdk

Proporciona tipos para PluginContext, HookContext, CoreTableName, etc.

API de gestion

GET /api/plugins/available
POST /api/plugins/:pluginId/activate
POST /api/plugins/:pluginId/deactivate
POST /api/plugins/:pluginId/reload
POST /api/plugins/upload
POST /api/plugins/:pluginId/push

Desarrollo remoto

Puedes desarrollar plugins desde cualquier ordenador sin necesidad de tener OpenFactu instalado localmente.

1. Generar API Key

Desde la UI del ERP: Plugins > Desarrollo > Generar API Key

Obtienes un clientId (ofk_…) y un clientSecret (ofs_…).

2. Subir plugin

Ventana de terminal
# Subir una vez
openfactu plugin push --server http://mi-servidor:3000 --client-id ofk_... --client-secret ofs_...
# Auto-sync al guardar (hot reload)
openfactu plugin watch --server http://mi-servidor:3000 --client-id ofk_... --client-secret ofs_...

3. Desarrollo local

Ventana de terminal
# Enlazar plugin externo
openfactu plugin link ~/mi-plugin
# Arrancar servidor con hot reload
openfactu plugin dev mi-plugin

Hot Reload

En modo desarrollo, al guardar un archivo del plugin:

  1. El watcher detecta el cambio
  2. Se limpian los hooks anteriores
  3. Se recarga el plugin (require cache + init)
  4. Se notifica al frontend via WebSocket
  5. Los componentes UI se actualizan sin refrescar el browser

Marketplace

Los plugins se publican en el Marketplace añadiendo el topic openfactu-plugin al repositorio de GitHub.

Ventana de terminal
openfactu plugin search # Buscar plugins
openfactu plugin install nombre # Instalar