Skip to content

RickHardBR/tmdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NWFS - Rodada de cases

Endereço surge: tmdb-pessoal.surge.sh


Case 01 - Frontend - Listagem de Filmes Usando TMDB

Empresa: Promobit

Enunciado: 🇧🇷

Linguagens/Frameworks: React

Dificuldade: 💡💡

Tarefa: Listagem dos filmes.

Promobit/front-end-challenge


O DESAFIO


Usando a API de filmes themovidb gratuita themoviedb em sua versão 3, você será responsável por criar uma listagem dos filmes mais populares do dia, consultando o endpoint GET /movie/popular para realizar a listagem. Ao clicar em um item dessa listagem, outra página com os detalhes do filme escolhido deve ser exibida. Para acessar mais detalhes sobre o filme, você pode consultar o endpoint GET /movie/{movie_id}.

Para garantir que o usuário encontre o filme que está procurando, essa lista deverá ser paginada.

Siga o layout do figma sugerido. Não há necessidade de ser pixel perfect mas respeite a composição, fontes e cores.

Requisitos Funcionais


🎥 O usuário deve ter acesso a uma listagem dos filmes mais populares do dia

🎥 O usuário deve conseguir paginar a lista para encontrar novos filmes

🎥 O usuário deve ter acesso a uma outra página com detalhes sobre o filme, ao clicar em um item na listagem

🎥 A página com detalhes de um filme deve possuir uma rota própria e estar preparada para ser indexada em mecanismos de pesquisa

Requisitos não Funcionais


🎥 O app deverá ser criado usando React

Na raiz do projeto, será necessário incluir um arquivo README.md com as instruções para construir seu projeto localmente. Opcionalmente você pode detalhar as razões pelas escolhas de ferramentas e técnicas aplicadas ao desafio.

🎥 O app deverá se comportar da mesma forma na última versão estável dos seguintes browsers: Chrome, Firefox, Edge

🎥 O app deverá ser responsivo

Extras


Temos insights que nos levam a acreditar que os usuários dessa lista costumam ter uma experiência melhor se conseguirem criar um filtro usando seus gêneros favoritos. Portanto, você também poderá criar filtros de filmes por gênero nessa listagem. Note que um novo endpoint deverá ser consultado para obter uma lista dos possíveis gêneros a serem filtrados, GET /genre/movie/list.

🎥 O usuário deve conseguir filtrar os filmes listados por gênero, com a possibilidade de usar mais de um gênero 🎥 O usuário deve conseguir remover filtros e a listagem deve ser atualizada de acordo com o filtro removido 🎥 O usuário deve conseguir voltar para a página de listagem de filmes com os filtros ainda ativos

Critérios de avaliação


💻 Boas práticas de desenvolvimento como: html semântico, componentização, design patterns, clean code
🪄 Domínio das ferramentas e linguagens que compõe um app de frontend moderno
📒 Documentação: explicação para construir o app localmente, histórico e workflow de git


Como executar na sua máquina


Conhecendo o cli do react


Como de costume, atualmente está sendo uma boa prática os frameworks possuírem um cli (client) para ajudar na utilização do mesmo, assim como os outros o React também adotou esse padrão e criou seu cli, o famoso create-react-app. Com ele conseguimos criar uma aplicação em React, com boa parte das configurações realizadas (podem ser customizadas), com isso, conseguimos focar mais no aprendizado e desenvolvimento.

Instalando o cli do React


Para realizarmos a instalação do cli podemos realizar de duas maneiras: com yarn ou npm.

Não irei abordar como instalar ambos gerenciadores de pacotes ou dependência, porém, o processo instalação pode facilmente ser encontrado na documentação oficial de ambos.

Instalando com Yarn


Para realizar a instalação com Yarn, podemos rodar o comando global add:

yarn global add create-react-app

Instalando com npm

Para realizar a instalação com npm, podemos rodar o comando install -g ou i -g:

npm install -g create-react-app

Ou

npm i -g create-react-app

Obs: Em ambos os casos estamos instalando o create-react-app como global, para que possa ser rodado em qualquer lugar do nosso terminal e compartilhado a mesma versão em todos os projetos (em alguns casos o pessoal preferem utilizar uma versão para cada projeto).

Criando a app com o cli do react


Pronto, agora que já temos nosso cli instalado, podemos finalmente criar a nossa app, o processo pode ser feito de duas maneiras diferentes, sendo elas: com o create-react-app ou npx.

A única diferença é que com o create-react-app precisamos tê-lo instalado em nossa máquina, agora o npx irá executar o create-react-app sem instalá-lo na máquina local.

Criando com create-react-app


Para criar uma aplicação com o create-react-app podemos fazer de duas maneiras: Em uma pasta já existente ou em uma nova pasta.

Criando em uma nova pasta

Para criarmos a aplicação (estou chamando de aplicação para melhor entendimento do post), em uma nova pasta apenas rodamos o create-react-app seguido pelo noma da aplicação:

create-react-app minha-primeira-app

asciicast

Criando em uma pasta já existente


Assim como podemos criar uma nova pasta, também podemos utilizar uma pasta já existente para criar nossa aplicação em React. A diferença é que devemos navegar até a pasta pelo terminal (cd caminho_ate_a_pasta) e em vez de passar um nome para o create-react-app passamos um . (para referenciar a pasta atual):

create-react-app .

asciicast

Criando com npx


Além de utilizar o create-react-app já instalado na máquina, podemos pedir para o npx executá-lo e criar nossa aplicação, nesse caso a instalação do create-react-app não precisa e nem será feita:

npx create-react-app minha-primeira-app

asciicast

Obs: A opção de utilizar uma pasta já existente, também vale para o npx e deve ser feita da mesma maneira, apenas adicionando o npx na frente do comando, ou seja, precisamos navegar até a pasta (cd) para executar o comando e passar um . em vez de um nome.

Subindo nossa app

Com a nossa aplicação criada, podemos subí-la de duas maneiras, através do yarn ou npm, isso vai depender da sua preferência ou gosto por um desses gerenciadores de pacote.

Subindo app com yarn

Para subir a app utilizando o yarn precisamos apenas rodar o comando start:
yarn start

Subindo app com npm

De forma semelhante ao yarn, com o npm precisamos também rodar o start:

npm start

ou

npm run start

Em ambos os casos, assim que nossa app subir, o navegador será automaticamente aberto com uma página principal padrão (default) do React.

image


Imagens

Estrutura de Pastas e Arquivos

image

Tela Inicial

image

Tela Inicial usando Filtros

image

Detalhes de um filme escolhido

image image

Tela Mobile Inicial + Paginação

mobile1 mobile2

Tela Inicial com filtro aplicados

mobile3 mobile4

Tela Detalhes de um filme escolhido

mobile5 mobile6

mobile7 mobile7

Clique: nas ▶️

Tecnologias Usadas

📌React

📌axios

📌date-fns

📌react-player

📌react-Paginate

📌react-router-dom

📌styled-component

📌react-circular-progressbar


Getting Started with Create React App

This project was bootstrapped with Create React App.

Available Scripts

In the project directory, you can run:

npm start

Runs the app in the development mode.
Open http://localhost:3000 to view it in your browser.

The page will reload when you make changes.
You may also see any lint errors in the console.

npm test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

npm run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.

npm run eject

Note: this is a one-way operation. Once you eject, you can't go back!

If you aren't satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.

You don't have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.

Learn More

You can learn more in the Create React App documentation.

To learn React, check out the React documentation.

Code Splitting

This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting

Analyzing the Bundle Size

This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size

Making a Progressive Web App

This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app

Advanced Configuration

This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration

Deployment

This section has moved here: https://facebook.github.io/create-react-app/docs/deployment

npm run build fails to minify

This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify

About

Lista de filmes usando API TMDB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published