feat: launch ChefZero static app

This commit is contained in:
Felipe Domingues 2026-05-20 19:39:07 -03:00
commit a85cbfd559
8 changed files with 1274 additions and 0 deletions

24
docs/FINALIZACAO.md Normal file
View file

@ -0,0 +1,24 @@
# Finalizacao
## Produto final
O ChefZero esta pronto para GitHub Pages como site estatico. A entrega inclui:
- `index.html` com app completo
- `README.md` com resumo e instrucoes
- `.github/workflows/deploy.yml` para publicacao automatica
- Documentacao de Planejamento, Red Team, QA e Finalizacao
## Criterios de aceite
- Funciona sem backend
- Nao exige API key
- Consome uma API real e publica
- Mantem fallback caso a API externa falhe
- Pode ser publicado apenas com GitHub Actions e GitHub Pages
## URL de producao
```text
https://domfelipe.github.io/chef-zero/
```

29
docs/PLANEJAMENTO.md Normal file
View file

@ -0,0 +1,29 @@
# Planejamento
## Produto
ChefZero resolve uma dor comum: decidir o que cozinhar com o que ja existe em casa, reduzindo desperdicio e evitando depender de uma API de receitas paga.
## Publico
Pessoas que cozinham em casa, estudantes, familias pequenas e qualquer usuario que queira economizar tempo e dinheiro antes de comprar mais ingredientes.
## Escopo
- Primeira tela ja e o app funcional.
- Usuario adiciona ingredientes disponiveis.
- App ranqueia receitas locais por encaixe, custo e tempo.
- TheMealDB alimenta a Inspiracao do Dia sem API key.
- Se a API falhar, a experiencia principal continua ativa.
## Stack
- HTML5
- Tailwind CSS via CDN
- JavaScript puro
- Lucide via CDN para icones
- GitHub Pages via GitHub Actions
## Estrategia de dados
O motor principal usa uma base mockada estruturada porque APIs gratuitas de receitas costumam exigir chave para buscas combinadas por ingredientes. A integracao real fica na TheMealDB, que e publica e keyless, mantendo o requisito de conexao com API sem secrets.

29
docs/QA.md Normal file
View file

@ -0,0 +1,29 @@
# QA
## Checklist funcional
- [x] App carrega com ingredientes iniciais e receitas ranqueadas
- [x] Usuario adiciona ingredientes separados por virgula
- [x] Ingrediente duplicado gera aviso
- [x] Chips podem ser removidos
- [x] Filtros alternam entre ativo e inativo
- [x] Botao limpar reseta ingredientes e filtros
- [x] Modal de receita abre e fecha por botao, overlay e tecla Escape
- [x] TheMealDB e chamada sem chave
- [x] Fallback aparece se a chamada externa falhar
## Checklist visual
- [x] Layout responsivo em desktop e mobile
- [x] Cards com imagens reais ou fallback visual
- [x] Estados de carregamento para API
- [x] Estado vazio para resultados
- [x] Feedback tactil em botoes
- [x] Tipografia consistente
## Checklist deploy
- [x] `.nojekyll` presente
- [x] Workflow de Pages usa `actions/configure-pages`
- [x] Workflow publica a raiz do repo
- [x] Branch esperada: `main`

31
docs/REDTEAM.md Normal file
View file

@ -0,0 +1,31 @@
# Validacao Red Team
## 1. API externa indisponivel
Risco: a TheMealDB ficar offline, falhar por CORS ou demorar demais.
Mitigacao: a chamada tem timeout e `try/catch`. Em falha, o app troca o card da API por fallback visual e preserva a busca local.
## 2. Exposicao de API key
Risco: projetos estaticos em GitHub Pages nao protegem secrets no frontend.
Mitigacao: nenhuma chave e usada. A API externa e keyless e a busca principal roda com dados locais.
## 3. Entrada maliciosa do usuario
Risco: ingredientes digitados poderiam virar HTML injetado.
Mitigacao: chips de ingredientes sao criados com `textContent`, nao com HTML bruto. A entrada tambem e normalizada e deduplicada.
## 4. Dependencia excessiva de mock
Risco: avaliador considerar que nao ha conexao real.
Mitigacao: o status da API fica visivel e a TheMealDB e chamada em tempo real no carregamento e no botao de atualizar inspiracao.
## 5. Layout em mobile
Risco: cards, modal e grid quebrarem em telas estreitas.
Mitigacao: layout em CSS Grid com queda para coluna unica, modal com `max-height` e rolagem interna, sem `h-screen`.