Pular para conteúdo

Arquitetura · JavaScript por Subpasta

javascript/ foi reorganizado de uma lista plana de ~32 arquivos para subpastas por domínio, cada uma refletindo uma responsabilidade clara do sistema.

Organização do JavaScript

Estrutura de pastas

javascript/
├── core/        → bootstrap, config e infraestrutura transversal
│   ├── app.js · init.js · events.js · ui.js · data.js · database.js
│   ├── api.js · content-loader.js · cloud-connection.js · demo-api.js
│   ├── crypto.js · aws-config.js · claude-key.js · gemini-key.js
│   ├── emailjs-config.js · mongodb-config.js · saas.js
├── admin/       → módulos do painel administrativo (compliance/gestão)
│   ├── adminauth.js · changeauth.js · iso.js · audit.js · backup.js
│   ├── training.js · risktreatment.js · tech_controls.js
│   ├── payments.js · api-users.js · nuvem.js · tecnologia.js
│   ├── admob.js · monetization.js · saas-admin.js
├── security/    → engine de segurança e simulação de ataques
│   ├── security_engine.js · attacks.js · network.js · tcpip.js
│   ├── datasecurity.js · sender.js
├── pentest/     → módulo de Testes de Intrusão (este documento)
│   └── pentest.js
├── marketing/   → LinkedIn Ads B2B e conformidade de cookies
│   ├── marketing.js · palestras.js · cookies.js
├── ui/          → componentes de interface reutilizáveis
│   ├── ui.js · dropdown-menu.js · topbar-menu.js
│   ├── tutorial.js · signature_pad.js
├── modules/     → módulos de produto diversos
│   ├── products.js · corporate.js · roleai.js · pendencias.js · secbot.js
├── models/      → camada de modelos de dados (entidades e catálogo)
│   ├── index.js · base/entity.js · catalog/catalog.js
│   ├── products/ (dev, webdesign, licensing, consulting, support, cloud, portal)
│   ├── saas/saas-plans.js · services/ (security, business)
├── ai/          → data science / GenAI
│   └── datascience.js
├── erp/         → produtos e serviços ERP
│   └── erp-products.js
├── etl/         → pipeline de dados
│   └── etl-pipeline.js
└── courses/     → curso de programação
    └── programming-course.js

Racional da divisão

Subpasta Critério de inclusão
core/ Qualquer módulo carregado no bootstrap (app.js) ou usado transversalmente por outros módulos (config, criptografia, banco)
admin/ Módulo que só é acessível dentro do painel administrativo autenticado
security/ Lógica de detecção/simulação de ameaças e proteção de dados
pentest/ Isolado por ser um módulo grande e autocontido (1500+ linhas) com dados estáticos extensos
marketing/ Tudo relacionado a aquisição/growth — hoje 100% LinkedIn Ads B2B
ui/ Componentes sem lógica de negócio, puramente de interface
modules/ Módulos de produto que não se encaixam nas categorias acima
models/ Camada de dados/entidades, sem lógica de renderização
ai/, erp/, etl/, courses/ Domínios verticais isolados o suficiente para merecer pasta própria

Regra de ouro: um módulo novo entra na subpasta mais específica que existir; só cria uma subpasta nova se representar um domínio de negócio genuinamente distinto — critério parte do Definition of Done.

Ordem de carregamento

index.html carrega os scripts na ordem: core/ (bootstrap e config) → security/admin/ → módulos de produto (modules/, marketing/, pentest/, erp/, etl/, ai/, courses/) → ui/ (por último, pois depende de todos os outros para o TabManager já ter os módulos disponíveis).