renanfch / delibird

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Delibird, o Pokémon Entrega, é um Pokémon dos tipos Ice/Flying.

Delibird CircleCI

API para agendamento de mensagens com serviços como email, sms, whatsapp;

Stack utilizada:

Arquitetura

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.

Documentaçã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

Documentação dinâmica

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]

Observabilidade

http://localhost:8080/actuator/prometheus

Executando com Docker

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 o clean do projeto, logo o install 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 do Dockerfile gerando uma imagem no repositório local denominada de renanfch/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

About

License:MIT License


Languages

Language:Java 99.7%Language:Dockerfile 0.3%