Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
isms-builder — Sistema de Gestão de Segurança da Informação auto-hospedado — ISO 27001, NIS2, GDPR/DSGVO, BSI IT-Grundschutz | Kitploit
Ferramentas/GitHubGitHub/coolstartnow/isms-builder
Aprendizado e EducaçãoResposta a IncidentesRecursos CuradosTrilhas e Cursos
GitHubcoolstartnow/isms-builder

isms-builder

Sistema de Gestão de Segurança da Informação auto-hospedado — ISO 27001, NIS2, GDPR/DSGVO, BSI IT-Grundschutz

Ver Repositório
2044751há 4 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site
<!-- © 2026 Claude Hecker — ISMS Builder V 1.76 — AGPL-3.0 -->
![Banner do ISMS Builder](https://assets.kitploit.com/production/public/readmes/12462/26d3b00b65a4f94cc34514132f1ee5f5c9036e45516880da99fb9501dd79bead.png)
# ISMS Builder

**Sistema de Gestão de Segurança da Informação auto-hospedado — código aberto, sem necessidade de nuvem**

[![CI](https://github.com/coolstartnow/isms-builder/actions/workflows/ci.yml/badge.svg)](https://github.com/coolstartnow/isms-builder/actions/workflows/ci.yml)
[![Testes](https://img.shields.io/badge/tests-423%20passing-brightgreen)](https://github.com/coolstartnow/isms-builder/actions)
[![Licença: 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)
[![Versão](https://raw.githubusercontent.com/coolstartnow/isms-builder/HEAD/docs/badges/version.svg)](CHANGELOG.md)

📖 **[Wiki](https://github.com/coolstartnow/isms-builder/wiki)** — Uso da imagem Docker &
variáveis de ambiente, arquitetura & módulos, FAQ, contribuir (DE/EN)

<!-- NOTA RGPD: Os quatro emblemas acima (CI, Testes, Licença, Node.js) carregam recursos
     de servidores externos (github.com, shields.io/Cloudflare, img.shields.io).
     Quando este README é renderizado num navegador, estes pedidos transmitem o endereço
     IP do visualizador a terceiros (incl. servidores sediados nos EUA — RGPD Art. 44 ff.).
     Para documentação auto-hospedada 100% conforme o RGPD, substitua estas quatro linhas
     de emblemas pelas suas equivalentes locais em docs/badges/ ou remova-as por completo. -->

---

> ## ⚠️ Aviso de Segurança: Repositórios falsos e cópias que distribuem malware
> O ISMS Builder **não tem "releases" empacotados, instaladores ou ficheiros ZIP para descarregar** — a única
> fonte legítima é este repositório, clonado ou descarregado diretamente do GitHub como código-fonte
> simples. Temos conhecimento de pelo menos um **repositório malicioso que se faz passar por este projeto**
> (README falso, botão "Download" falso que aponta para um ZIP disfarçado de captura de ecrã, contendo um
> carregador de malware para Windows — cadeia de payload `.cmd` → `.exe` → Lua-DLL). **Não descarregue nem execute qualquer
> ZIP/instalador/exe "isms_builder" de qualquer outro local que não seja este repositório.**
> Se encontrar um repositório ou site suspeito que se faça passar por este projeto, por favor abra uma
> [issue](https://github.com/coolstartnow/isms-builder/issues) ou uma
> [discussion](https://github.com/coolstartnow/isms-builder/discussions) para que possamos sinalizá-lo.

---

> **Estado: Desenvolvimento ativo — ainda não é um produto acabado.**
> Os módulos principais são funcionais e estão em uso, mas algumas funcionalidades estão incompletas
> e a plataforma continua a crescer. Contribuições, feedback e testes
> em cenários reais são muito bem-vindos — é exatamente por isso que este projeto foi aberto.

---

> 🛡️ **Projeto relacionado: [NIS2 Quick-Check](https://github.com/coolstartnow/nis2-quickcheck)** —
> uma autoavaliação NIS2 gratuita e autónoma (10 domínios × 5 perguntas, todos os 27 Estados-Membros da UE, todas as 24
> línguas oficiais da UE). Funciona inteiramente no navegador, sem backend, sem instalação. Não faz parte do
> ISMS Builder e não é necessário para o utilizar — apenas uma ferramenta complementar para uma primeira orientação rápida.

---

## O que é o ISMS Builder?

O ISMS Builder é uma **plataforma web auto-hospedada** para gerir um Sistema de Gestão de Segurança da Informação (ISMS).
Cobre todo o ciclo de vida de conformidade — desde a elaboração de políticas até à evidência de auditoria — para ISO 27001:2022, NIS2, RGPD/DSGVO, BSI IT-Grundschutz e outros referenciais.

**Sem nuvem. Sem taxas SaaS. Os seus dados ficam no seu servidor.**

> Concebido para PMEs, equipas de TI e consultores que precisam de uma ferramenta ISMS real sem um contrato com fornecedores de cinco dígitos.

---

## Utilização Prevista e Âmbito

Este projeto começou como uma ferramenta de trabalho para um único profissional de ISMS e cresceu a partir daí. É
código aberto porque o trabalho pode ser útil a outros — não porque seja um produto comercial
disfarçado. Ser explícito quanto a isso ajuda-o a decidir se se adequa à sua situação.

**Para que foi concebido.** Uma pequena equipa de SGSI — muitas vezes uma só pessoa, por vezes um punhado — que
redige e mantém a documentação de um sistema de gestão: políticas, riscos, ativos,
controlos, evidências. Espera-se que o número de pessoas que *precisam de uma conta* se mantenha pequeno.
Alcançar um público alargado funciona sem contas: os reconhecimentos de políticas são enviados como
links baseados em tokens, para que os destinatários leiam e confirmem um documento sem nunca iniciarem sessão, e
sem aparecerem em qualquer lista de utilizadores.

**O que espera de si.** O ISMS Builder é auto-alojado, e tudo o que daí decorre
é da sua responsabilidade: implementação, TLS, endurecimento, cópias de segurança, atualizações, controlo de acessos e as obrigações
de proteção de dados relativas a tudo o que nele armazenar. O projeto disponibiliza uma configuração predefinida razoável,
não um serviço gerido.

**O que não é.** Não existe uma oferta SaaS alojada, nem um contrato de suporte comercial, nem um
acordo de nível de serviço. Não é um produto de alojamento multi-inquilino. Não o certifica
segundo qualquer norma, e não constitui aconselhamento jurídico — ajuda-o a organizar e a evidenciar o trabalho,
mas a avaliação continua a ser sua e do seu auditor.

**Quem o mantém.** Uma pessoa, a par de um emprego a tempo inteiro. As issues e discussões são lidas e
respondidas, geralmente em poucos dias; os relatórios de segurança são prioritários. Os pedidos de funcionalidades são bem-vindos e
moldam genuinamente o roteiro, mas competem por noites limitadas. Se a sua organização depende
de um prazo fixo ou de uma resposta garantida, um fornecedor comercial é a recomendação honesta —
e isso não é razão para evitar o projeto, apenas uma razão para planear de forma realista.

---

## Capturas de ecrã

| Início de sessão | Painel |
|---|---|
| ![Início de sessão](https://assets.kitploit.com/production/public/readmes/12462/dad90b27558016928f149aa956d5b5ecef78f7639fe00117fa6e7b6b9c610884.png) | ![Painel](https://assets.kitploit.com/production/public/readmes/12462/ad427999a2d247f7b486faff089572c213b6bf809d64946438305c1519e54566.png) |

| Declaração de Aplicabilidade | Gestão de Riscos |
|---|---|
| ![SoA](https://assets.kitploit.com/production/public/readmes/12462/19133912a32d643c4db93e977047aa6f93cc85889555a63dc29b986f5290d196.png) | ![Riscos](https://assets.kitploit.com/production/public/readmes/12462/19133912a32d643c4db93e977047aa6f93cc85889555a63dc29b986f5290d196.png) |

| GDPR & Proteção de Dados | Gestão de Ativos |
|---|---|
| ![GDPR](https://assets.kitploit.com/production/public/readmes/12462/453b4e84b6c08241d87e8edd96d803a68b5d56565aee2b317444f30db8d9ffb5.png) | ![Ativos](https://assets.kitploit.com/production/public/readmes/12462/053332b35c995bc3a672be7bfd193ca3789f3245e7cdffaa456833fabdec309e.png) |

| Orientação & Documentação | Relatórios |
|---|---|
| ![Orientação](https://assets.kitploit.com/production/public/readmes/12462/2eb44e0df23e8eba8d70e09a14a18028d1d9dc37e8e734d0c837f2b7fe6ec787.png) | ![Relatórios](https://assets.kitploit.com/production/public/readmes/12462/765395a2a3cf39ec72a00ad53df464bc79d54a69ca34738bdeb775ff7e1584f3.png) |

| Registo de medidas | Medidas para um controlo |
|---|---|
| ![Registo de medidas](https://assets.kitploit.com/production/public/readmes/12462/eedf38aaab6650767b438c237699536ef4edd1540ec513879d3dba3bc3ddcd53/fb9df24fa7d347305c9d2bdf49a2bd043b1e22f82c1ce8b441ba3fafbb99cc4e-display-v1.webp) | ![Medidas na SoA](https://assets.kitploit.com/production/public/readmes/12462/48a0e181c7c9b9597d1962bbf77a1118c564eedc42d802eec2d51eb1b1ff72f1/b34d065f2e668a35c18a545d0c63a64dc59978729f6998631c7b09a574283ca6-display-v1.webp) |

> Execute `npm start` e abra `https://localhost:3000` para explorar localmente o conjunto completo de dados de demonstração.

---

## Visão geral das funcionalidades

| Módulo | Descrição | Normas |
|---|---|---|
| **Gestão de Políticas** | CRUD de modelos, versionamento, ciclo de vida (rascunho → revisão → aprovado → arquivado), hierarquia de espaços, anexos | ISO 27001 §5 |
| **Declaração de Aplicabilidade** | 147 controles integrados em 5 frameworks (BSI IT-Grundschutz, EU NIS2, EUCS, EU AI Act, CRA) mais controles ISO 27001 / 9000 / 9001 que você mesmo importa (nunca fornecidos), edição inline, análise de lacunas, mapeamento cruzado | ISO 27001 A / BSI / NIS2 / EUCS / EUAI / ISO 9001 / CRA |
| **Registro de Medidas** | Um único registro para tratamentos de riscos, ações para constatações de auditoria, medidas de governança e TOMs — responsável, prazo, status, evidências; atribuível a controles da SoA, constatações e riscos; exibido na SoA, riscos, constatações, governança e GDPR, atualizado automaticamente a partir de versões anteriores ([docs](https://github.com/coolstartnow/isms-builder/blob/main/docs/module-measures.en.md)) | ISO 27001 §6.1.3 / GDPR Art. 32 |
| **Gestão de Riscos** | Registro de riscos, planos de tratamento (mantidos no registro de medidas), papel de auditor | ISO 27001 §6.1 |
| **Objetivos de Segurança** | Acompanhamento de KPIs com barras de progresso, integração com calendário | ISO 27001 §6.2 |
| **GDPR e Privacidade** | VVT, contratos de processamento (AV), DSFA, TOMs, fila de DSAR, temporizador de 72h, registro de exclusões com alertas por e-mail | DSGVO Art. 13–35 |
| **Gestão de Ativos** | Registro de ativos, tipos de ativos editáveis, objetivos de proteção (CIA + autenticidade) com herança de dependências, níveis de classificação, acompanhamento de EoL | ISO 27001 A.5.9–5.12 |
| **BCM / BCP** | Análise de Impacto nos Negócios, planos de continuidade, exercícios | ISO 27001 A.5.29–5.30 / NIS2 |
| **Registros de Treinamento** | Catálogo de treinamentos, acompanhamento de conclusão, upload de certificados | ISO 27001 A.6.3 |
| **Gestão de Fornecedores** | Registro de fornecedores, agendamento de auditorias, avaliação de riscos | ISO 27001 A.5.19–5.22 |
| **Jurídico e Contratos** | Contratos, NDAs, políticas de privacidade, calendário de expiração | |
| **Caixa de Entrada de Incidentes** | Caixa de entrada do CISO + **formulário público de reporte** (sem necessidade de login) | NIS2 / BSI |
| **Governança** | Revisões pela direção, atas de reuniões, medidas de governança (mantidas no registro de medidas) | ISO 27001 §9.3 |
| **Relatórios** | Matriz de conformidade (Controle × Entidade), relatório de lacunas, ciclos de revisão, exportação CSV | |
| **Constatações de Auditoria** | Registro de constatações (IST→SOLL→Risco→Recomendação), planos de ação, acompanhamento de severidade/status, referência FIND-YYYY-NNNN | ISO 27001 §9.2 |
| **Gestão de Auditorias** | Auditorias com checklists, constatações criadas a partir de não conformidades, programa anual de auditoria (plano trimestral, aprovação), integração com calendário e dashboard, exportação CSV/PDF | ISO 27001 §9.2, ISO 19011 |
| **Confirmações de Políticas** | Distribuição verificável de políticas aos colaboradores e confirmação de entendimento, evidência central de auditoria ([docs](https://github.com/coolstartnow/isms-builder/blob/main/docs/module-policy-acknowledgements.en.md)) | ISO 27001 7.3, A.6.3 |
| **NIS2** | Checklist de governança do Art. 21 (30 itens) e prazos de reporte do Art. 23 com alertas automáticos | NIS2 Art. 21 / 23 |
| **Calendário** | Um calendário para prazos em todos os módulos: medidas, tratamentos de riscos, auditorias, revisões, contratos, treinamentos, prazos | |
| **Orientação** | Manual e base de conhecimento integrados (guias de módulos, guias de papéis, documentos próprios) com busca, em cinco idiomas | |
| **Aplicativo Móvel (Android)** | Aplicativo Android separado que funciona offline com seu próprio conjunto de dados e sincroniza com o servidor via Wi-Fi ou um pacote de arquivos: contas de sincronização com direitos por módulo, configuração por QR code, modelos, SoA, riscos, ativos, constatações e orientação (somente leitura); requer `STORAGE_BACKEND=json` ([docs](https://github.com/coolstartnow/isms-builder/blob/main/docs/module-mobile-sync.en.md)). Ainda não lançado publicamente: se você quiser experimentá-lo antes, entre em contato pelo [site do projeto](https://www.isms-builder.com/#contact) | |
| **Rastreabilidade** | Cada registro vincula-se a controles da SoA + documentos de política — bidirecional | |
| **Busca Semântica** | Busca local por IA via Ollama (nomic-embed-text) com fallback por palavras-chave | |
| **Multi-Entidade** | Árvore de estrutura corporativa, aplicabilidade por entidade para controles e políticas | |
| **UI multilíngue e dados de demonstração** | UI completa, conteúdo de demonstração e documentação do módulo em 🇩🇪 DE / 🇬🇧 EN / 🇫🇷 FR / 🇳🇱 NL / 🇭🇺 HU; o administrador controla os idiomas disponíveis | |

### ⚠ IMPORTANTE: Os controles ISO exigem instalação manual pelo administrador

> **ISO 27001:2022, ISO 9000:2015 e ISO 9001:2015** são normas protegidas por direitos de autor publicadas
> pela International Organization for Standardization (ISO, © ISO). As definições dos controles
> (títulos, descrições, texto dos requisitos) **não estão incluídas** neste software e **não devem**
> ser redistribuídas sem uma licença ISO válida.

**O que isto significa na prática:**
Os módulos SoA para ISO 27001, ISO 9000 e ISO 9001 são fornecidos sem conteúdo de controles.
O administrador **deve importar manualmente** os controles antes que estes frameworks possam ser utilizados:

1. Obtenha uma cópia licenciada da norma em [iso.org](https://www.iso.org/) ou junto de um organismo nacional autorizado
2. Prepare um ficheiro JSON com as suas definições de controles (formato documentado em `scripts/import-iso-controls.sh`)
3. Execute o script de importação:
   ```bash
   bash scripts/import-iso-controls.sh path/to/iso-controls.json
   ```
4. Reinicie o servidor do ISMS Builder

> **Frameworks incluídos de fábrica (sem necessidade de licença ISO):**
> BSI IT-Grundschutz, EU NIS2, EUCS, EU AI Act e CRA baseiam-se em legislação da UE
> e publicações federais alemãs disponíveis publicamente e estão totalmente pré-instalados.

A operação dos módulos de framework ISO sem uma licença válida para a respetiva norma é da
exclusiva responsabilidade do operador. O projeto ISMS Builder e os seus contribuidores não
assumem qualquer responsabilidade pela utilização não licenciada de conteúdo protegido pela ISO.

---

## Início 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
```

Faça login com **`[email protected]` / `adminpass`**. No primeiro login, será solicitado que você escolha o **idioma dos dados de demonstração** (🇩🇪 DE / 🇬🇧 EN / 🇫🇷 FR / 🇳🇱 NL / 🇭🇺 HU) ou comece com um sistema vazio. Altere a senha do administrador imediatamente após.

Para uso em produção com HTTPS:

```bash
# .env
JWT_SECRET=<output of: openssl rand -hex 32>   # required; production refuses a missing, short or placeholder secret
STORAGE_BACKEND=json
SSL_CERT_FILE=/etc/ssl/certs/your.crt
SSL_KEY_FILE=/etc/ssl/private/your.key
```

**Vai entrar em produção?** Produção é sempre uma **instalação nova** – demonstração e produção nunca são misturadas.
Não transforme uma instância de demonstração (ou os seus dados) num sistema de produção: instale uma nova instância
(`STORAGE_BACKEND=json` é o padrão recomendado, veja `.env.example`), crie o seu próprio administrador
e defina os seus próprios segredos. O *Demo Reset* e o *Demo Import* na aplicação são funções exclusivas da instância
de demonstração: não são uma ferramenta de backup, restauro ou migração, e o *Demo Import* funciona apenas com
`STORAGE_BACKEND=json`.

Os frameworks SoA integrados (BSI IT-Grundschutz, EU NIS2, EUCS, EU AI Act, CRA) são criados
automaticamente em todos os backends de armazenamento. Os textos de controlo da ISO 27001 / 9000 / 9001 têm
direitos de autor da ISO e **nunca** são incluídos – forneça-os você mesmo em `data/iso-controls.json`
(veja `scripts/import-iso-controls.sh`).

---

## Docker

Cada versão é publicada como um GitHub Package no GitHub Container Registry, para
`linux/amd64` e `linux/arm64` — com as tags `:latest` e `:<version>` (por exemplo, `:1.37.5.2`):

```bash
docker compose up -d
# App runs at http://localhost:3000
```

Ou sem Compose (`data/` deve ser um bind mount — os dados nunca são incorporados na imagem):

```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 é o padrão, armazenando dados como arquivos JSON simples em `./data` — nenhum contêiner de banco de dados é necessário. É a configuração recomendada para equipes pequenas e é o que os dois comandos acima utilizam.

**Usando PostgreSQL (ou MariaDB) em vez de JSON.** A imagem suporta isso nativamente, mas — diferentemente da configuração JSON acima — requer um segundo contêiner (o banco de dados propriamente dito) além de algumas variáveis de ambiente informando à aplicação como acessá-lo. Se você apenas baixou a imagem (`docker pull ghcr.io/coolstartnow/isms-builder`) sem nunca clonar este repositório, esses nomes de variáveis não estão visíveis em lugar algum por padrão — `docker-compose.yml` e `.env.example`, onde eles estão documentados, são arquivos deste repositório Git, não parte da imagem. Esta seção existe para que essa informação não seja um segredo exclusivo do repositório.

A imagem `isms-builder` em si nunca inclui um servidor de banco de dados — `postgres:17` (ou `mariadb:11`) é um mecanismo de banco de dados completamente genérico e vazio do Docker Hub, sem qualquer conhecimento das tabelas deste projeto. Essas tabelas (riscos, ativos, controles de SoA, e assim por diante) são criadas automaticamente pela própria aplicação no momento em que ela inicia e encontra um banco de dados vazio — sem importação manual de SQL, sem etapa de migração separada que você precise executar. Consulte "Como o esquema do banco de dados é criado?" abaixo se quiser os detalhes completos do funcionamento.

Dois contêineres, uma rede Docker compartilhada, e então a aplicação é informada de onde encontrar o banco de dados:

```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
```

O que cada variável significa:

| Variável | Finalidade |
|---|---|
| `STORAGE_BACKEND` | `postgres` (ou `pg`) para PostgreSQL, `mariadb` para MariaDB/MySQL. Deixe sem definir (ou `json`) para a configuração JSON padrão. |
| `DB_HOST` | Nome do host do contêiner do banco de dados. Numa rede Docker compartilhada, é apenas o `--name` do contêiner — o Docker resolve-o automaticamente. |
| `DB_PORT` | `5432` para PostgreSQL, `3306` para MariaDB. |
| `DB_USER` / `DB_PASS` / `DB_NAME` | Têm de corresponder ao que definiu no contêiner do banco de dados (`POSTGRES_USER`/`POSTGRES_PASSWORD`/`POSTGRES_DB` acima, ou os equivalentes MariaDB). |

Para MariaDB, substitua `postgres:17-alpine` por `mariadb:11`, use as suas variáveis `MARIADB_DATABASE` /
`MARIADB_USER` / `MARIADB_PASSWORD` no passo 2, e `STORAGE_BACKEND=mariadb` /
`DB_PORT=3306` no passo 3. A lista completa e com referências cruzadas de todas as variáveis de ambiente que este
projeto reconhece — incluindo as que não são abordadas aqui (SSL, confiança em proxy reverso, SMTP,
2FA, …) — encontra-se em [`.env.example`](https://github.com/coolstartnow/isms-builder/blob/main/.env.example) neste repositório.

Os utilizadores do Compose obtêm isto sem esforço: o `docker-compose.yml` já inclui os perfis de serviço
`mariadb` e `postgres` (comentados por predefinição, juntamente com as explicações equivalentes das variáveis de ambiente) —
`docker compose --profile postgres up -d` inicia ambos os contêineres interligados automaticamente,
sem necessidade de configuração manual de rede ou de copiar e colar palavras-passe.

**Como é criado o esquema da base de dados?** Nem a imagem `postgres:17` nem a `mariadb:11`
sabem nada sobre este projeto — são motores de base de dados genéricos e vazios, diretamente do
Docker Hub. Não há ficheiro de dump SQL para importar nem comando de migração separado para executar manualmente.
Em vez disso, no momento em que o contêiner `isms-builder` arranca e se liga a uma base de dados vazia, o seu
próprio código de aplicação (não a imagem da base de dados) cria todas as tabelas de que necessita no momento — ver
[`server/db/knexDatabase.js`](https://github.com/coolstartnow/isms-builder/blob/main/server/db/knexDatabase.js): uma lista de definições de tabelas, cada uma
verificada com `hasTable()` e criada com `createTable()` se estiver em falta, tudo antes de a aplicação começar
a aceitar pedidos HTTP. Isso torna-o idempotente — o primeiro arranque constrói o esquema completo
a partir do nada, e cada reinício posterior contra a mesma base de dados é uma operação silenciosa sem efeito, porque as
tabelas já existem. Este é o mesmo mecanismo, sem modificações, que foi verificado em ambiente real contra
SQLite, MariaDB 11 e PostgreSQL 17 (ver [#70](https://github.com/coolstartnow/isms-builder/issues/70)).

Para compilar a partir do código-fonte, em vez disso, descomente o bloco `build:` no `docker-compose.yml` e execute
`docker compose up -d --build`.

As imagens incluem uma atestação de proveniência de compilação assinada:

```bash
gh attestation verify oci://ghcr.io/coolstartnow/isms-builder:latest --owner coolstartnow
```

## Requisitos

- **Node.js 18+** (testado: 18, 20, 22)
- npm 9+
- (Opcional) Docker + Docker Compose
- (Opcional) [Ollama](https://ollama.ai) para busca semântica com IA local

---

## Configuração (`.env`)

| Variável | Padrão | Descrição |
|---|---|---|
| `JWT_SECRET` | *(obrigatório)* | Segredo para assinatura JWT — pelo menos 32 caracteres aleatórios (`openssl rand -hex 32`). Com `NODE_ENV=production` (sempre o caso na imagem Docker) o servidor não inicia com um segredo ausente, curto ou placeholder |
| `PORT` | `3000` | Porta de escuta HTTP/HTTPS |
| `STORAGE_BACKEND` | `json` | `json` (dev/demo) ou `sqlite` (produção) |
| `SSL_CERT_FILE` | — | Caminho para o certificado TLS → habilita HTTPS |
| `SSL_KEY_FILE` | — | Caminho para a chave privada TLS |
| `DATA_DIR` | `./data` | Substitui o diretório de dados (volumes Docker) |
| `SMTP_HOST` | — | Servidor SMTP para alertas por e-mail |
| `SMTP_PORT` | `587` | Porta SMTP |
| `SMTP_USER` | — | Nome de usuário SMTP |
| `SMTP_PASS` | — | Senha SMTP |
| `SMTP_FROM` | — | Endereço do remetente para notificações |

---

## Arquitetura

```
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)
```

- **Autenticação:** Cookie JWT (`sm_session`), senhas bcrypt, 2FA TOTP (aplicável em toda a organização)
- **RBAC:** `reader` → `editor` / `dept_head` → `contentowner` / `auditor` → `admin`
- **Persistência:** Arquivos JSON (padrão/demo) ou SQLite via `better-sqlite3`
- **IA:** Ollama local opcional (nomic-embed-text); pesquisa por palavras-chave sempre disponível como alternativa
- **Registo de Auditoria:** Cada ação de criação/atualização/eliminação/início de sessão registada, filtrável, exportável

Consulte [`docs/architecture/`](https://github.com/coolstartnow/isms-builder/blob/main/docs/architecture) para diagramas C4, modelo de dados completo e especificação OpenAPI 3.0.3 (mais de 80 endpoints).

---

## Executar Testes

> **Nota:** A suite de testes em `tests/` são os testes de desenvolvimento pessoais do autor e são
> disponibilizados juntamente com o projeto por questões de transparência. **Não** fazem parte da aplicação em si
> e **não são necessários** para executar a aplicação. Os testes cobrem o comportamento interno da API e utilizam
> credenciais de teste codificadas que só existem no ambiente de teste isolado — não têm qualquer
> relação com dados de produção ou de demonstração.

```bash
npm test                  # runs all 423 tests
npm run preflight         # exactly what CI gates on (tests + pinning + audit)
npm test -- --verbose     # with test names
```

Os testes usam um diretório temporário isolado — nenhum dado de produção é afetado.

---

## Contribuindo

Contribuições são muito bem-vindas! Consulte [CONTRIBUTING.md](https://github.com/coolstartnow/isms-builder/blob/main/CONTRIBUTING.md) para:

- Configuração de desenvolvimento (5 minutos até a primeira execução de testes)
- Estilo de código e convenções
- Como abrir uma boa issue ou PR

**Encontrou um problema de segurança?** Por favor, não abra uma issue pública — use
[relatório privado de vulnerabilidades](https://github.com/coolstartnow/isms-builder/security/advisories/new).
[SECURITY.md](https://github.com/coolstartnow/isms-builder/blob/main/SECURITY.md) descreve o escopo, o porto seguro e o que esperar realisticamente.

**Boas primeiras issues** estão marcadas com [`good first issue`](https://github.com/coolstartnow/isms-builder/issues?q=label%3A%22good+first+issue%22) no rastreador de issues.

---

## Roadmap

| Status | Funcionalidade |
|---|---|
| ✅ Concluído | Busca semântica (Ollama / nomic-embed-text) |
| ✅ Concluído | Backend SQLite, Docker, CI/CD |
| ✅ Concluído | Alertas por e-mail do registro de exclusões GDPR |
| ✅ Concluído | Pacotes de demonstração multilíngues (DE / EN / FR / NL / HU) |
| ✅ Concluído | Módulo de Achados de Auditoria com planos de ação (V 1.37.2.0) |
| ✅ Concluído | Traduções de Orientação FR/NL + configuração de idioma do administrador (V 1.37.2.0) |
| ✅ Concluído | Backend MariaDB/MySQL (`STORAGE_BACKEND=mariadb`, V 1.37.2.1) |
| ✅ Concluído | Scanner → Rascunho de Risco (importação Greenbone/OpenVAS XML + PDF, V 1.37.2.0) |
| ✅ Concluído | Reconhecimento de Políticas — colaboradores confirmam políticas digitalmente com trilha de auditoria (V 1.37.2.0) |
| ✅ Concluído | CRUD de Orientação — criar, editar e enviar documentação própria (V 1.37.2.0) |
| ✅ Concluído | Busca de Orientação — busca de texto completo entre categorias com trecho (V 1.37.2.0) |
| ✅ Concluído | Objetivos de proteção de ativos — CIA + autenticidade (1–4), dependências e herança do princípio máximo do BSI (V 1.37.2.0) |
| ✅ Concluído | Checklist de governança NIS2 Art. 21 (30 itens) e prazos de notificação do Art. 23 com alertas automáticos (V 1.37.2.0) |
| ✅ Concluído | Backend PostgreSQL (`STORAGE_BACKEND=pg`) — mesma camada de armazenamento Knex do MariaDB, verificado contra uma instância real do PostgreSQL 17, incl. caminho completo de `docker compose` (V 1.37.5) |
| ✅ Concluído | Integração ownCloud / Nextcloud — políticas aprovadas publicadas automaticamente como PDF via WebDAV, visibilidade opcional de favoritos/links públicos, verificado ao vivo contra uma instância real do NextcloudPi (#66, V 1.37.5.1) |
| ✅ Concluído | Imagem Docker publicada no GitHub Container Registry após cada release (`ghcr.io/coolstartnow/isms-builder`, `linux/amd64` + `linux/arm64`, proveniência de build assinada) — contribuído por @bucherfa (#71, V 1.40.0). Teste de esforço de manutenção: removido novamente se se revelar mais trabalhoso do que o esperado. |
| ✅ Concluído | Assistente de Políticas com IA — Ollama redige conteúdo para qualquer tipo de documento (Política, Procedimento, Política de Risco, SoA, Incidente, Release) a partir de título + tipo + idioma (#87, V 1.60.0) |
| ✅ Concluído | Aplicativo Android com uso offline e sincronização de dados — contas de sincronização, configuração por QR-code, direitos por módulo (V 1.76.0) |
| ✅ Concluído | Gestão de auditorias — auditorias com checklists, achados a partir de não conformidades, programa anual de auditoria |
| ✅ Concluído | Registro de medidas — um único conjunto de dados para tratamentos de risco, ações de achados, medidas de governança e TOMs (V 1.80.0) |
| 🔜 Próximo | Exclusão à prova de auditoria — registros excluídos são mantidos permanentemente, exclusões GDPR anonimizam em vez de remover, revisão de integridade do log de auditoria |
| 🔜 Próximo | Relatórios agendados — relatório de conformidade semanal/mensal entregue por e-mail |
| 🔜 Próximo | Detecção de anomalias no log de auditoria (lote LLM) |
| 🚀 Mais tarde | Pontuação quantitativa de risco (valores em €, inspirado no FAIR) |
| 🚀 Mais tarde | Portal de colaboração para auditores — acesso externo somente leitura para auditores |
| 🚀 Mais tarde | Análise de lacunas de políticas (LLM) |
| 🏁 V 2.x | Categorias de Orientação configuráveis — administradores definem categorias personalizadas (ex.: fluxos de trabalho, documentos organizacionais) |

---

## Sobre o Autor

**Claude Hecker** atua na área de TI há mais de 35 anos. Após cerca de 15 anos como CIO,
passou a exercer as funções de CISO e Encarregado de Proteção de Dados (DSO/DSB). Ao longo da sua carreira,
concebeu e implementou infraestruturas de TI de âmbito empresarial e conectividade de redes de longa distância
(VPN, MPLS) para uma grande empresa europeia — responsável por operações fiáveis e seguras em
múltiplos locais e jurisdições.

O ISMS Builder nasceu diretamente dessa experiência: construir e manter um ISMS em conformidade no
mundo real, em auditorias reais, com pressão regulatória real. A ferramenta reflete aquilo de que os profissionais
realmente necessitam — não aquilo que um gestor de produto pensa que eles necessitam.

**Porquê open source?**
As PME merecem acesso a uma plataforma de ISMS adequada sem taxas de licenciamento de cinco dígitos. O esforço de
integração é real independentemente da ferramenta escolhida — mas esse custo não deve ser agravado pelo aprisionamento
a fornecedores nem pela saída de dados da sua própria infraestrutura. Este projeto defende a liberdade do software e

---

[Read more](https://github.com/coolstartnow/isms-builder)
Baixar ferramenta