Wishlister (vlab for http://jaya.tech/)
Um pequeno projeto para testar minhas habilidades.
...
Construir uma aplicação para ver os últimos locais visitados pelos amigos do usuário logado no Foursquare e permitir que o usuário adicione ou remova estes locais em sua lista de desejos.
- Efetuar o login na aplicação com a autenticação do Foursquare.
- Informar na página principal os dados do usuário logado.
- Informar na página principal a lista de desejos do usuário logado.
- Informar na página principal os últimos locais visitados pelos amigos do usuário logado.
- Permitir que o usuário logado adicione os locais visitados em sua lista de desejos.
- Permitir que o usuário logado remova os locais cadastrados na lista de desejos.
- Desenvolver a aplicação usando Kotlin, Java ou Grails.
...
Ter instalado localmente (apenas p/ Desenvolvimento e Teste):
$ git clone git@github.com:raulpe7eira/wishlister.git
$ cd wishlister
$ gradlew bootRun
Nenhum teste foi escrito para esta aplicação
😥
A aplicação não esta madura suficiente para estar em produção
😥
Kotlin: Das 3 opções essa era a que não tinha afinidade alguma, justamente por isso escolhi para fazer do desafio um momento de aprendizado, avaliação até o momento é super satisfatória, certamente passará a fazer parte dos meus planos futuros.
Spring Boot: Maneira mais prática e rápida para subir uma aplicação web em java atualmente, como teria apenas o final de semana para desenvolver a aplicação esta foi a escolha mais acertada, além de já possuir a integração necessária com Kotlin.
Thymeleaf: Para não ter um projeto backend e outro frontend com linguagens distintas, procurei uma engina de criação de templates e esbarrei nessa que oferecia o suficiente para o desafio em questão.
Retrofit: Foi o cliente HTTP escolhido para consumir os endpoints fornecidos pelo Foursquare.
Foursquare: Já era requisito da aplicação, foi necessário criar o ID de autorização de acesso da aplicação, notei que para usar a conta gratuita não seria possível cogitar um teste de carga no futuro devido ao númuero pequeno de requisições diárias.
Como informado anteriormente nenhum teste foi efetuado, o foco foi aprender a linguagem, sua sintaxe e funcionamento, sem deixar de apresentar o máximo de codificação possível para a equipe que irá analisar o código possa ter uma boa base de crítica
😥
Foi bem desafiador aprender uma nova linguagem e desenvolver um teste em apenas 3 dias (sábado, domingo e segunda). Inicialmente perdi bastante tempo tentando utilizar o Spring Social com um provider desenvolvido pela comunidade, apesar de tentar configurar o ambiente para utilizá-lo, acabei desistindo de utilizá-lo e efetuar todo processo de login manualmente.
Após toda essa demora para efetuar a autenticação, o restante até que fluiu bem, só não finalizei todos os itens almejados pelo desafio pela falta de tempo mesmo, fica como débito técnico, configurar a autenticação para usar o Spring Social, conforme foi inicialmente almejado, configurar a aplicação para usar Spring Security, efetuar a cobertura de todos os serviços com testes, retirar toda parte de frontend do backend e usar React ou Vue.js nessa camada.
Espero que tenham gostando... AVANTE! 💪