Skip to content

RIDECI/ATENEA_NOTIFICATIONS_BACKEND

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

82 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘¨β€πŸ’Ό ATENEA_NOTIFICATIONS_BACKEND

It centralizes the sending and management of notifications from the RIDECI ecosystem, allowing the mobility, institutional security, and administration modules to send in-app messages and emails in a unified, reliable, and traceable manner to users.

πŸ‘₯ Developers

  • Raquel Iveth Selma Alaya\
  • Nestor David Lopez CastaΓ±eda\
  • Juan Pablo Nieto Cortes\
  • Carlos David Astudillo Castiblanco\
  • Robinson Steven NuΓ±ez Portela

πŸ›οΈ Project Architecture

The ATENEA Notifications Backend has a decoupled hexagonal / clean architecture that isolates the core notification logic from infrastructure and external providers:

🧠 Domain (Core)

Business rules: creation, states, templates, channels, idempotency.

🎯 Ports (Interfaces)

Defines what the domain can do: send notifications, persist them, publish events, consume messages.

πŸ”Œ Adapters (Infrastructure)

Implementation of ports: databases, RabbitMQ, SMTP, integrations.

βœ… Benefits

  • Clear separation of concerns
  • Maintainable and replaceable components
  • Scalable (expand to SMS, push, WhatsApp, etc.)
  • Testable without infrastructure

πŸ“‚ Clean - Hexagonal Structure

πŸ“‚ ATENEA_NOTIFICATIONS_BACKEND
┣ πŸ“‚ src/
┃ ┣ πŸ“‚ main/
┃ ┃ ┣ πŸ“‚ java/
┃ ┃ ┃ β”— πŸ“‚ edu/dosw/rideci/
┃ ┃ ┃   ┣ AteneaNotificationsBackEndApplication.java
┃ ┃ ┃   ┣ πŸ“‚ domain/
┃ ┃ ┃   ┃ ┣ πŸ“‚ model/
┃ ┃ ┃   ┃ ┣ πŸ“‚ service/
┃ ┃ ┃   ┃ β”— πŸ“‚ event/
┃ ┃ ┃   ┣ πŸ“‚ application/
┃ ┃ ┃   ┃ ┣ πŸ“‚ ports/
┃ ┃ ┃   ┃ ┃ ┣ πŸ“‚ input/
┃ ┃ ┃   ┃ ┃ β”— πŸ“‚ output/
┃ ┃ ┃   ┃ β”— πŸ“‚ usecases/
┃ ┃ ┃   ┣ πŸ“‚ infrastructure/
┃ ┃ ┃   ┃ β”— πŸ“‚ adapters/
┃ ┃ ┃   ┃   ┣ πŸ“‚ input/
┃ ┃ ┃   ┃   ┃ ┣ πŸ“‚ controller/
┃ ┃ ┃   ┃   ┃ β”— πŸ“‚ listener/
┃ ┃ ┃   ┃   β”— πŸ“‚ output/
┃ ┃ ┃   ┃     ┣ πŸ“‚ persistence/
┃ ┃ ┃   ┃     β”— πŸ“‚ email/
┃ ┃ β”— πŸ“‚ resources/
┃ ┃   ┣ application.properties
┃ ┃   β”— application-*.yml
┣ πŸ“‚ test/
┣ πŸ“‚ docs/
┃ ┣ uml/
┃ β”— pdf/
┣ docker-compose.yml
┣ Dockerfile
┣ pom.xml
β”— README.md

πŸ“‘ API Endpoints

Swagger UI: http://localhost:8080/swagger-ui.html

Method URI Description


POST /notifications/email Send email notification POST /notifications/in-app Create in-app notification GET /notifications/users/{userId} List user notifications PATCH /notifications/{id}/read Mark as read PATCH /notifications/{id}/archive Archive notification GET /notifications/{id} Notification detail GET /notifications Filter notifications POST /notifications/templates Create template PUT /notifications/templates/{id} Update template GET /notifications/templates List templates POST /notifications/test/email Test SMTP POST /notifications/test/event Test RabbitMQ GET /actuator/health Health check


πŸ“Ÿ HTTP Status Codes

Code Status


200 OK 201 Created 202 Accepted 400 Bad Request 401 Unauthorized 404 Not Found 409 Conflict 500 Internal Server Error


πŸ“‘ Input & Output Data

EmailNotificationRequest

  • to
  • subject
  • body
  • templateId?
  • params?
  • metadata?

InAppNotificationRequest

  • userId
  • title
  • message
  • priority?
  • type?
  • expiresAt?
  • metadata?

NotificationTemplateDto

  • id?
  • name
  • channel
  • language
  • subject
  • body
  • enabled

NotificationResponse

  • id, userId?, channel, status, timestamps...

PageResponse

  • content, page, size, totalElements, totalPages

πŸ”— Connections with other Microservices

Travel Management / Nemesis Module

Trip events β†’ emails & in-app messages.

Administration Module

Driver approvals, blocks, reports β†’ notifications.

Auth / Users Module

Password recovery, email verification.

Email Provider / SMTP

Office 365 or similar.

API Gateway

Authentication and routing.

Monitoring / Logging Stack

Metrics, dashboards, logs.


πŸ› οΈ Technologies

Backend

  • Java\
  • Spring Boot\
  • Maven

Messaging & Email

  • RabbitMQ\
  • Microsoft 365 SMTP

DevOps

  • Docker\
  • Kubernetes\
  • Railway\
  • Vercel

CI/CD

  • GitHub Actions\
  • SonarQube\
  • JaCoCo

Documentation

  • Swagger\
  • Postman

Design & Management

  • Figma\
  • Jira\
  • Slack

🌿 Branches Strategy (Gitflow)

Branch Purpose


main Stable production develop Main development feature/* New features release/* Pre-production hotfix/* Urgent fixes

Naming

  • feature/email-notifications\
  • feature/rabbitmq-integration\
  • release/v1.0.0\
  • hotfix/securityPatch

Commit Format

type(scope): short description

πŸš€ Getting Started

Requirements

  • Java 17\
  • Maven 3.x\
  • Docker\
  • Port 8080

Clone Repository

git clone https://github.com/RIDECI/ATENEA_NOTIFICATIONS_BACKEND.git
cd ATENEA_NOTIFICATIONS_BACKEND

Dockerize

docker compose up -d

Install Dependencies

mvn clean install
mvn clean compile

Run

mvn spring-boot:run

🌎 RIDECI --- Connecting the community safely and sustainably.

About

Modulo de notificaciones

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •