Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
isms-builder — Sistema de Gestión de Seguridad de la Información auto-alojado — ISO 27001, NIS2, GDPR/DSGVO, BSI IT-Grundschutz | Kitploit
Herramientas/GitHubGitHub/coolstartnow/isms-builder
Aprendizaje y EducaciónRespuesta a IncidentesRecursos CuradosRutas de Aprendizaje y Cursos
GitHubcoolstartnow/isms-builder

isms-builder

Sistema de Gestión de Seguridad de la Información auto-alojado — ISO 27001, NIS2, GDPR/DSGVO, BSI IT-Grundschutz

Ver Repositorio
2044738hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web
<!-- © 2026 Claude Hecker — ISMS Builder V 1.40.3 — AGPL-3.0 -->
![ISMS Builder Banner](https://assets.kitploit.com/production/public/readmes/12462/26d3b00b65a4f94cc34514132f1ee5f5c9036e45516880da99fb9501dd79bead.png)
# ISMS Builder

**Sistema de Gestión de Seguridad de la Información autoalojado — código abierto, sin necesidad de nube**

[![CI](https://github.com/coolstartnow/isms-builder/actions/workflows/ci.yml/badge.svg)](https://github.com/coolstartnow/isms-builder/actions/workflows/ci.yml)
[![Tests](https://img.shields.io/badge/tests-423%20passing-brightgreen)](https://github.com/coolstartnow/isms-builder/actions)
[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE)
[![Node.js](https://img.shields.io/badge/Node.js-18+-339933?logo=node.js&logoColor=white)](https://nodejs.org)
[![Version](https://raw.githubusercontent.com/coolstartnow/isms-builder/HEAD/docs/badges/version.svg)](CHANGELOG.md)

📖 **[Wiki](https://github.com/coolstartnow/isms-builder/wiki)** — Uso de la imagen Docker y
variables de entorno, arquitectura y módulos, FAQ, contribuir (DE/EN)

<!-- GDPR NOTE: The four badges above (CI, Tests, License, Node.js) load resources
     from external servers (github.com, shields.io/Cloudflare, img.shields.io).
     When this README is rendered in a browser, these requests transmit the viewer's
     IP address to third parties (incl. US-based servers — GDPR Art. 44 ff.).
     For 100% GDPR-compliant self-hosted documentation, replace these four badge
     lines with their local equivalents from docs/badges/ or remove them entirely. -->

---

> ## ⚠️ Advertencia de seguridad: repositorios falsos y copias que distribuyen malware
> ISMS Builder **no tiene "releases" empaquetadas, instaladores ni archivos ZIP descargables** — la única
> fuente legítima es este repositorio, clonado o descargado directamente desde GitHub como código
> fuente sin modificar. Tenemos conocimiento de al menos un **repositorio malicioso que suplanta este proyecto**
> (README falso, botón "Download" falso que enlaza a un ZIP disfrazado de captura de pantalla, que contiene un
> cargador de malware para Windows — cadena de carga útil `.cmd` → `.exe` → Lua-DLL). **No descargues ni ejecutes ningún
> ZIP/instalador/exe de "isms_builder" desde ningún sitio que no sea este repositorio.**
> Si encuentras un repositorio o sitio sospechoso que suplante este proyecto, por favor abre una
> [issue](https://github.com/coolstartnow/isms-builder/issues) o una
> [discussion](https://github.com/coolstartnow/isms-builder/discussions) para que podamos señalarlo.

---

> **Estado: desarrollo activo — todavía no es un producto terminado.**
> Los módulos principales son funcionales y están en uso, pero algunas funciones están incompletas
> y la plataforma sigue creciendo. Las contribuciones, los comentarios y las pruebas
> en entornos reales son muy bienvenidos — es exactamente por eso que se liberó como código abierto.

---

> 🛡️ **Proyecto relacionado: [NIS2 Quick-Check](https://github.com/coolstartnow/nis2-quickcheck)** —
> una autoevaluación NIS2 gratuita e independiente (10 dominios × 5 preguntas, los 27 estados miembros de la UE, los 24
> idiomas oficiales de la UE). Se ejecuta completamente en el navegador, sin backend, sin instalación. No forma parte de
> ISMS Builder y no es necesario para usarlo — solo una herramienta complementaria para una primera orientación rápida.

---

## ¿Qué es ISMS Builder?

ISMS Builder es una **plataforma web autoalojada** para gestionar un Sistema de Gestión de Seguridad de la Información (SGSI).
Cubre todo el ciclo de vida del cumplimiento — desde la redacción de políticas hasta la evidencia de auditoría — para ISO 27001:2022, NIS2, GDPR/DSGVO, BSI IT-Grundschutz y otros marcos.

**Sin nube. Sin cuotas SaaS. Tus datos permanecen en tu servidor.**

> Diseñado para PYMEs, equipos de TI y consultores que necesitan una herramienta SGSI real sin un contrato con proveedor de cinco cifras.

---

## Uso previsto y alcance

Este proyecto comenzó como una herramienta de trabajo para un único profesional de SGSI y creció a partir de ahí. Es
código abierto porque el trabajo puede ser útil para otros — no porque sea un producto comercial
disfrazado. Ser explícito sobre esto te ayuda a decidir si encaja en tu situación.

**Para qué está diseñado.** Un equipo SGSI pequeño — a menudo una persona, a veces un puñado — que
redacta y mantiene la documentación de un sistema de gestión: políticas, riesgos, activos,
controles, evidencia. Se espera que el número de personas que *necesitan una cuenta* siga siendo pequeño.
Llegar a una audiencia amplia funciona sin cuentas: las confirmaciones de políticas se envían como
enlaces basados en tokens, de modo que los destinatarios leen y confirman un documento sin iniciar sesión nunca,
y sin aparecer en ninguna lista de usuarios.

**Qué espera de ti.** ISMS Builder es autoalojado, y todo lo que se deriva de ello
es responsabilidad tuya: despliegue, TLS, endurecimiento, copias de seguridad, actualizaciones, control de acceso y las obligaciones
de protección de datos para todo lo que almacenes en él. El proyecto incluye una configuración predeterminada
razonable, no un servicio gestionado.

**Qué no es.** No hay oferta SaaS alojada, ni contrato de soporte comercial, ni
acuerdo de nivel de servicio. No es un producto de alojamiento multiinquilino. No te certifica
frente a ningún estándar, y no es asesoramiento legal — te ayuda a organizar y evidenciar el trabajo,
pero la evaluación sigue siendo tuya y de tu auditor.

**Quién lo mantiene.** Una persona, junto con un trabajo a tiempo completo. Las issues y discusiones se leen y
responden, normalmente en pocos días; los informes de seguridad tienen prioridad. Las solicitudes de funciones son bienvenidas y
realmente dan forma a la hoja de ruta, pero compiten por unas tardes limitadas. Si tu organización depende
de un plazo fijo o una respuesta garantizada, un proveedor comercial es la recomendación honesta —
y eso no es una razón para evitar el proyecto, solo una razón para planificar de forma realista.

---

## Capturas de pantalla

| Inicio de sesión | Panel |
|---|---|
| ![Login](https://assets.kitploit.com/production/public/readmes/12462/dad90b27558016928f149aa956d5b5ecef78f7639fe00117fa6e7b6b9c610884.png) | ![Dashboard](https://assets.kitploit.com/production/public/readmes/12462/ad427999a2d247f7b486faff089572c213b6bf809d64946438305c1519e54566.png) |

| Declaración de aplicabilidad | Gestión de riesgos |
|---|---|
| ![SoA](https://assets.kitploit.com/production/public/readmes/12462/19133912a32d643c4db93e977047aa6f93cc85889555a63dc29b986f5290d196.png) | ![Risks](https://assets.kitploit.com/production/public/readmes/12462/19133912a32d643c4db93e977047aa6f93cc85889555a63dc29b986f5290d196.png) |

| GDPR y protección de datos | Gestión de activos |
|---|---|
| ![GDPR](https://assets.kitploit.com/production/public/readmes/12462/453b4e84b6c08241d87e8edd96d803a68b5d56565aee2b317444f30db8d9ffb5.png) | ![Assets](https://assets.kitploit.com/production/public/readmes/12462/053332b35c995bc3a672be7bfd193ca3789f3245e7cdffaa456833fabdec309e.png) |

| Orientación y documentación | Informes |
|---|---|
| ![Guidance](https://assets.kitploit.com/production/public/readmes/12462/2eb44e0df23e8eba8d70e09a14a18028d1d9dc37e8e734d0c837f2b7fe6ec787.png) | ![Reports](https://assets.kitploit.com/production/public/readmes/12462/765395a2a3cf39ec72a00ad53df464bc79d54a69ca34738bdeb775ff7e1584f3.png) |

> Ejecuta `npm start` y abre `https://localhost:3000` para explorar el conjunto completo de datos de demostración localmente.

---

## Resumen de funciones

| Módulo | Descripción | Estándares |
|---|---|---|
| **Gestión de políticas** | CRUD de plantillas, versionado, ciclo de vida (borrador → revisión → aprobado → archivado), jerarquía de espacios, adjuntos | ISO 27001 §5 |
| **Declaración de aplicabilidad** | 313 controles en 8 marcos, edición en línea, análisis de brechas, mapeo cruzado | ISO 27001 A / BSI / NIS2 / EUCS / EUAI / ISO 9001 / CRA |
| **Gestión de riesgos** | Registro de riesgos, planes de tratamiento, rol de auditor | ISO 27001 §6.1 |
| **Objetivos de seguridad** | Seguimiento de KPI con barras de progreso, integración con calendario | ISO 27001 §6.2 |
| **GDPR y privacidad** | VVT, contratos de encargado del tratamiento, DSFA, TOMs, cola de DSAR, temporizador de 72 h, registro de eliminación con alertas por correo electrónico | DSGVO Art. 13–35 |
| **Gestión de activos** | Registro de activos, tipos de activos editables, objetivos de protección (CIA + autenticidad) con herencia de dependencias, niveles de clasificación, seguimiento de fin de vida | ISO 27001 A.5.9–5.12 |
| **BCM / BCP** | Análisis de impacto en el negocio, planes de continuidad, ejercicios | ISO 27001 A.5.29–5.30 / NIS2 |
| **Registros de formación** | Catálogo de formación, seguimiento de finalización, carga de certificados | ISO 27001 A.6.3 |
| **Gestión de proveedores** | Registro de proveedores, programación de auditorías, evaluación de riesgos | ISO 27001 A.5.19–5.22 |
| **Legal y contratos** | Contratos, NDAs, políticas de privacidad, calendario de vencimientos | |
| **Bandeja de incidentes** | Bandeja del CISO + **formulario público de notificación** (no requiere inicio de sesión) | NIS2 / BSI |
| **Gobernanza** | Revisiones por la dirección, seguimiento de acciones | ISO 27001 §9.3 |
| **Informes** | Matriz de cumplimiento (Control × Entidad), informe de brechas, ciclos de revisión, exportación CSV | |
| **Hallazgos de auditoría** | Registro de hallazgos (IST→SOLL→Riesgo→Recomendación), planes de acción, seguimiento de severidad/estado, referencia FIND-YYYY-NNNN | ISO 27001 §9.2 |
| **Trazabilidad** | Cada registro enlaza con controles de la SoA + documentos de políticas — bidireccional | |
| **Búsqueda semántica** | Búsqueda con IA local mediante Ollama (nomic-embed-text) con respaldo por palabras clave | |
| **Multi-entidad** | Árbol de estructura corporativa, aplicabilidad por entidad para controles y políticas | |
| **Interfaz multilingüe y datos de demostración** | Interfaz completa y contenido de demostración en 🇩🇪 DE / 🇬🇧 EN / 🇫🇷 FR / 🇳🇱 NL; el administrador controla los idiomas disponibles | |

---

### ⚠ IMPORTANTE: los controles ISO requieren instalación manual por parte del administrador

> **ISO 27001:2022, ISO 9000:2015 e ISO 9001:2015** son estándares protegidos por derechos de autor publicados
> por la Organización Internacional de Normalización (ISO, © ISO). Las definiciones de los controles
> (títulos, descripciones, texto de requisitos) **no están incluidas** en este software y **no deben**
> redistribuirse sin una licencia ISO válida.

**Qué significa esto en la práctica:**
Los módulos de SoA para ISO 27001, ISO 9000 e ISO 9001 se distribuyen sin contenido de controles.
El administrador **debe importar manualmente** los controles antes de que estos marcos sean utilizables:

1. Obtén una copia con licencia del estándar en [iso.org](https://www.iso.org/) o en un organismo nacional autorizado
2. Prepara un archivo JSON con tus definiciones de controles (formato documentado en `scripts/import-iso-controls.sh`)
3. Ejecuta el script de importación:   ```bash
   bash scripts/import-iso-controls.sh path/to/iso-controls.json
   ```
4. Reiniciar el servidor de ISMS Builder

> **Frameworks incluidos de serie (no se requiere licencia ISO):**
> BSI IT-Grundschutz, EU NIS2, EUCS, EU AI Act y CRA se basan en legislación de la UE
> y publicaciones federales alemanas de acceso público y están totalmente preinstalados.

Operar los módulos de frameworks ISO sin una licencia válida para el estándar correspondiente es
responsabilidad exclusiva del operador. El proyecto ISMS Builder y sus colaboradores no aceptan
ninguna responsabilidad por el uso sin licencia de contenido protegido por ISO.

---

## Inicio rápido```bash
git clone https://github.com/coolstartnow/isms-builder.git
cd isms-builder
npm install
cp .env.example .env          # set JWT_SECRET to a long random string
npm start                     # http://localhost:3000
```
Inicia sesión con **`[email protected]` / `adminpass`**. En el primer inicio de sesión se te pedirá que elijas tu **idioma de datos de demostración** (🇩🇪 DE / 🇬🇧 EN / 🇫🇷 FR / 🇳🇱 NL) o que comiences con un sistema vacío. Cambia la contraseña de administrador inmediatamente después.

Para uso en producción con HTTPS:```bash
# .env
JWT_SECRET=your-very-long-random-secret
STORAGE_BACKEND=json
SSL_CERT_FILE=/etc/ssl/certs/your.crt
SSL_KEY_FILE=/etc/ssl/private/your.key
```
**¿Pasar a producción después de evaluar con datos de demostración?** Ejecuta la herramienta interactiva de preparación para producción en lugar de empezar desde una instalación nueva: borra el contenido de demostración/prueba módulo por módulo (o todo a la vez), de modo que los datos reales que ya hayas introducido (por ejemplo, riesgos, activos) no tengan que volver a introducirse:```bash
bash stop.sh
node scripts/prepare-production.js
bash start.sh
```
Siempre crea una copia de seguridad (`data.bak.<timestamp>/`, junto a tu directorio `data/`) antes de
cambiar nada, y nunca toca `STORAGE_BACKEND` — a diferencia de la acción de administración "Demo Reset" dentro de la aplicación, que está pensada para la instancia de demostración y todavía cambia a `sqlite` por razones históricas
(ver [Issue #42](https://github.com/coolstartnow/isms-builder/issues/42)).

---

## Docker

Cada versión se publica como un GitHub Package en el GitHub Container Registry, para
`linux/amd64` y `linux/arm64` — etiquetadas como `:latest` y `:<version>` (p. ej. `:1.37.5.2`):```bash
docker compose up -d
# App runs at http://localhost:3000
```
O sin Compose (`data/` debe ser un bind mount — los datos nunca se integran en la imagen):```bash
docker run -d --name isms-builder -p 3000:3000 \
  -e JWT_SECRET="$(openssl rand -hex 32)" \
  -v "$PWD/data:/app/data" \
  ghcr.io/coolstartnow/isms-builder:latest
```
Este es el valor predeterminado, que almacena datos como archivos JSON sin formato en `./data` — no se necesita ningún contenedor de base de datos en absoluto. Es la configuración recomendada para equipos pequeños y es la que utilizan los dos comandos anteriores.

**Usar PostgreSQL (o MariaDB) en lugar de JSON.** La imagen lo admite de forma nativa, pero — a diferencia de la configuración JSON anterior — necesita un segundo contenedor (la base de datos real) más un puñado de variables de entorno que le indiquen a la aplicación cómo conectarse a ella. Si solo descargaste la imagen en sí (`docker pull ghcr.io/coolstartnow/isms-builder`) sin haber clonado nunca este repositorio, esos nombres de variables no son visibles en ningún sitio de forma predeterminada — `docker-compose.yml` y `.env.example`, donde están documentados, son archivos de este repositorio Git, no forman parte de la imagen. Esta sección existe para que esa información no sea un secreto exclusivo del repositorio.

La imagen `isms-builder` en sí nunca incluye un servidor de base de datos — `postgres:17` (o `mariadb:11`) es un motor de base de datos completamente genérico y vacío de Docker Hub, sin ningún conocimiento de las tablas de este proyecto. Esas tablas (riesgos, activos, controles SoA, etc.) las crea automáticamente la propia aplicación en el momento en que se inicia y encuentra una base de datos vacía — sin importación SQL manual, sin un paso de migración independiente que tengas que ejecutar. Consulta "¿Cómo se crea el esquema de la base de datos?" más abajo si quieres conocer la mecánica completa.

Dos contenedores, una red Docker compartida, y luego se le indica a la aplicación dónde encontrar la base de datos:```bash
# 1) An isolated network so the two containers can reach each other by name
docker network create isms-net

# 2) The database — empty until the app first connects and creates its tables
docker run -d --name isms-postgres --network isms-net \
  -e POSTGRES_DB=isms_builder \
  -e POSTGRES_USER=isms \
  -e POSTGRES_PASSWORD="$(openssl rand -hex 16)" \
  -v isms-postgres-data:/var/lib/postgresql/data \
  postgres:17-alpine

# 3) The app, pointed at that database by container name (isms-postgres) via
#    Docker's built-in DNS on the shared network — no host/port juggling needed
docker run -d --name isms-builder --network isms-net -p 3000:3000 \
  -e JWT_SECRET="$(openssl rand -hex 32)" \
  -e STORAGE_BACKEND=postgres \
  -e DB_HOST=isms-postgres \
  -e DB_PORT=5432 \
  -e DB_USER=isms \
  -e DB_PASS="<same password as POSTGRES_PASSWORD above>" \
  -e DB_NAME=isms_builder \
  ghcr.io/coolstartnow/isms-builder:latest
```
Qué significa cada variable:

| Variable | Propósito |
|---|---|
| `STORAGE_BACKEND` | `postgres` (o `pg`) para PostgreSQL, `mariadb` para MariaDB/MySQL. Déjalo sin definir (o `json`) para la configuración JSON predeterminada. |
| `DB_HOST` | Nombre de host del contenedor de base de datos. En una red Docker compartida, esto es simplemente el `--name` del contenedor — Docker lo resuelve automáticamente. |
| `DB_PORT` | `5432` para PostgreSQL, `3306` para MariaDB. |
| `DB_USER` / `DB_PASS` / `DB_NAME` | Deben coincidir con lo que hayas configurado en el contenedor de base de datos (`POSTGRES_USER`/`POSTGRES_PASSWORD`/`POSTGRES_DB` arriba, o los equivalentes de MariaDB). |

Para MariaDB, cambia `postgres:17-alpine` por `mariadb:11`, usa sus variables `MARIADB_DATABASE` /
`MARIADB_USER` / `MARIADB_PASSWORD` en el paso 2, y `STORAGE_BACKEND=mariadb` /
`DB_PORT=3306` en el paso 3. La lista completa y con referencias cruzadas de cada variable de entorno que este
proyecto entiende — incluidas las que no se cubren aquí (SSL, confianza en proxy inverso, SMTP,
2FA, …) — se encuentra en [`.env.example`](https://github.com/coolstartnow/isms-builder/blob/main/.env.example) en este repositorio.

Los usuarios de Compose obtienen esto gratis: `docker-compose.yml` ya incluye los perfiles de servicio
`mariadb` y `postgres` (comentados por defecto, junto con las explicaciones equivalentes de las variables de entorno) —
`docker compose --profile postgres up -d` inicia ambos contenedores conectados entre sí automáticamente,
sin necesidad de configuración manual de red ni de copiar y pegar contraseñas.

**¿Cómo se crea el esquema de la base de datos?** Ni la imagen `postgres:17` ni la `mariadb:11`
saben nada sobre este proyecto — son motores de base de datos genéricos y vacíos directamente de
Docker Hub. No hay ningún archivo de volcado SQL que importar ni ningún comando de migración separado que ejecutar a mano.
En su lugar, en el momento en que el contenedor `isms-builder` se inicia y se conecta a una base de datos vacía, su
propio código de aplicación (no la imagen de la base de datos) crea cada tabla que necesita en el acto — consulta
[`server/db/knexDatabase.js`](https://github.com/coolstartnow/isms-builder/blob/main/server/db/knexDatabase.js): una lista de definiciones de tablas, cada una
verificada con `hasTable()` y creada con `createTable()` si falta, todo antes de que la aplicación empiece
a aceptar solicitudes HTTP. Eso lo hace idempotente — el primer inicio construye el esquema completo
desde cero, y cada reinicio posterior contra la misma base de datos es una operación silenciosa sin efecto porque las
tablas ya existen. Este es el mismo mecanismo, sin modificar, que fue verificado en vivo contra
SQLite, MariaDB 11 y PostgreSQL 17 (consulta [#70](https://github.com/coolstartnow/isms-builder/issues/70)).

Para compilar desde el código fuente en su lugar, descomenta el bloque `build:` en `docker-compose.yml` y ejecuta
`docker compose up -d --build`.

Las imágenes llevan una atestación de procedencia de compilación firmada:```bash
gh attestation verify oci://ghcr.io/coolstartnow/isms-builder:latest --owner coolstartnow
```
---

## Requisitos

- **Node.js 18+** (probado: 18, 20, 22)
- npm 9+
- (Opcional) Docker + Docker Compose
- (Opcional) [Ollama](https://ollama.ai) para búsqueda semántica con IA local

---

## Configuración (`.env`)

| Variable | Predeterminado | Descripción |
|---|---|---|
| `JWT_SECRET` | *(requerido)* | Secreto para la firma de JWT — use 32+ caracteres aleatorios |
| `PORT` | `3000` | Puerto de escucha HTTP/HTTPS |
| `STORAGE_BACKEND` | `json` | `json` (desarrollo/demo) o `sqlite` (producción) |
| `SSL_CERT_FILE` | — | Ruta al certificado TLS → habilita HTTPS |
| `SSL_KEY_FILE` | — | Ruta a la clave privada TLS |
| `DATA_DIR` | `./data` | Sobrescribir el directorio de datos (volúmenes de Docker) |
| `SMTP_HOST` | — | Servidor SMTP para alertas por correo electrónico |
| `SMTP_PORT` | `587` | Puerto SMTP |
| `SMTP_USER` | — | Nombre de usuario SMTP |
| `SMTP_PASS` | — | Contraseña SMTP |
| `SMTP_FROM` | — | Dirección del remitente para notificaciones |

---

## Arquitectura```
server/
  index.js          — Express app setup, router mounts
  auth.js           — JWT auth, RBAC ranks, session
  routes/           — 17 Express route modules (one per domain)
  db/               — Data stores (jsonStore / sqliteStore / orgSettingsStore / …)
  ai/               — Semantic search (embedder, embeddingStore, lexicalSearch)
  reports.js        — Report generation logic
ui/
  index.html        — SPA shell (Atlassian Dark Theme)
  app.js            — All render functions, ~6000 lines vanilla JS
  style.css         — CSS variables, dark theme
data/               — JSON files / SQLite DB (gitignored)
docs/
  ISMS-build-documentation.md  — Full architecture reference
  architecture/                — C4 diagrams, data model, OpenAPI 3.0.3 spec
tests/              — Jest + Supertest (176 tests, --runInBand)
```
- **Auth:** Cookie JWT (`sm_session`), contraseñas bcrypt, 2FA TOTP (aplicable en toda la organización)
- **RBAC:** `reader` → `editor` / `dept_head` → `contentowner` / `auditor` → `admin`
- **Persistencia:** Archivos JSON (predeterminado/demo) o SQLite mediante `better-sqlite3`
- **IA:** Ollama local opcional (nomic-embed-text); búsqueda por palabras clave siempre disponible como alternativa
- **Registro de auditoría:** Cada acción de creación/actualización/eliminación/inicio de sesión registrada, filtrable, exportable

Consulte [`docs/architecture/`](https://github.com/coolstartnow/isms-builder/blob/main/docs/architecture) para diagramas C4, modelo de datos completo y especificación OpenAPI 3.0.3 (más de 80 endpoints).

---

## Ejecución de pruebas

> **Nota:** La suite de pruebas bajo `tests/` son las pruebas de desarrollo personales del autor y se
> incluyen junto con el proyecto por transparencia. **No** forman parte de la aplicación en sí
> y **no son necesarias** para ejecutar la aplicación. Las pruebas cubren el comportamiento interno de la API y utilizan
> credenciales de prueba codificadas que solo existen en el entorno de pruebas aislado — no tienen
> relación con ningún dato de producción o demo.```bash
npm test                  # runs all 423 tests
npm run preflight         # exactly what CI gates on (tests + pinning + audit)
npm test -- --verbose     # with test names
```
Las pruebas utilizan un directorio temporal aislado — no se toca ningún dato de producción.

---

## Contribuir

¡Las contribuciones son muy bienvenidas! Consulta [CONTRIBUTING.md](https://github.com/coolstartnow/isms-builder/blob/main/CONTRIBUTING.md) para:

- Configuración de desarrollo (5 minutos hasta la primera ejecución de pruebas)
- Estilo de código y convenciones
- Cómo abrir un buen issue o PR

**¿Encontraste un problema de seguridad?** Por favor, no abras un issue público — usa el
[reporte privado de vulnerabilidades](https://github.com/coolstartnow/isms-builder/security/advisories/new).
[SECURITY.md](https://github.com/coolstartnow/isms-builder/blob/main/SECURITY.md) describe el alcance, el puerto seguro y qué esperar de forma realista.

**Buenos primeros issues** están etiquetados como [`good first issue`](https://github.com/coolstartnow/isms-builder/issues?q=label%3A%22good+first+issue%22) en el rastreador de issues.

---

## Hoja de ruta

| Estado | Función |
|---|---|
| ✅ Hecho | Búsqueda semántica (Ollama / nomic-embed-text) |
| ✅ Hecho | Backend SQLite, Docker, CI/CD |
| ✅ Hecho | Alertas por correo del registro de eliminación del RGPD |
| ✅ Hecho | Paquetes de demostración multilingües (DE / EN / FR / NL) |
| ✅ Hecho | Módulo de Hallazgos de Auditoría con planes de acción (V 1.37.2.0) |
| ✅ Hecho | Traducciones de Guía FR/NL + configuración de idioma del administrador (V 1.37.2.0) |
| ✅ Hecho | Backend MariaDB/MySQL (`STORAGE_BACKEND=mariadb`, V 1.37.2.1) |
| ✅ Hecho | Escáner → Borrador de Riesgo (importación XML de Greenbone/OpenVAS + PDF, V 1.37.2.0) |
| ✅ Hecho | Confirmación de Políticas — el personal confirma las políticas digitalmente con pista de auditoría (V 1.37.2.0) |
| ✅ Hecho | CRUD de Guía — crear, editar y subir documentación propia (V 1.37.2.0) |
| ✅ Hecho | Búsqueda de Guía — búsqueda de texto completo entre categorías con extracto (V 1.37.2.0) |
| ✅ Hecho | Objetivos de protección de activos — CIA + autenticidad (1–4), dependencias y herencia del principio máximo del BSI (V 1.37.2.0) |
| ✅ Hecho | Lista de verificación de gobernanza del Art. 21 de NIS2 (30 elementos) y plazos de notificación del Art. 23 con alertas automáticas (V 1.37.2.0) |
| ✅ Hecho | Backend PostgreSQL (`STORAGE_BACKEND=pg`) — misma capa de almacenamiento Knex que MariaDB, verificada contra una instancia real de PostgreSQL 17 incl. ruta completa de `docker compose` (V 1.37.5) |
| ✅ Hecho | Integración con ownCloud / Nextcloud — las políticas aprobadas se publican automáticamente como PDF vía WebDAV, visibilidad opcional de favoritos/enlace público, verificada en vivo contra una instancia real de NextcloudPi (#66, V 1.37.5.1) |
| ✅ Hecho | Imagen Docker publicada en GitHub Container Registry tras cada release (`ghcr.io/coolstartnow/isms-builder`, `linux/amd64` + `linux/arm64`, procedencia de compilación firmada) — contribuido por @bucherfa (#71, V 1.40.0). Prueba de esfuerzo de mantenimiento: se eliminará de nuevo si resulta ser más mantenimiento del esperado. |
| 🔜 Próximo | Asistente de Políticas con IA — Ollama redacta el contenido de la política a partir del título + marco |
| 🔜 Próximo | Informes Programados — informe de cumplimiento semanal/mensual entregado por correo |
| 🔜 Próximo | Detección de anomalías en el registro de auditoría (lote LLM) |
| 🚀 Más adelante | Puntuación cuantitativa de riesgos (valores en €, inspirada en FAIR) |
| 🚀 Más adelante | Portal de colaboración para auditores — acceso externo de solo lectura para auditores |
| 🚀 Más adelante | Análisis de brechas de políticas (LLM) |
| 🏁 V 2.x | Categorías de Guía configurables — los administradores definen categorías personalizadas (p. ej. flujos de trabajo, documentos de la organización) |

---

## Sobre el Autor

**Claude Hecker** lleva más de 35 años trabajando en TI. Tras aproximadamente 15 años como CIO,
pasó a desempeñar los roles de CISO y Delegado de Protección de Datos (DSO/DSB). Durante su carrera
ha diseñado e implementado infraestructura de TI a escala empresarial y conectividad de red de área amplia
(VPN, MPLS) para una gran corporación europea — responsable de operaciones fiables y seguras en
múltiples sedes y jurisdicciones.

ISMS Builder surgió directamente de esa experiencia: construir y mantener un ISMS conforme en el
mundo real, a través de auditorías reales, con presión regulatoria real. La herramienta refleja lo que los profesionales
realmente necesitan — no lo que un product manager cree que necesitan.

**¿Por qué código abierto?**
Las PYMEs merecen acceso a una plataforma ISMS adecuada sin tarifas de licencia de cinco cifras. El esfuerzo de incorporación
es real independientemente de la herramienta que elijas — pero ese coste no debería verse agravado por el bloqueo del proveedor
o porque los datos salgan de tu propia infraestructura. Este proyecto apuesta por la libertad del software y por el
principio de que tus datos de cumplimiento te pertenecen.

---

## Aviso de Referencia a Estándares

Este software hace referencia a identificadores de controles y títulos cortos de estándares
publicados únicamente con fines de interoperabilidad y gestión del cumplimiento.

- **ISO/IEC 27001, ISO 9000, ISO 9001** son estándares publicados por la
  Organización Internacional de Normalización (ISO). Las definiciones de controles
  de estos estándares **no están incluidas** en esta distribución de software —
  los derechos de autor de ISO no permiten la redistribución del texto de los controles. Los usuarios deben
  proporcionar su propio archivo JSON (véase la sección anterior y `scripts/import-iso-controls.sh`).
  Los estándares deben obtenerse de [ISO](https://www.iso.org/) o de un
  distribuidor nacional autorizado.
- El material de **BSI IT-Grundschutz** está publicado por la Oficina Federal Alemana
  de Seguridad de la Información (BSI) y está disponible gratuitamente en
  [bsi.bund.de](https://www.bsi.bund.de).
- **NIS2, CRA, EUCS, EU AI Act** son actos legislativos de la UE y están disponibles públicamente
  a través de [eur-lex.europa.eu](https://eur-lex.europa.eu).

---

## Licencia

Copyright (C) 2026 Claude Hecker

Este programa es software libre licenciado bajo la
[GNU Affero General Public License v3.0](https://github.com/coolstartnow/isms-builder/blob/main/LICENSE).

Si ejecutas una versión modificada como servicio de red, debes poner a disposición de los usuarios de ese servicio
el código fuente completo (AGPL §13).

Este proyecto incluye componentes de terceros bajo licencias MIT, BSD-2-Clause y
Apache-2.0. Consulta [THIRD-PARTY-LICENSES.md](https://github.com/coolstartnow/isms-builder/blob/main/THIRD-PARTY-LICENSES.md)
para la atribución completa y los textos de las licencias.
Descargar herramienta