digitalinnovationone /
santander-dev-week-2023-api
RESTful API da Santander Dev Week 2023 construída em Java 17 com Spring Boot 3.
Loading repository data…
digitalinnovationone / repository
RESTful API da Santander Dev Week 2024 construída em Java 21 com Spring Boot 3.
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.
[!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.
Nossa querida a Aline Antunes (@alinealien), gravou dois tutoriais rápidos para quem está com dificuldades na instalação da JDK 21 e IntelliJ. Muito obrigado Aline!
Perdeu alguma das lives que rolaram na Dev Week? Não tem problema! Acesse os links abaixo e garanta seus CERTIFICADOS!
Passo a passo para gerar seus CERTIFICADOS na plataforma da DIO:
[!IMPORTANT] Ainda não garantiu a sua vaga? Inscreva-se até 08/04/2024 nos Bootcamps Santander 2024 para uma experiência educacional completa, explorando em detalhes os temas praticados durante a imersão da Santander Dev Week 2024. Nesse sentido, as opções de Bootcamps Santander disponíveis para matrícula na plataforma da DIO são:
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).
graph RL;
subgraph layer-infra[Infraestrutura];
UI("Frontend (UI)") ---> Controller
subgraph layer-adpaters[Adaptadores];
Controller("Controllers") <--> UC
subgraph layer-app[Aplicação];
UC(Casos de Uso) <--> layer-entities
subgraph layer-entities["Entidades (Domínio)"];
Model("Modelos")
IPort("Interfaces das Portas (Gateways)")
end
end
Repo("Repositórios") -..-> |implementam| IPort
HTTP("Clientes HTTP") -..-> |implementam| IPort
end
BD("Bancos de Dados SQL") --- Repo
EXT("APIs REST de IA") --- HTTP
end
classDef infra fill:#a3c9ff,stroke:#00315c,color:#00315c;
classDef adapters fill:#67dbb1,stroke:#003828,color:#003828;
classDef ucs fill:#ffb1c1,stroke:#5f112b,color:#5f112b;
classDef entities fill:#e2c54b,stroke:#3a3000,color:#3a3000;
class BD,EXT,UI infra;
class Controller,Repo,HTTP adapters;
class UC ucs;
class Model,IPort entities;
Refletindo a organização apresentada no diagrama arquitetural, a estrutura de diretórios do projeto sugere uma Clean Architecture simplificada, visando a uma clara separação das responsabilidades e promovendo a autonomia das camadas em um projeto Spring Boot. Esta abordagem estrutural não só facilita a manutenção e a evolução do código, mas também sustenta a integração e a colaboração eficaz entre as diferentes partes da aplicação. A seguir, detalhamos a disposição dos diretórios que compõem a aplicação, cada um desempenhando um papel específico dentro do ecossistema de software:
adapters/: Inclui os adaptadores que facilitam a comunicação entre a aplicação e o mundo externo (único diretório que "conhece" o Spring).
in/: Abriga os adaptadores de entrada, tais como controladores REST, que lidam com as requisições dos usuários.out/: Contém os adaptadores de saída, responsáveis da interação com bancos de dados e APIs externas, por exemplo.application/: Hospeda os casos de uso da aplicação, encapsulando a lógica de negócios essencial.domain/: Representa o coração da aplicação, englobando entidades, exceções e interfaces (portas) que articulam as regras de negócio fundamentais.
exception/: Define as exceções personalizadas pertinentes ao domínio.model/: Modela as entidades do domínio, refletindo os conceitos centrais da aplicação.ports/: Estabelece as interfaces que delineiam os contratos para os adaptadores e serviços externos.Application.java: A classe principal que orquestra a configuração e o execução da aplicação.A utilização do banco de dados H2 neste projeto serve como uma fundação ágil e flexível para modelar nosso domínio de conhecimento — os campeões do LOL. Essa escolha permite uma rápida prototipação e um ambiente de desenvolvimento eficiente, essencial para armazenar e recuperar informações detalhadas sobre cada campeão. Dessa forma, garantimos que as IAs Generativas que integramos possam acessar um repositório rico e detalhado, permitindo-lhes capturar com precisão a essência e a personalidade única de cada campeão, enriquecendo assim a interatividade e a profundidade das interações realizadas.
CREATE TABLE IF NOT EXISTS champions (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
role VARCHAR(255) NOT NULL,
lore TEXT,
image_url VARCHAR(255)
);
INSERT INTO champions (name, role, lore, image_url) VALUES
('Jinx', 'Atirador', 'Uma criminosa impulsiva e maníaca de Zaun, Jinx vive para disseminar o caos sem se preocupar com as consequências. Com um arsenal de armas mortais, ela detona as explosões mais altas e mais luminosas para deixar um rastro de destruição e pânico por onde passa. Jinx abomina o tédio e deixa alegremente sua marca caótica de pandemônio aonde quer que vá.', 'https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Jinx_0.jpg'),
('Vi', 'Lutador', 'Antiga criminosa das ruas violentas de Zaun, Vi é uma mulher temível, impulsiva e explosiva que tem muito pouco respeito por autoridades. Após ter crescido completamente só, Vi desenvolveu instintos de sobrevivência extremamente certeiros e um senso de humor extremamente ácido. Agora trabalhando com os Vigias de Piltover para manter a paz, ela porta poderosas manoplas hextec capazes de esmagar paredes e suspeitos com a mesma facilidade.', 'https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Vi_0.jpg'),
('Ekko', 'Assassino', 'Um prodígio das ruas violentas de Zaun, Ekko manipula o tempo para reverter qualquer situação a seu favor. Usando sua própria invenção, o Revo-Z, ele explora as possíveis bifurcações da realidade para criar o momento perfeito. Embora valorize muito sua liberdade, quando algo ameaça seus amigos, ele não mede esforços para defendê-los. Para meros observadores, Ekko parece conseguir o impossível sempre de primeira.', 'https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Ekko_0.jpg'),
('Caitlyn', 'Atirador', 'Conhecida como sua melhor pacificadora, Caitlyn também é a melhor escolha de Piltover para livrar a cidade de seus elementos criminosos elusivos. É comum que ela faça dupla com Vi, agindo como um contraponto de calmaria para a natureza impetuosa de sua parceira. Mesmo carregando um rifle hextec único, a arma mais poderosa de Caitlyn é seu intelecto superior, que permite que ela prepare elaboradas armadilhas para qualquer fora da lei tolo o suficiente para operar na Cidade do Progresso.', 'https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Caitlyn_0.jpg'),
('Jayce', 'Lutador', 'Jayce é um brilhante inventor que dedicou sua vida a defender Piltover e sua implacável busca pelo progresso. Com seu martelo hextech transformador em mãos, Jayce usa sua força, coragem e considerável inteligência para proteger sua cidade natal. Embora seja aclamado pela cidade como herói, ele não gosta muito da atenção que o heroísmo traz. Mesmo assim, o coração de Jayce está no lugar certo e até aqueles que invejam suas habilidades naturais são gratos à forma como ele protege a Cidade do Progresso.', 'https://ddragon.leagueoflegends.com/cdn/img/champion/splash/Jayce_0.jpg'),
('Viktor', 'Mago', 'Viktor, o arauto de uma nova era de tecnologia, devotou sua vida ao avanço da humanidade. Um idealista que busca elevar o povo de Zaun a um novo nível de compreensão, ele acredita que somente ao aceitar a
Selected from shared topics, language and repository description—not editorial ratings.
digitalinnovationone /
RESTful API da Santander Dev Week 2023 construída em Java 17 com Spring Boot 3.
K1ethoang /
Build Restful API service with Spring boot
adityasurya4103 /
This project is an API designed to seamlessly fetch data from an Excel sheet and store it in a MySQL database. It comprises a robust backend implemented in Java Spring Boot and a dynamic frontend built with Angular. the system incorporates JSON Web Tokens (JWT) for secure authentication, ensuring that only authorized administrator
mcadecio /
Transform any database you have into a RESTful API.
HydrologicEngineeringCenter /
A JavaScript wrapper for the CWMS Data API (CDA), a RESTful web service for managing water data. Package Repo: https://www.npmjs.com/package/cwmsjs
FelipeDeMoraes19 /
API RESTful para gerenciamento de produtos desenvolvida para o Bootcamp da DIO, implementando as práticas de desenvolvimento Java com Spring Boot.