Esse projeto consiste num desafio técnico para a vaga de assistente de Engenharia de Software na FURIA. A ideia do desafio era testar a habilidade dos participantes na resolução de problemas, como aprendem e aplicam seus conhecimentos.
-
Objetivo: Desenvolver um caso de uso conversacional relacionado à FURIA (Telegram, web chat ou mobile chat);
-
Proposta: Crie um chat para os fãs do time de CS da FURIA. O Chat deve conter tudo que você, como fã, gostaria de ver para acompanhar e interagir com o time.
-
Entrega:
- Landing page funcional ou aplicação integrada com o chat;
- Apresente em um vídeo de +- 3 minutos como o fã pode interagir e acompanhar o time;
- Documentação completa e clara no GitHub.
Decidi escolher o desafio da experiência conversacional por achar a ideia interessante. E eu sabia que conseguiria aplicar meus conhecimentos, e inovar na hora de criar o projeto. No caso, decidi criar uma aplicação web integrada com o chat; utilizando MVC e criando uma API RESTful.
- Registro e Login de usuários no sistema;
- Criação/edição/visualização de chats e mensagens;
- Interação com a IA provida pelo Ollama;
- Informações diretas e precisas obtidas por APIs externas;
- Endpoints que só podem ser acessados após o usuário fazer login, tornando a API mais segura.
- Java;
- Spring Web;
- Spring Security;
- Json Web Token;
- Spring AI;
- Spring Cloud;
- Docker;
- Postman;
- Ollama;
- PostgreSQL.
Para rodar o projeto na sua máquina, você vai precisar seguir algumas etapas. Algumas delas mais tediosas, outras menos. Mas vou deixar o passo a passo explicando, para não ter nenhum erro na hora.
Primeiramente, você deve instalar o Java na sua máquina. No caso, utilizei a seguinte versão:
"java version "21.0.5" 2024-10-15 LTS".
Recomendo instalar essa versão para não dar nenhum problema de compatibilidade com o sistema!
Depois disso, teremos que fazer a instalação do Docker para rodar os containers. E essa parte é muito importante, pois é lá que está o banco de dados!
A versão que recomendo é a: Docker version 28.0.4, build b8034c0
Ufa! Estamos quase lá. Mas ainda é preciso que você faça mais uma instalação. Dessa vez, do Ollama. O Ollama é o que utilizei para ter acesso a algum modelo de IA,
e criar um ambiente de conversa com o usuário. A versão do Ollama que foi utilizada nesse projeto foi a: ollama version is 0.6.6
Faça a clonagem do projeto através do seguinte comando:
git clone https://github.com/Invokedzz/Technical_Challenge_FuriaPara instalar as dependências do projeto é fácil. Se você já tiver o Maven (gerenciador de dependências) instalado, pode executar o seguinte comando no seu terminal:
PS: você precisa estar na mesma pasta que o projeto para conseguir executar esse comando pelo terminal!
mvn clean installSe por algum acaso, você não tiver o Maven instalado, pode executar esse comando em seu terminal:
./mvnw installDepois da instalação das dependências, pronto! Você já tem o projeto quase pronto.
Com as dependências do projeto devidamente prontas, precisamos do Docker para termos acesso ao nosso banco de dados. E o processo é bem simples. Na pasta do projeto, execute o seguinte comando para criar os containers em sua máquina:
docker compose up --buildApós executar esse comando, perfeito! Você já tem as dependências do projeto e agora o banco de dados operando! Agora é necessário fazer a instalação do modelo de IA. Para fazer a instalação do modelo de IA, execute o seguinte comando em seu terminal:
ollama run gemma2:2bO tempo de instalação de um modelo de IA pode variar, mas costuma demorar.
Essa parte não é necessária, mas se você quiser que a IA performe um pouco melhor e tente trazer informações mais precisas, é importante que tenha a chave de APIs externas. Para esse projeto, utilizei a API da PandaScore, que deixarei disponível aqui neste link: https://developers.pandascore.co/docs/introduction
Crie uma conta na plataforma deles, e obtenha a sua chave da API, e depois disso, insira ela dentro do application-dev.properties da seguinte forma:
pandascore.apikey=${PANDASCORE_KEY:VALOR_DA_CHAVE}Depois disso, você conseguirá acesso a alguns endpoints que inseri na aplicação e também terá acesso a uma IA muito mais inteligente. Agora, vamos rodar o projeto!
A melhor hora chegou. Depois de muitos downloads, e tempo de espera, podemos finalmente executar o projeto em nossa máquina. Vou deixar aqui duas formas para você estar executando o projeto
Se você tiver o Maven instalado em sua máquina:
mvn spring-boot:runSe você não tiver o Maven instalado, execute este comando aqui:
./mvnw spring-boot:runAgora o projeto estará rodando em sua máquina! Você pode acessar os endpoints dele via Postman, Insomnia ou através do Swagger. Lembrando que nesse projeto, estou utilizando o portão 9090 para o acesso via localhost.
Se por algum acaso, você não tiver o Postman ou Insomnia, te encorajo a acessar a documentação do projeto no Swagger. Nela coloquei os principais endpoints e alguns DTOS. Para acessar a documentação do Swagger, primeiramente inicie o projeto, e depois acesse a seguinte URL:
http://localhost:9090/swagger-ui/index.html#/Depois disso, na própria aba de pesquisa do Swagger, escreva: /openapi.yaml dessa forma você acessa o arquivo com a documentação.
Esse projeto foi algo super interessante de fazer. Nele pude fortalecer ainda mais as minhas habilidades, e treinar os meus prazos de entrega. Agradeço à toda equipe da FURIA por ter trazido uma ideia tão interessante em forma de desafio técnico. Vocês são demais!
Também agradeço a minha família e a Deus, por me fortalecerem todos os dias e por confiarem no meu trabalho e dedicação.