Saltar a contenido

Manual de Desarrollo de Módulos

NexGestion utiliza un sistema de Descubrimiento Dinámico. El Core no conoce la lógica de su módulo hasta que lee su manifiesto. Esto permite una arquitectura desacoplada y escalable.

01. Estructura de Archivos

Jerarquía del Módulo

modules/<slug>/
├── manifest.json       # Definición de rutas, métodos y permisos
├── actions/            # Scripts de procesamiento (Lógica de servidor)
├── views/              # Interfaces de usuario (HTML/PHP)
├── mounts/             # Fragmentos para inyección en el Core
└── db/                 # SQL Idempotente
    ├── install.mysql.sql
    ├── install.sqlite.sql
    ├── uninstall.mysql.sql
    └── uninstall.sqlite.sql

02. El Manifiesto Técnico

Manifest.json y Permisos

Los permisos siguen el formato vista.permiso. Esto permite que el sistema de roles del core gestione quién puede ejecutar cada acción.

{
  "slug": "mi_modulo",
  "views": [
    {
      "id": "panel_mi_modulo",
      "file": "main.php",
      "permissions": ["ver", "editar"]
    }
  ],
  "actions": [
    {
      "id": "save_data",
      "view": "panel_mi_modulo",
      "file": "save.php",
      "permission": "panel_mi_modulo.editar",
      "methods": ["POST"]
    }
  ]
}

03. Implementación de Acciones

Acciones y Base de Datos

Las acciones deben ser seguras y devolver siempre un estado consistente. NexGestion utiliza HTMX para manejar transiciones sin recarga de página.

<?php
// modules/mi_modulo/actions/save.php
require_once __DIR__ . '/../../../db.php';

// Validar entrada y permisos de negocio
if ($_SERVER['REQUEST_METHOD'] !== 'POST') die('Acceso denegado');

$stmt = $db->prepare("INSERT INTO modulo_tabla (campo) VALUES (?)");
$stmt->execute([$_POST['dato']]);

return ['ok' => true];

04. Inyección de UI

Mount Points y HTMX

Los mounts permiten "enganchar" trozos de su módulo en el core. Ejemplo de un botón en la barra lateral:

<!-- modules/mi_modulo/mounts/sidebar_link.php -->
<button 
  hx-get="router.php?page=panel_mi_modulo" 
  hx-target="#main-content"
  class="sidebar-item">
  Mi Módulo
</button>

05. Desarrollo Acelerado

Prompt para Asistentes de IA

Utilice este prompt para generar módulos completos compatibles con NexGestion:

Crea un módulo portable para NEXGestión con slug "[SLUG]". Estructura: manifest.json, views, actions, mounts y db mysql/sqlite. Manifest declarativo con permisos vista.permiso. Acciones con validación de input. SQL idempotente. Mounts en sidebar.main y dashboard.widgets.

06. Validación

Comandos de Consola

Antes de distribuir su módulo, asegure la integridad sintáctica:

# Validar sintaxis PHP en todas las carpetas
php -l modules/<slug>/views/*.php
php -l modules/<slug>/actions/*.php
php -l modules/<slug>/mounts/*.php