Saltar al contenido

Plantilla (starter) ​

Es el proyecto que crea hury-plugin init, empaquetado como .zip para quien prefiera no instalar el kit globalmente o quiera leerlo antes. Es un plugin completo y funcional: una lista de elementos con alta y borrado.

PiezaFichero
Fichaplugin.json
Módulo de la API: manifiesto, permisos, rutasapi/index.ts
Rutas con permiso, validación con zod y auditoría en la misma transacciónapi/routes.ts, api/schemas.ts
Tipos de las tablas propias y los dos casts con el hostapi/tables.ts
Migración idempotente que también concede los permisosmigrations/001_<clave>.sql
Módulo del panel: ruta, entrada de menúadmin/index.ts
Pantalla con el kit de componentesadmin/pages/<Clave>Page.vue
Traduccionesadmin/i18n/{en,ca,fr}.json
Pruebas: contrato, migraciones idempotentes, traducciones completas, rutastest/plugin.test.mjs

Usarla ​

bash
unzip hury-plugin-starter-0.1.0.zip -d mi-plugin
cd mi-plugin

La plantilla lleva marcadores (__KEY__, __KEY_SNAKE__, __PASCAL__, __TITLE__, __AUTHOR__, __KIT_SPEC__) que hury-plugin init sustituye al crear el proyecto. Si descomprimes el .zip a mano tendrás que sustituirlos tú; el camino recomendado es hury-plugin init, que además valida la clave.

Convenciones que sigue ​

  • Rutas bajo el nombre del plugin (/notas/items), permisos <clave>.view y <clave>.edit.
  • Tablas con prefijo del plugin; columnas en snake_case en SQL y camelCase en TypeScript (el CamelCasePlugin del host convierte).
  • Un módulo nuevo es opt-in (defaultEnabled: false).
  • Todos los textos del admin en t("…") y traducidos a en, ca y fr; el test falla si falta alguno.
  • Versiones de fastify, kysely, zod, vue y vue-router de package.json: son las del host. El plugin no las empaqueta.

Siguiente paso: Mi primer plugin.

Contrato con el host: apiVersion 2. Sitio estático: no recoge datos ni usa servicios de terceros.