Saltearse al contenido

Desarrollo remoto

Puedes desarrollar plugins desde cualquier ordenador y subirlos a un servidor OpenFactu remoto sin SSH.

Requisitos

Ventana de terminal
npm i -g @openfactu/cli
npm i @openfactu/plugin-sdk

1. Generar API Key

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

Obtienes:

  • Client ID (ofk_...) — identificador publico
  • Client Secret (ofs_...) — clave privada, solo se muestra una vez

Las keys se pueden desactivar o revocar en cualquier momento.

2. Auto-sync al guardar

Ventana de terminal
# Desde la carpeta de tu plugin
openfactu plugin watch \
--server http://192.168.1.100:3000 \
--client-id ofk_abc123... \
--client-secret ofs_xyz789...

Cada vez que guardes un archivo, se sube al servidor y se recarga automaticamente. El browser se actualiza sin refrescar.

3. Push manual

Ventana de terminal
openfactu plugin push \
--server http://192.168.1.100:3000 \
--client-id ofk_abc123... \
--client-secret ofs_xyz789...

4. Desarrollo local

Si tienes OpenFactu instalado en tu maquina:

Ventana de terminal
# Enlazar tu plugin (symlink)
openfactu plugin link ~/mi-plugin
# Arrancar con hot reload
openfactu plugin dev mi-plugin

Hot reload

Al guardar un archivo del plugin:

  1. El watcher detecta el cambio
  2. Se limpian los hooks anteriores (sin duplicados)
  3. Se recarga init() del plugin
  4. Se actualiza el manifest en memoria
  5. WebSocket notifica al frontend
  6. Los componentes UI se recargan sin refrescar la pagina

SDK

Ventana de terminal
npm install @openfactu/plugin-sdk

Proporciona tipos completos para IntelliSense:

import type { PluginContext, HookContext } from '@openfactu/plugin-sdk';
export const init = async ({ hooks, migration, documents }: PluginContext) => {
documents.onBeforeCreate('SalesInvoice', async (ctx: HookContext) => {
// ctx.tenantId, ctx.db, ctx.data, ctx.user
});
};

Template

Usa el template oficial para empezar:

  1. Click en “Use this template” en GitHub
  2. Clona tu repo
  3. npm install
  4. Edita index.ts y manifest.json
  5. openfactu plugin push o openfactu plugin watch

API endpoints

EndpointDescripcion
POST /api/plugins/uploadSube plugin como ZIP (requiere admin/dev key)
POST /api/plugins/:id/pushSync incremental de archivos
POST /api/plugins/:id/reloadRecarga manual
GET /api/dev-keysLista API keys
POST /api/dev-keysGenera nueva key
DELETE /api/dev-keys/:idRevoca key
PATCH /api/dev-keys/:id/toggleActiva/desactiva key