Plantilla mínima para crear un módulo de Convive.
- Click en Use this template en GitHub para crear tu propio repo
(recomendado: nombrarlo
convive-module-<id>). - Edita
module.jsoncon tuid,name,version,description. - Ajusta las migraciones en
migrations/(recuerdaIF NOT EXISTS). - Implementa tus rutas en
routes/. - Crea un tag
vX.Y.Zy pushea: el workflow de release generará el tarball y lo publicará automáticamente.
Una vez publicado el primer release:
- Desde la UI:
/settings/modules→ pestaña Origen personalizado → introducirtu-usuario/convive-module-<id>→ Instalar. - Desde la CLI:
docker compose exec server npm run module:install -- tu-usuario/convive-module-<id>.
.
├── module.json ← manifiesto (id, version, depends, convive)
├── index.js ← entrypoint con register(ctx)
├── migrations/ ← .sql aplicados al cargar el módulo
└── routes/ ← Express routers, factories que reciben ctx
Tu register(ctx) recibe:
| Campo | Uso |
|---|---|
ctx.db, ctx.tx |
acceso a SQLite del núcleo |
ctx.router |
Express router montado en /api/m/<id> |
ctx.mountAsLegacy(['/api/foo']) |
rutas adicionales para compatibilidad |
ctx.registerMigrations(dir) |
aplicar las .sql del módulo |
ctx.registerCron(spec, fn) |
tarea programada con node-cron |
ctx.auth.authRequired, ctx.auth.householdScope, ctx.auth.requireRole(...) |
middleware |
ctx.utils.asyncHandler/validate/toCamel/errors |
helpers |
ctx.notify, ctx.notifyHousehold |
notificaciones |
ctx.exports, ctx.useModule(otherId) |
compartir código entre módulos |
ctx.logger |
log con prefijo del módulo |
- Las migraciones deben ser idempotentes (
CREATE TABLE IF NOT EXISTS,INSERT … WHERE NOT EXISTS). Si el usuario reinstala tu módulo, sus datos no deben perderse. - No accedas a tablas de otros módulos a menos que declares
depends. - No subas archivos generados al repo: el workflow de release los crea.
MIT — usa lo que quieras como base.