A API envia diariamente um e-mail com as 10 notícias mais importantes do momento para cada assinante, sem se limitar a uma única categoria. A aplicação consome a API da GNews.
O usuário se cadastra informando nome e e-mail e, em seguida, recebe um e-mail de verificação contendo um token. Ao confirmar o cadastro, seu status passa a ser ACTIVE (ativo). A API de notícias então consome as notícias mais recentes e envia-as automaticamente para os assinantes ativos no horário programado.
A aplicação é composta por dois microsserviços: newsletter-api, responsável pelo gerenciamento de usuários e notícias, e notification-api, responsável pelo envio de notificações por e-mail.
- Java
- Spring Boot
- Maven
- PostgreSQL
- RabbitMQ
- Spring Cache
- Mapstruct
- Lombok
- Thymeleaf
- RestTemplate
POST /api/subscribers
Cria um novo assinante no sistema.
{
"name": "exemplo",
"email": "seuemail@exemplo.com"
}GET /api/subscribers/verify?token={verificationToken}
Verifica o token recebido por e-mail e ativa o assinante correspondente.
{
"message": "Subscriber verified successfully"
}POST /api/news/fetch-and-send
Endpoint para testes manuais: Busca as 10 últimas notícias da API do Gnews, salva no banco de dados e envia para os assinantes ativos.
{
"message": "News fetched and sent successfully"
}GET /api/subscribers?status={status}
Lista assinantes filtrando pelo status (pending, active, unsubscribed).
[
{
"name": "exemplo",
"email": "seuemail@exemplo.com",
"status": "PENDING"
},
{
"name": "exemplo 2",
"email": "email2@exemplo.com",
"status": "PENDING"
}
]GET /api/subscribers/unsubscribe?token={unsubscribeToken}
Desinscreve o assinante correspondente ao token, alterando seu status para unsubscribed.
{
"message": "Subscriber unsubscribed successfully"
}Pré-requisitos:
- Java 17
- Maven
- PostgreSQL
- RabbitMQ (CloudAMQP)
- GNews (API Key)
- SMTP Gmail
Passos para Configuração:
- Clone o repositório
- Acesse o diretório do projeto
- Configure o banco de dados no arquivo
application.yml(URL, usuário, senha) em newsletter-api - Adicione a API Key da sua conta do GNews no
application.ymlem newsletter-api - Configure o RabbitMQ (CloudAMQP) no arquivo
application.ymlnas duas APIs - Configure o SMTP Gmail no arquivo
application.ymlem notification-service
# Execute a aplicação
mvn spring-boot:run
# Pressione (CTRL + C) para encerrar a aplicação👩💻 Projeto desenvolvido por Isabel Henrique
🤝 Fique à vontade para contribuir!