Skip to content

matheusfy/santander-dev-week-2024

 
 

Repository files navigation

Santander Dev Week 2024

📚 Sobre o Projeto

Neste repositório, você encontrará o código-fonte de uma REST API e seu respectivo Frontend (pasta /docs), desenvolvidos durante a Santander Dev Week 2024, fruto de uma colaboração entre a DIO e o Santander. Este projeto, construído com Java 21 e Spring Boot 3, é o resultado de quatro dias de lives, com um propósito incrível:

Note

Objetivo: "Permitir que os usuários conversem com os campeões do League of Legends (LOL)".

Para isso, utilizamos algumas das mais recentes Inteligências Artificiais (IAs) Generativas, possibilitando que nossa API "entenda" a personalidade única de cada campeão para criar interações que capturam sua essência, tornando cada conversa uma experiência única.

Neste projeto está algumas melhorias além das que foi realizada em 4 dias de aulas oferecidas na Santander Dev Week.

A API está hospedada em um ambiente da AWS utilizando o Elastic Beanstalk. Para acessar o swagger da aplicação utilize o link: Swagger_API caso queira realizar testes.

Pré-Requisitos

Tip

Caso queira reproduzir este projeto, você terá os seguintes pré-requisitos:

  • Vontade de Aprender 😉
  • Instalação da JDK 21 (versão LTS do Java na data das lives);
  • Instalação do IntelliJ IDEA Community Edition ou a IDE de sua preferência (Eclipse, VSCode etc);
  • [Opcional] Conta na AWS (caso queira publicar a sua API REST na Nuvem usando o AWS Elastic Beanstalk);
  • [Opcional] Conta na OpenAI e/ou Google para integração com os modelos GPT e/ou Gemini respectivamente.
  • [Opcional Extra] Realizar subida de recursos da aws utilizando o Terraform. Você pode encontrar o passo a passo aqui TFReadme

🏛️ Arquitetura do Projeto

Diagrama Arquitetural

A seguir, apresentamos o diagrama arquitetural do projeto (escrito com Mermaid), destacando a separação das responsabilidades entre as camadas. Desde a interface de usuário até os mecanismos de interação com sistemas externos, passando por adaptadores, casos de uso e as entidades centrais do domínio, cada elemento é estrategicamente posicionado para reforçar a modularidade, a escalabilidade e a manutenibilidade do sistema. Esta estrutura facilita a compreensão de como os componentes colaboram para a realização dos objetivos do software, alinhando-se aos princípios da Clean Architecture (inclusive nas cores dos elementos).