Skip to content

Latest commit

 

History

History
96 lines (85 loc) · 5.42 KB

README-PT.md

File metadata and controls

96 lines (85 loc) · 5.42 KB

Tecnologias


Requisitos

  • Possibilidade de inserir o nome da música ou do álbum e obter uma lista;
  • Caso um album seja procurado e retornado, quando selecionado o album, usuário será direcionado a lista de música desse album.
  • Reproduzir a preview da música.
  • É necessário utilizar React;
  • Você deve criar um repositório e compartilhar com a gente;
  • Não deve usar nenhum Framework CSS (Bootstrap, PureCss, etc.);
  • Não deve usar scaffolds (Create React App, etc.), queremos ver como vai construir a estrutura do seu projeto;
  • Quero poder rodar o seu projeto com yarn/npm start;
  • A aplicação deve solicitar o token que será utilizado para realizar as requisições para a API;
  • Persistência do TOKEN, quando expirado solicitar um novo token;
  • Precisamos ter certeza que nossa aplicação funciona conforme o esperado, alguns testes seriam bem vindos, estamos usando por aqui enzyme e jest, mas sinta-se a vontade para testar com o que sente maior conforto.
  • Pense que sua aplicação passará por 3 ambientes, DSV - HML - PRD, monte build e use variaveis de ambiente.

Requisitos adicionais

  • Quando o usuário fizer uma requisição seria legal salvar dentro do redux, caso ele digite e busque novamente o album nós pegamos uma cópia de lá para não fazer múltiplas requisições para a API.
  • Quando o usuário entrar na aplicação podemos exibir uma lista com os últimos albums buscados/clicados para melhorar a experiência.
  • Hoje grande parte dos acessos a sites são feitos por celular, um layout responsivo faz todo sentido para nossa aplicação!
  • Nosso time de UX é bem exigente, pensam bastante na experiência do usuário, algumas animações e efeitos seriam interessantes também.

Extras

  • Tudo usando uma infraestrutura grátis.
  • OAuth para fazer login e obter o token de acesso.
  • Scroll infinito e botão de carregar mais para um melhor UX.
  • Backend para que o token de acesso não fique exposto e para SSR.
  • Hospedado online no vercel.
  • Mostrar letras de músicas.
  • Tratamento de erros e fallbacks.
  • Testes E2E sem mockar nada.
  • CI e CD pipeline, testes automatizados em todo commit e deploy direto para a vercel.
  • Observabilidade de erros em produção com Axiom.
  • Analitcs com @vercel/analytics.
  • Componentes de interface do usuário reutilizáveis aos quais você pode adicionar classes.
  • Lazy loading componens para carregar mais rápido.
  • Localização completa em inglês e português!
  • Modo escuro e modo claro.
  • SEO amigável.
  • SSR para velocidade e melhor SEO.
  • Ratelimitando a api através do upstash.
  • Cache de consulta no localhost.
  • Reproduzir a música completa no caso de ter uma conta premium usando o spotify-web-player sdk.
  • Executar no edge runtime para obter o máximo de desempenho e o menor custo, sem cold starts.
  • Totalmente typesafe usando Typescript e protegendo o backend em runtime usando zod.
  • Imagens optimizadas com sharp através da vercel.
  • Middleware para garantir que o usuário tem sessão iniciada.
  • Painel com documentação para visualização da api do backend.
  • Acessível para todos, Leitor de ecrã e navegação por teclado.

Desenvolvimento

Abra o terminal

Baixe o repositório com git clone https://github.com/YgorPerez/spotify-api-challenge.git

cd spotify-api-challenge

Rode pnpm i

Abra o arquivo .env.example e siga as intruçöes

Agora você pode rodar o projeto com pnpm dev e vai estar no localhost:3000

Limitaçöes

O spotify deixa apenas emails registrados no dashboard conectar no app com a versäo de desenvolvedor entäo qualquer um que quiser ver o app vai ter que me pedir para adicionar seu email do spotify lá. Eu já requisitei acesso a extensäo de quota deles para permitir qualquer usuário, mas é possível que eu näo consiga já que eles tem muitos e muitos requistos que acabariam degradando a UI do aplicativo e eu decidi näo implementar para seguir layout.

Eu näo consigo rodar todo o backend no edge runtime devido à uma limitação da vercel em modo gratuíto que permite apenas 1MB para o tamanho da funçäo edge e eu utilizo 80KB a mais que isso.

Veja o app

Página inicial do app Página inicial do app Página inicial do app no light mode Página inicial do app no light mode Página inicial do app no mobile Página de álbum do app Página de álbum do app Página de álbum do app no light mode Página de álbum do app no light mode Página de álbum do app no mobile