Files
2026-10-11 23:52:48 +01:00
..
2025-03-05 01:07:29 +00:00
2025-07-13 21:43:37 +01:00
2025-07-13 21:43:37 +01:00
2025-07-13 21:43:37 +01:00
2025-07-13 21:43:37 +01:00
2025-07-13 21:43:37 +01:00

geradoresfe

Frontend React 19 + Vite + Tailwind CSS 4 + TypeScript. A UI não conhece os tipos de gerador: lê /api/v1/generators e constrói as páginas e os formulários de opções a partir dos metadados da API.

Desenvolvimento

npm install
npm run dev      # http://localhost:3000

O Vite faz proxy de /api, /docs e /openapi para http://localhost:5053 (dotnet run --project GeradoresWS --launch-profile http). Para outro backend: API_PROXY_TARGET=http://host:porta npm run dev.

Script Descrição
npm run dev Servidor de desenvolvimento
npm run build Type-check (tsc -b) e build de produção em dist/
npm run lint ESLint
npm test Vitest
npm run preview Serve o build localmente

Páginas

Rota Página
/ Lista de geradores por categoria
/gerador/:id Opções, geração em lote (até 1000), cópia e exportação CSV/JSON/TXT
/validar Validador livre: detecta o tipo e explica porque é (in)válido
/NIF, /NISS, /CC Redireccionam para as rotas novas

Estrutura

Caminho Conteúdo
src/lib/api.ts Cliente da API e tipos
src/lib/useGenerators.tsx Contexto que carrega a lista de geradores uma vez
src/lib/export.ts Exportação CSV/JSON/TXT (testado em export.test.ts)
src/pages/ Páginas das rotas
src/components/ Cartões, formulário de opções, validador, resultados
src/components/ui/ Componentes base (botão, input, select, badge, …)
src/layout/ Cabeçalho, rodapé e layout
src/context/ThemeContext.tsx Modo claro/escuro

API

Por omissão o cliente usa caminhos relativos (/api/v1). Em dev é o proxy do Vite; em produção é o nginx. VITE_API_URL (em build time) permite apontar para outro host.

Docker

docker build -t geradoresfe .
docker run -p 3000:80 -e API_UPSTREAM=http://geradoresws:8080 geradoresfe

A imagem serve o build com nginx. O nginx.conf.template é processado com envsubst no arranque, e /api, /docs e /openapi são encaminhados para API_UPSTREAM (por omissão http://geradoresws:8080). A mesma imagem serve em qualquer ambiente sem rebuild. Os ficheiros em /assets/ têm cache longa e o resto cai no index.html (SPA).