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-sdkSDK
npm install @openfactu/plugin-sdkProporciona tipos para PluginContext, HookContext, CoreTableName, etc.
API de gestion
GET /api/plugins/availablePOST /api/plugins/:pluginId/activatePOST /api/plugins/:pluginId/deactivatePOST /api/plugins/:pluginId/reloadPOST /api/plugins/uploadPOST /api/plugins/:pluginId/pushDesarrollo 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
# Subir una vezopenfactu 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
# Enlazar plugin externoopenfactu plugin link ~/mi-plugin
# Arrancar servidor con hot reloadopenfactu plugin dev mi-pluginHot Reload
En modo desarrollo, al guardar un archivo del plugin:
- El watcher detecta el cambio
- Se limpian los hooks anteriores
- Se recarga el plugin (require cache + init)
- Se notifica al frontend via WebSocket
- 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.
openfactu plugin search # Buscar pluginsopenfactu plugin install nombre # Instalar