Files
BrainWind/app
Marcos 525f901e41 fix: liberar allowedHosts em server/preview para Traefik/Coolify
O vite preview (que serve a build de produção no Coolify) bloqueia
hosts desconhecidos por segurança. Sem allowedHosts, qualquer
requisição vinda do proxy retornava 403 'Blocked request'.

allowedHosts: true libera qualquer host — apropriado porque o
Traefik do Coolify já controla o roteamento.
2026-07-10 12:07:57 +00:00
..

VentoApp — NBR 6123:2023

Status (jul/2026): 8/8 marcos concluídos. 100% de cobertura da NBR 6123:2023. Próximas melhorias: ver ../PROGRESS.md seção "Roadmap pós-Marco 8".

Aplicativo para cálculo de cargas de vento conforme a norma brasileira ABNT NBR 6123:2023 — Forças devidas ao vento em edificações.

🎯 Cobertura

Implementa 100% das seções e anexos normativos:

  • Sec. 5 — Velocidade característica (V₀, S₁, S₂, S₃, mudança de rugosidade)
  • Sec. 6.1 — Edificações paralelepipédicas (Tabelas 612, excentricidade, atrito, alta turbulência)
  • Sec. 6.2 — Superfícies curvas: cilindros, abóbadas, cúpulas (Tabelas 1322)
  • Sec. 6.3 — Pressão interna (Cpi) — método simplificado + detalhado
  • Sec. 6.4 — Efeitos de vizinhança (fᵥ)
  • Sec. 7 — Muros, placas, coberturas isoladas (Tabelas 2325)
  • Sec. 8 — Barras prismáticas, reticulados, torres (Tabelas 2630 + Figs 1218)
  • Sec. 9 — Efeitos dinâmicos em estruturas alteadas, conforto humano
  • Sec. 10 — Vibração por desprendimento de vórtices (Vcr, Scruton)
  • Sec. 11 — Ação de vento em pontes (Pse, flutter, galope)
  • Anexos A, B, C — S₂(qualquer t), S₃(Pₘ, vida útil), 49 estações meteorológicas

🚀 Stack

  • React 19 + TypeScript + Vite 8
  • Tailwind v4 + shadcn/ui (new-york)
  • Zustand (estado)
  • @react-three/fiber + drei (3D)
  • @react-pdf/renderer (PDF)
  • Vitest (testes) — 38/38 passando

🧪 Scripts

cd app
npm run dev        # desenvolvimento (HMR)
npm run build      # tsc + vite build
npm run lint       # oxlint
npm test           # vitest run (38 testes)
npm run test:watch # vitest watch

Atenção: Os binários em node_modules/.bin/ perdem o bit de execução. Se reclamar Permission denied, rode chmod +x node_modules/.bin/<bin> antes.

📁 Estrutura

app/src/
├── lib/
│   ├── wind-kernel.ts          Motor matemático
│   ├── bilinear-interp.ts      Interpolação bilinear (sec. 3.2)
│   ├── log-interp.ts           Interpolação log-linear
│   ├── wind-direction.ts       Mudança de rugosidade (sec. 5.5)
│   ├── internal-pressure.ts    Cpi (sec. 6.3)
│   ├── neighborhood.ts         fᵥ (sec. 6.4)
│   ├── coefficients.ts         Cpe paredes/telhados (Tab. 6-12)
│   ├── excentricity.ts         ea, eb (sec. 6.1.4)
│   ├── friction.ts             Força de atrito (sec. 6.1.5)
│   ├── drag.ts                 Ca baixa/alta turbulência (Figs 4-5)
│   ├── comfort.ts              a_lim ISO 10137
│   ├── storage.ts              Persistência IndexedDB
│   ├── theme.tsx               Dark/light mode
│   ├── i18n.ts                 Strings pt-BR/en-US
│   ├── stations-lookup.ts      49 estações Anexo C
│   ├── export-pdf.tsx          PDF didático
│   ├── export-csv.ts           CSV estruturado
│   ├── modules/                Strategy pattern (7 módulos)
│   ├── nbr-tables/             36 tabelas + 3 anexos
│   ├── hooks/useProjects.ts    Hook React
│   └── __tests__/              Vitest (5 suites, 38 testes)
├── components/
│   ├── ui/                     shadcn/ui
│   ├── three/
│   │   ├── Cylinder3D.tsx
│   │   ├── Vault3D.tsx
│   │   └── Dome3D.tsx
│   ├── Warehouse3D.tsx         Galpão com zonas A-J
│   └── ExportMenu.tsx
├── pages/                       10 páginas
├── store/                       Zustand
└── App.tsx                     Rotas + ThemeProvider + Layout

📋 Módulos (páginas ativas)

Rota Módulo Tabelas/Figs
/galpao Galpão retangular com 3D zonas AJ 6, 7
/cilindro Silos, chaminés, reservatórios 13 + Reynolds
/abobada Abóbadas cilíndricas 1520
/cupula Cúpulas (terreno/parede) 21, 22 + F sust
/muros Muros e placas retangulares 23
/cobertura-isolada Cob. isoladas (uma e duas águas) 24, 25
/barras Barras (faces planas/circulares) 2628
/pontes Pontes (Pse, Cx/Cz, flutter, galope) 35, 36 + sec. 11
/dinamica Dinâmica + vórtices + conforto 3134
/settings Tema, persistência, estado

📐 Fórmula central

Vₖ = V₀ · S₁ · S₂ · S₃
q  = 0,613 · Vₖ² / 1000  [kN/m²]
p  = q · (Cpe  Cpi)      [kN/m²]

🧪 Testes (38/38 )

npm test

Cobrem:

  • Motor matemático (classe, S₂, Vₖ, q, S₃) — 14 testes
  • Interpolação bilinear e log — 5 testes
  • Cpi simplificado + clamp — 9 testes
  • Vizinhança — 4 testes
  • Reynolds + regime de escoamento — 6 testes

💾 Persistência

Projetos salvos em IndexedDB (browser local). Configurações de tema também em localStorage.

🌗 Temas

  • Light, Dark, System (segue prefers-color-scheme)
  • Toggle em /settings

📚 Documentação adicional

🚧 Próximas melhorias (resumo)

ID Item Esforço Impacto
M9.1 Refinar tabelas a partir do PDF real 3 dias Alto
M9.2 Cargas lineares (kN/m) por barra 2 dias Alto
M9.3 Screenshot 3D no PDF 1 dia Médio
M9.4 Export Ftool (.txt) 2 dias Médio
M9.5 Refatoração TypeScript (eliminar void) 1 dia Baixo
M9.6 3D para muros/torres/pontes/barras 3 dias Médio
M9.7 Import JSON de projetos 1 dia Médio
M9.8 i18n completo (en-US) 2 dias Baixo
M9.9 Validação contra Blessmann 2 dias Alto
M9.10 Dark mode em gráficos SVG 0.5 dia Baixo
M9.11 Persistência em servidor (especulativo)
M9.12 Testes E2E com Playwright 2 dias Médio

Detalhes e contexto em ../PROGRESS.md.


Aviso: Esta ferramenta é auxiliar. O projetista é responsável pela validação final dos resultados conforme a NBR 6123:2023 e pela emissão de ART.