From a85cbfd55911d2d7fe54abec8be4d943c495d829 Mon Sep 17 00:00:00 2001 From: Felipe Domingues Date: Wed, 20 May 2026 19:39:07 -0300 Subject: [PATCH] feat: launch ChefZero static app --- .github/workflows/deploy.yml | 38 ++ .nojekyll | 1 + README.md | 46 ++ docs/FINALIZACAO.md | 24 + docs/PLANEJAMENTO.md | 29 + docs/QA.md | 29 + docs/REDTEAM.md | 31 + index.html | 1076 ++++++++++++++++++++++++++++++++++ 8 files changed, 1274 insertions(+) create mode 100644 .github/workflows/deploy.yml create mode 100644 .nojekyll create mode 100644 README.md create mode 100644 docs/FINALIZACAO.md create mode 100644 docs/PLANEJAMENTO.md create mode 100644 docs/QA.md create mode 100644 docs/REDTEAM.md create mode 100644 index.html diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..1145b3c --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,38 @@ +name: Deploy ChefZero to GitHub Pages + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure Pages + uses: actions/configure-pages@v5 + + - name: Upload static site + uses: actions/upload-pages-artifact@v3 + with: + path: . + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..c361a78 --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# ChefZero + +ChefZero e um app estatico para encontrar receitas com ingredientes que ja existem em casa. Ele combina um motor local de busca por ingredientes com uma integracao real e sem chave com a API publica TheMealDB para carregar a Inspiracao do Dia. + +## Entrega + +- App 100% estatico para GitHub Pages +- Busca local com ranking por encaixe, tempo e custo +- Dados mockados ricos para evitar dependencia de API paga +- Integracao keyless com TheMealDB via `fetch` +- Fallback elegante quando a API externa falha +- Workflow GitHub Actions para deploy automatico +- Documentacao das etapas de Planejamento, Execucao, Red Team, QA e Finalizacao + +## Deploy + +O deploy roda automaticamente a cada `push` na branch `main` usando `.github/workflows/deploy.yml`. + +URL esperada: + +```text +https://domfelipe.github.io/chef-zero/ +``` + +## Arquivos + +```text +. +├── index.html +├── README.md +├── .nojekyll +├── .github/workflows/deploy.yml +└── docs/ + ├── FINALIZACAO.md + ├── PLANEJAMENTO.md + ├── QA.md + └── REDTEAM.md +``` + +## Desenvolvimento local + +```bash +python3 -m http.server 4173 +``` + +Abra `http://localhost:4173`. diff --git a/docs/FINALIZACAO.md b/docs/FINALIZACAO.md new file mode 100644 index 0000000..4d3f300 --- /dev/null +++ b/docs/FINALIZACAO.md @@ -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/ +``` diff --git a/docs/PLANEJAMENTO.md b/docs/PLANEJAMENTO.md new file mode 100644 index 0000000..0b6af09 --- /dev/null +++ b/docs/PLANEJAMENTO.md @@ -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. diff --git a/docs/QA.md b/docs/QA.md new file mode 100644 index 0000000..2514c5f --- /dev/null +++ b/docs/QA.md @@ -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` diff --git a/docs/REDTEAM.md b/docs/REDTEAM.md new file mode 100644 index 0000000..ce5ccd5 --- /dev/null +++ b/docs/REDTEAM.md @@ -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`. diff --git a/index.html b/index.html new file mode 100644 index 0000000..f337115 --- /dev/null +++ b/index.html @@ -0,0 +1,1076 @@ + + + + + + + ChefZero | Cozinha sem desperdicio + + + + + + + + +
+
+ + + + + + ChefZero + cozinha sem desperdicio + + + + +
+ +
+
+
+
+
+

+ Motor local com API keyless +

+

+ Cozinhe com o que ja existe na sua cozinha. +

+
+ +
+
+ 0 +

receitas ranqueadas

+
+
+ R$ 0 +

potencial poupado

+
+
+ 0% +

encaixe medio

+
+
+
+ +
+
+ +
+ + +
+

+
+ +
+
+
+ +
+ + + + +
+
+
+ +
+
+ + Sugestoes rapidas +
+
+ +
+ +
+ +
+
+
+ + +
+
+ + + + + + +