# 05 — Critérios de aceitação e verificação ## Funcionais - [ ] `npm install` conclui sem erros. - [ ] `npm run dev` arranca e serve a aplicação sem erros de runtime. - [ ] `npm run build` (ou `tsc --noEmit`) sem **erros de TypeScript**. - [ ] Âncoras `#home`, `#work-plan`, `#indicators` (+`#goal`) navegáveis com scroll suave. - [ ] Header colapsa em menu < md; links funcionam em mobile e desktop. - [ ] Work plan: hover (desktop) e clique (mobile) revelam o cronograma. - [ ] Indicators: cartões clicáveis abrem detalhe. - [ ] Footer lista os 3 beneficiários e o suporte financeiro. ## Containerização (Docker) — ver [06-deployment.md](./06-deployment.md) - [ ] **RF-D1** `docker build -t resilience-microsite .` conclui sem erros (o build corre `npm run build` → `tsc -b`; erros de TS fazem o build falhar). - [ ] **RF-D2** `docker run -p 8080:80 resilience-microsite` serve o site em http://localhost:8080 sem depender de Node/npm no host. - [ ] **RF-D3** `docker compose up --build` arranca o serviço com a porta mapeada. - [ ] **RF-D4** Refresh/deep-link de uma âncora (ex.: `/#work-plan`) devolve 200 (SPA fallback do nginx para `index.html`). - [ ] **RF-D5** Imagem final isolada e sem estado: não inclui código-fonte nem Node; não requer volumes nem serviços externos. - [ ] **RF-D6** Versões base pinadas e `.dockerignore` exclui `node_modules`/`dist`. ## Conteúdo - [ ] Todo o texto em inglês e fiel a [03-content.md](./03-content.md) (sem invenção). - [ ] Datas, código de projeto, montantes e DOI corretos. ## Visual / UX - [ ] Paleta navy institucional INESCC + tipografia Outfit aplicadas. - [ ] Responsivo (mobile → desktop) sem overflow/quebras. - [ ] Animações discretas; respeitam `prefers-reduced-motion`. ## Rastreabilidade - [ ] Cada incremento de código referenciado em [CHANGELOG.md](./CHANGELOG.md). ## Plano de verificação 1. **Com Node local:** `npm install` → `npm run build` (gate TypeScript) → `npm run dev` → inspeção manual das 6 secções + navegação. 2. **Sem Node local (recomendado nesta máquina):** `docker build` (gate TS dentro da imagem) → `docker run -p 8080:80` → inspeção manual em http://localhost:8080. 3. Teste responsivo (largura mobile/desktop) e teclado/scroll. 4. Teste de SPA fallback: refrescar com hash `/#indicators` devolve a página.