64 lines
2.3 KiB
Markdown
64 lines
2.3 KiB
Markdown
# 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](../GeradoresWS/README.md).
|
|
|
|
## Desenvolvimento
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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).
|