Pular para conteúdo

Stack

Aplicativo

Camada Escolha Versão
Framework Expo (React Native) ~57.0
Runtime React Native 0.86
UI React 19.2
Linguagem TypeScript strict ~6.0
Navegação Expo Router (por arquivo) ~57.0
Estado Zustand + persistência ^5.0
Armazenamento AsyncStorage 2.2
Gráficos React Native SVG 15.15
Animação Reanimated 4.5
Tipografia Nunito embarcada

Qualidade

Ferramenta Papel
ESLint Padrão de código
Prettier Formatação
TypeScript Verificação de tipos, modo estrito
Jest + Testing Library Testes
GitHub Actions Integração contínua
SonarCloud Análise estática e Quality Gate

Decisões de stack que valem explicação

Expo, não React Native puro

Expo entrega build, fontes, splash, ícones e atualização sem configuração nativa manual. Para um projeto de uma pessoa só, o tempo economizado em configuração é tempo gasto em produto.

Zustand, não Redux nem Context

O app tem um estado global: a despensa. Redux traria estrutura demais; Context puro traria re-renders demais. Zustand com persistência resolve em poucas linhas.

TypeScript estrito, sem any de conveniência

O catálogo de ingredientes e o de receitas são dados grandes escritos à mão. Tipagem estrita é o que impede erro de digitação virar bug silencioso em produção.

Dependências governadas pelo SDK

As versões de runtime não são atualizadas individualmente. Quem manda é o SDK do Expo, via npx expo install --check. Subir um pacote sozinho quebra a compatibilidade do conjunto.

Atualização automática só para o CI

O robô de dependências está ligado apenas para as ações do GitHub Actions, exatamente para não propor bumps individuais nas dependências do app.