Projeto originalmente criado em uma fase anterior dos meus estudos e agora remasterizado com uma abordagem mais madura de arquitetura, organização e tipagem.
Esta versão representa a evolução do meu processo: apliquei conceitos que aprendi desde a primeira implementação e refatorei a base para ficar mais escalável, legível e previsível.
A aplicação consome uma API pública de posts sobre nutrição e exibe os conteúdos em cards, com destaque para:
- listagem dinâmica de dados vindos da API
- marcação de favoritos na interface
- estrutura baseada em componentes reutilizáveis
- separação por páginas para facilitar crescimento futuro
O projeto foi atualizado para TypeScript para garantir mais segurança no desenvolvimento e melhor experiência de manutenção.
Principais ganhos:
- redução de erros em tempo de execução
- autocomplete e navegação melhores no editor
- contratos explícitos entre componentes e serviços
Foi criado um contrato de dados centralizado para a resposta da API:
- interface ApiResponse em src/types/apiContract.ts
- serviço de API retornando Promise<ApiResponse[]>
- estado do React tipado com useState<ApiResponse[]>
Com isso, o consumo de dados ficou padronizado e mais confiável.
Foi aplicada estilização utilitária com Tailwind, priorizando produtividade e consistência visual:
- classes utilitárias direto nos componentes
- layout responsivo com breakpoints
- customização simples e rápida sem dependência de CSS extenso por componente
A estrutura foi organizada por responsabilidades para facilitar leitura e evolução:
- components: elementos reutilizáveis de UI
- pages: telas e fluxos da aplicação
- services: regras de integração com API
- types: contratos e declarações globais
A aplicação foi dividida em blocos mais coesos:
- Header: cabeçalho da aplicação
- Card: container visual reutilizável
- Home: página principal com regra de listagem e favoritos
Isso reduziu acoplamento e melhorou a clareza da regra de negócio.
src/
App.tsx
index.tsx
style.css
components/
Card/
index.tsx
Header/
index.tsx
pages/
Home/
index.tsx
services/
api.ts
types/
apiContract.ts
global.d.ts
- React 19
- TypeScript
- Tailwind CSS
- Create React App (base do setup)
- Testing Library + Jest
- Node.js 18 ou superior
- npm
npm installnpm startA aplicação ficará disponível em http://localhost:3000.
npm testnpm run build- Adoção de TypeScript com contrato explícito da API.
- Estrutura de pastas mais profissional e orientada a responsabilidade.
- Componentização da interface, facilitando reutilização.
- Uso de Tailwind para acelerar o desenvolvimento visual.
- Código mais limpo em comparação ao padrão inicial gerado automaticamente.
- tratar estados de carregamento e erro com feedback visual para usuário
- persistir favoritos em localStorage
- adicionar testes de componentes e testes do serviço de API
- implementar paginação ou filtros por categoria
- aplicar fallback de imagem para casos de erro no carregamento
Este projeto é um marco da minha evolução técnica: saiu de uma versão antiga e foi remasterizado com práticas modernas de front-end, foco em organização e base preparada para escalar.
Mais do que uma refatoração visual, foi uma melhoria estrutural de arquitetura, tipagem e manutenção.
