Hey pessoas! Já faz um tempo desde o último post, hein. xD
De vez em quando o blog entra em uns hiatos mas não se espantem. O fluxo é esse mesmo. Mas sempre que tem algo que eu considero relevante manter para consultas futuras eu acabo postando por aqui.
Sem mais delongas. Esse projeto que estou disponibilizando no github é, na verdade, um teste que fiz para uma empresa. Só que eu não terminei o teste a tempo (pois é T.T).
A idéia era criar uma aplicação que consumisse dados da api do Spotify e filtrasse as buscas por artistas, álbums e músicas.
No momento as telinhas do app são algo como essas abaixo.



Pra dizer a verdade o projeto até que é simples. Eu demorei mais na tomada de decisões e pra ler as documentações das tecnologias que eu ia utilizar, do que pra desenvolver o app em si.
Alguns passos e decisões
Como eu disse, o app ainda está incompleto. No momento as buscas retornam dados falsos, mas são dados no formato que a api retorna e já estão filtrados.
Vou tentar resumir aqui as decisões mais importantes que tomei para este projeto.
Não utilizei nenhuma ferramenta especial para o design (nada de Figma ou seus similares). O processo de criação foi: rascunhos num caderno e sair criando html/css. Eu já tinha a idéia na cabeça, então queria ver logo como ficaria.
Levando isso em conta, ainda tem muita coisa que pode mudar no visual e eu pretendo colocar algumas animações mais maneiras quando o projeto estiver mais maduro.
Criei o projeto com Vue Create mesmo.
Como suíte de testes, a ferramenta disponibiliza o Jest por padrão. Não tenho experiência nenhuma com Jest… Até tentei escrever alguns testes no início mas os componentes tem um “jeitinho especial” de serem testados e eu ainda teria de aprender todo o fluxo de como testar dados reativos, funções assíncronas e outras coisas mais com a suíte. Então estava mais atrapalhando do que ajudando. Deixei instalado mas não escrevi testes. Juro que vou escrever no futuro. Não briga comigo. xD
Agora, com mais calma, vou até tirar um tempo pra estudar sobre isso. Acredito que vai ser bom estudar Jest, já que projetos em React e Angular também costumam usar essa suíte.
Decidi fazer a filtragem por rotas/páginas porquê a própria api precisa de uma rota de autenticação de usuário, então decidi aproveitar esse recurso, já que ia ter de implementar rotas do mesmo jeito.
Então, para gerenciar as rotas, está lá o bom e velho Vue Router.
E para gerenciar o estado da aplicação, o bom e velho Vuex.
Tomei o cuidado de deixar as camadas bem separadas e definidas. A idéia é ter uma “api” no front pra buscar os dados e fazer a filtragem pra entregar os dados como os componentes precisam consumir. Isso já acontece com os dados falsos, então, na prática, o app poderia consumir dados de qualquer api, não só do Spotify.
De qualquer maneira, já tem lá um Axios instaladinho esperando por isso. Só implementar as chamadas.
– Mas Killdragon, você pode fazer direto com fecth…
Eu gosto do Axios. Me deixe! U.U
E agora?
Bem, o projeto ainda não conecta com uma api de verdade.
Uma coisa meio chata é que a aplicação precisa de uma chave específica e um token para conectar na api. Eu li em vários lugares (inclusive na documentação), que não é bom deixar isso no frontend, já que vai ficar exposto.
Então eu até fiz testes pra ver se as coisas funcionavam com a api de verdade e até que funcionou legal. Mas ficou ruim pra desenvolver em cima disso, por isso fiz tudo na base dos “dados fake”. Na real, é melhor usar dados falsos de qualquer jeito porque isso agiliza a produção mas, enfim…
E eu já tinha intenção de subir o front no Github Pages desde o início.
Optei por não subir o projeto com essas implementações, porque eu ainda não decidi se vou criar um serverzinho pra fazer a conexão com a api e entregar os dados pro front (inclusive com o token que o usuário precisa pra logar), ou se vou tentar fazer isso na base do serverless com algum serviço tipo Amazon, Google ou Heroku ou algo assim.
Em algum momento, num futuro próximo, acho que este projeto vai ficar dividido em duas pastinhas, frontend e backend. Mesmo que eu faça serverless, vou acabar colocando os códigos dos hooks na pasta de backend, e talvez explique o fluxo num doc.
Primeiramente quero focar no frontend e aproveitar o projeto pra estudar algumas coisas que fizeram o projeto ficar “empacado” (como Jest, por exemplo).
Confesso que o design também não tá lá essas coisas e tem algumas coisinhas de UX que podem melhorar bastante. E o nome “Searchify Music” nem é bom, nem muito original kkk.
Mas pelo menos tá no ar a nossa “prova de conceito”.
Espero que possa ajudar alguém a estudar o assunto também e sair desenvolvendo apps legais por aí.
Link do projeto: https://github.com/arturguitelar/vue-spotify-example
Página online: https://arturguitelar.github.io/vue-spotify-example/
É isso.
Fiquem bem. 🙂

















