Aplicações Frontend¶
Visão Geral¶
As aplicações de frontend são publicadas majoritariamente como SPAs Angular servidas por Nginx. O padrão da plataforma é construir uma imagem única por UI e injetar configuração em runtime, evitando rebuild por ambiente.
Inventário¶
| Aplicação | Stack | Porta | Output de build | Observações |
|---|---|---|---|---|
| is-core-ui | Angular 17 / Node 22 | 80 | /app/IS/ |
Usa env.js em runtime |
| is-indicadores-ui | Angular 14 / Node legado | 80 | dist/ |
Stack mais antiga, ainda usa Karma |
| is-notification-ui | Angular 17 / Node 22 | 80 | dist/ |
Build alinhado ao padrão moderno |
| is-portal-ui | Angular 17 / Node 18 | 80 | dist/portal-ui/ |
Output path customizado |
| is-regulation-ui | Angular 17 / Node 18 | 80 | dist/regulation-ui/ |
Output path customizado |
| is-reports-ui | Java / WAR / JasperReports | 9999 | WAR | Exceção: não é Angular apesar do sufixo -ui |
Padrão de Build Angular¶
O fluxo dominante para as UIs Angular é:
```dockerfile FROM node:22 AS dependencies WORKDIR /app COPY package.json ./ RUN npm install --legacy-peer-deps
FROM dependencies AS build COPY . ./ ENV NODE_OPTIONS="--max-old-space-size=8192" RUN npm run build --prod
FROM nginx:alpine COPY --from=build /app/dist/ /usr/share/nginx/html/ EXPOSE 80 ```
Mesmo padrão, outputs diferentes
O padrão de Dockerfile é similar entre as UIs, mas o diretório final do build varia por projeto. is-core-ui publica em /app/IS/, is-portal-ui em dist/portal-ui/ e is-regulation-ui em dist/regulation-ui/.
Configuração em Runtime¶
As UIs Angular não dependem de recompilar a imagem para cada ambiente. Em vez disso:
- A imagem é construída uma vez
- Um
env.jsé montado por ConfigMap, volume ou script de startup - A UI lê endpoints, ambiente e flags a partir de
window.__env
Isso permite reutilizar a mesma imagem em HML e NOX.
Detalhes por Aplicação¶
is-core-ui¶
- É a referência principal para o padrão Angular moderno da plataforma.
- Build com Node 22.
- Output em
/app/IS/, não emdist/. - Testes com Jest e
jest-preset-angular.
is-indicadores-ui¶
- É a UI mais antiga deste grupo.
- Usa Angular 14.2 e tooling legado.
- O projeto ainda usa Karma em vez de Jest.
- Deve ser documentado como exceção de manutenção, porque não segue o padrão Angular 17 das demais UIs.
is-notification-ui¶
- Segue o padrão moderno de Angular 17 com Jest.
- O Helm chart é simples: porta 80, probes HTTP e secret de configuração da app.
is-portal-ui¶
- Angular 17, mas com Node 18 no build observado.
- O ponto mais importante para troubleshooting é o
outputPath, que publica emdist/portal-ui/. - O Nginx precisa servir uma SPA com fallback para
index.html.
is-regulation-ui¶
- Parecida com
is-portal-ui, também usa Node 18. - O build sai em
dist/regulation-ui/. - O roteamento e o path do chart precisam permanecer coerentes com esse output.
is-reports-ui¶
Exceção tecnológica
O is-reports-ui não é uma UI Angular. O projeto é Java, empacota WAR e roda na porta 9999 com bibliotecas de relatórios como JasperReports e Stimulsoft.
- Mantém o sufixo
-uipor contexto funcional, não por stack técnica. - Deve ser lido junto do
is-reports-apie dos charts especiais. - Requer memória mais alta no runtime do que uma UI Nginx típica.
Chart e Deploy¶
Nas UIs Angular, o chart normalmente precisa de:
ExternalSecretda configuração da appimagePullSecretsvindos desystem/global-pull-secrets- Service na porta 80
- HTTPRoute com hostname do tenant e path da UI
Para requisitos detalhados de chart e diferenças por app, consulte Requisitos por Aplicação e Charts Especiais.