Skip to content

DaniloVolles/notification-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Banner

Notification Service

Sobre essa API

O objetivo dessa aplicação foi implementar um sistema de criação de usuários com um módulo de notificações em tempo real para esses usuários.
Os usuários são criados em uma base Mongo, autenticados via Spring Security, e recebem notificações via WebSocket.
As notificações são recebidas via Kafka por meio da aplicação notification-api deste portifólio.

A rigor, é uma aplicação com arquitetura orientada a eventos, possui comunicação assíncrona real, um WebSocket stateless, e um Kafka desacoplado para transporte de mensagens. Além disso, possui um módulo interno de autenticação via JWT com Spring Security.

Pontos de melhoria

Como uma aplicação de portifólio, eu ressalto que algumas funcionalidades relativamente básicas não foram implementadas para concisão do processo de desenvolvimento. Dentre elas uma estrutura de Exceptions personalizada com um exception handler (exemplo) e uma estrutura de Roles específicas para diferentes usuários (eu pretendo desenvolver isso em estudos posteriores).

Outro ponto importante é o desenvolvimento de testes automatizados para o projeto, que ainda não foram implementados.

Além disso, acredito que algumas melhorias também seriam iminentes na evolução do projeto, como a separação do pacote de autenticação em um Microsserviço distinto, adicionar o ACK do cliente (confirmação de recebimento da mensagem) e o STOMP para o módulo de notificações.

Como executar o projeto

  1. Certifique-se de ter as seguintes instalações efetuadas no seu sistema operacional:
  • Docker
  • Java 21
  • Maven
  • Kafka (preferencialmente via container)
  • MongoDB (preferencialmente via container)
  1. Rodar o projeto via container:
  • Crie o JAR da aplicação | Build the application JAR:
mvn clean package
  • Construa a imagem Docker | Build the Docker image (make sure to include the dot at the end):
docker build -t notification-api:latest .
  • Rode o container Docker | Run the Docker container:
docker run -p 8080:8080 notification-api:latest
  • Verifique a atividade da aplicação | Verify the application health:
curl --location 'localhost:8080/health/is-app-running'

Importante | Important:

The application is compiled on the host machine using Maven.
The Docker image only packages the generated JAR and runs it using a Java 17 runtime.
This application was developed and tested on Linux, but it should also work fine on Windows and macOS.

Testando a aplicação

  1. Para verificação dos endpoints REST, importe a collection do postman que está na raíz do projeto
  2. Para conexão com o websocket, utilize a seguinte URL String no postman.
    Certifique-se de logar na aplicação pela rota /auth/login com um usuário previamente cadastrado
ws://localhost:8080/ws/notifications

Para abrir uma conexão websocket no postman, selecione
New (Canto superior esquerdo) -> WebSocket

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published