Delibird, o Pokémon Entrega, é um Pokémon dos tipos Ice/Flying.
API para agendamento de mensagens com serviços como email, sms, whatsapp;
Stack utilizada:
- Linguagem:
Java
- Compilação:
Maven
- Framework:
Spring Boot
- Banco de dados:
H2
/Flyway
- AMQP:
RabbitMQ
- Documentação:
Swagger
- Tests:
- Teste de unidade
jUnit5
- Teste de integração
RestAssured
/TestContainers
- Ferramenta para cobertura de tests
Jacoco
- Ferramenta para cobertura de tests com mutação
Pitest
- Teste de unidade
A estrutura do projeto foi desenvolvido pensando no conceito do
Hexagonal Architecture
:
-
Configuration - Configurações de plugins e framework.
-
Core - Regras de negócios
- command - São objetos com intuito de executar um comando no core do projeto, isolado dos dados de entrada e saída
- entity - Entidades, objetos que representam o negócio
- use case - Implementam regras de negócio de um caso de uso
- port - Comunicação entre o centro do hexágono e os lados externos
-
Adapter - Para cada porta existe um adapter que implementa a porta
- Data Provider - Camada responsável em fornecer os dados para o
core
. - Entry Points - Responsável em fornecer os end-points, essa camada trata os dados que o usuário envia
e converte para os objetos que são utilizados no
core
tratando depois seu retorno.
- Data Provider - Camada responsável em fornecer os dados para o
Registrar agendamento de mensagem
POST http://localhost:8080/schedule
Body
{
"message": "mensagem de envio",
"messageService": "EMAIL",
"recipient": "abcd@gmail.com",
"sendTime": "2021-06-21T10:19"
}
Retorno:
{
"id": 1,
"sendTime": "2021-06-21T10:19:00",
"recipient": "abcd@gmail.com",
"messageService": "EMAIL",
"message": "mensagem de envio",
"scheduleStatus": "SCHEDULED"
}
Consulta de agendamento de mensagem
GET http://localhost:8080/schedule/{id}
Retorno
{
"id": 1,
"sendTime": "2021-06-21T10:19:00",
"recipient": "abcd@gmail.com",
"messageService": "EMAIL",
"message": "mensagem de envio",
"scheduleStatus": "SCHEDULED"
}
Cancelamento de agendamento de mensagem
DELETE http://localhost:8080/schedule/{id}
Retorno 204
O Swagger
nos proporciona uma documentação dinâmica para os end-points do projeto, também nos dando liberdade para
efetuar execuções.
Link: [http://localhost:8080/swagger-ui.html]
http://localhost:8080/actuator/prometheus
Os seguintes passos foram documentados para serem executados em uma plataforma
Linux
, porém os comandos com o sistema Windows
podem ser semelhantes, mas, o funcionamento não é totalmente
garantido.
-
Certifique-se que você tenha as seguintes ferramentas instaladas:
-
Efetue o clone do projeto pelo
Git
:
$git clone https://github.com/renanfch/delibird.git
- Acesse a pasta do projeto para iniciarmos a compilação:
$cd ./delibird
- As instruções a seguir executará atravéz do
Maven
oclean
do projeto, logo oinstall
executará os testes unitários para garantir a integridade do projeto e gerar o executável (.jar
)
$./mvn clean install
- Agora será realizado o
build
doDockerfile
gerando uma imagem no repositório local denominada derenanfch/delibird
.
$docker build -t renanfch/delibird .
- Após ter gerado a imagem da API iremos executar o projeto utilizando o
docker-compose
.
$docker-compose up