Desafio 🚀 🚀 🚀
O desafio foi poposto por ByCoders e consiste em criar um projeto do youtube, utilizando a YouTube API.
Foi criado 3 páginas:
-
Home, com os vídeos em alta no Brasil
-
Página com o vídeo escolhido para assistir com os vídeos relacionados e comentários
-
Página do canal com vídeos filtrados por data de postagem e informações do mesmo
- ⚡ Next.js como framework principal
- 🔥 Desenvolvido com TypeScript
- 📏 Linter Com ESLint (configuração STANDARD)
- 🌈 Code Formatter com Prettier
- 🗂 Absolute Imports usando
@
prefix (ALIAS configurado) - 🤖 Teste automatizados com Jest e Cypress
- ⚛ Redux para a gerencia de estados
Required Node.Js ^14
Antes de rodar o projeto
- Crie um projeto no console de desenvolvedor da Google
- Ative a YouTube Data API v3 nele
- Crie uma credencial de acesso para que seu app possa se comunicar com a API
Executando o projeto
- Crie um arquivo chamado
.env.local
apartir do arquivo.env.example
- Atribua a variavel
NEXT_PUBLIC_API_KEY
no arquivo.env.local
a chave que você gerou no console de desenvolvedor - Execute o comando
yarn
ounpm install
para instalar as dependencias - Execute o comando
yarn run dev
ounpm run dev
para rodar o projeto
Executando os testes
Após toda a instalação de dependencias e configurado sua chave de API, você pode rodar os testes.
Aqui temos dois testes, o e2e com cypress
e unitário com Jest
- Execute os testes do
cypess
com o comandoyarn run cypress
ounpm run cypress
- Execute os testes do
Jes
com o comandoyarn run jest
ounpm run jest
Requisitos do desafio
- Fornecer um mecanismo para o usuário poder pesquisar vídeos
- Possuir home page que exiba algum conteúdo interessante para uma plataforma de vídeos
- Fornecer uma estrutura de gerência do estado da aplicação
- Possuir histórico das buscas realizadas (persistir localmente)
Requisitos extras
- Permitir cadastro de usuário / login através da API do YouTube + OAuth2
- Permitir upload de vídeo para a API do YouTube
- Clean code
- Conhecimento de boas práticas / design patterns
- Demonstração de boa gestão do estado do app
- Uso de frameworks / libs
- Testes
- Componetização do app
- Uso de linters