Este projeto foi desenvolvido com o objetivo de explorar e aprimorar habilidades em desenvolvimento front-end utilizando React com TypeScript, integração com APIs externas, manipulação de queries, e implementação de testes. A aplicação enfatiza práticas como:
- Uso de frameworks e bibliotecas modernas para criar uma aplicação funcional e responsiva.
- Consumo de APIs (neste caso, a TMDB API) para manipulação e exibição de dados.
- Estruturação de componentes com foco na separação de responsabilidades.
- Manipulação de queries para lidar com dados paginados, incluindo filtragem e ordenação.
- Paginação direta, podendo navegar diretamente nas paginas mostradas, unitariamente (proximo e anterior) ou se preferir, pode mover-se a cada 10 paginas (seguintes ou anteriores).
- Uso de React Router DOM para gerenciar rotas, incluindo
useParams
euseNavigate
para navegação dinâmica. - Uso de React Hooks como
useState
euseEffect
para controle de estado e ciclo de vida. - Implementação de testes utilizando React Testing Library, e suporte a mocks e spies com Jest.
- A funcionalidade de ordenação opera dentro do contexto de cada página, já que a API utilizada realiza requisições baseadas em páginas específicas.
- Embora a estilização não tenha sido priorizada, a aplicação entrega uma experiência funcional para o usuário final.
- O projeto foi pensado para consolidar conceitos de consumo de APIs RESTful, manipulação de rotas e boas práticas em React/TypeScript.
- React com TypeScript.
- API do TMDB.
- React Router DOM (
useParams
,useNavigate
). - React Hooks (
useState
,useEffect
). - React Testing Library.
- Jest para mocks e spies.
A aplicação está hospedada no Netlify e pode ser acessada no link: movie-challenge-react-ts.netlify.app
Caso queria rodar localmente em seu computador:
-
Clone o repositório:
git clone <URL_DO_REPOSITÓRIO>
-
Navegue até o diretório do projeto:
cd <NOME_DO_DIRETÓRIO>
-
Crie um arquivo
.env
na raiz do projeto com a seguinte variável: VITE_TOKEN_API=<SEU_TOKEN_DA_API> -
Instale as dependências com npm ou yarn:
npm install yarn install
-
Inicie o servidor de desenvolvimento:
npm run dev
Algumas ideias para expandir e melhorar a aplicação incluem:
-
Interface e Padronização:
- Definir uma paleta de cores e tipografia mais harmoniosa para melhorar a experiência visual.
- Implementação de temas (claro/escuro) para maior acessibilidade.
- Padronizar os cards, garantindo uma apresentação uniforme e adaptável em diferentes dispositivos e tamanhos de tela.
- Organizar melhor os elementos dos cards, como títulos, imagens e descrições.
-
Tratativa de Dados:
- Gerenciamento de erros vindos da API, como falhas no carregamento de imagens ou textos incompletos.
- Implementação de mensagens de fallback para dados ausentes ou corrompidos.
-
Funcionalidades Adicionais:
- Permitir ordenação global para todos os resultados, utilizando uma abordagem customizada que transcenda as limitações da API.
- Adicionar um sistema de busca mais robusto e inteligente.
-
Performance:
- Melhorar o Cumulative Layout Shift (CLS) para reduzir o deslocamento inesperado de elementos na página.
- Otimizar o tempo de carregamento, com foco em melhorar o Largest Contentful Paint (LCP).
- A limitação da API impede a ordenação global, funcionando apenas dentro da página atual.
- Para mais informações sobre a API utilizada, consulte a documentação oficial.