Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📌 About project

Notification Platform — Platform for sending notifications via Telegram.

This application, consisting of two microservices communicating via RabbitMQ, allows a bot to send messages via Telegram.


✅ What's implemented

Feature Comment
🏛️ Clean Architecture & SOLID Project follows Domain-Driven Design and Clean Architecture principles with clear separation of concerns
🏗️ Microservices Architecture Two decoupled services: Producer and Consumer
🐇 RabbitMQ Broker Asynchronous communication using exchange/queue pattern for message delivery
🆔 Idempotency (UUID, Redis) Producer attaches unique IDs to events; Consumer ensures single-time processing
🛡️ Retry Loop Protection (Redis) In case of internal errors, the consumer will return the message to the queue and try again until the number of attempts is exhausted.
🔄 Reliable Messaging Producer implements Publisher Confirms and Retries for connection stability
📥 Manual Ack Strategy Consumer uses manual acknowledgments to prevent message loss on processing failure
🤖 Telegram Integration Dedicated module in Consumer for real-time notifications via Telegram Bot API
🛡️ DTO Validation Strict input validation in Producer using class-validator and class-transformer
📖 Swagger (OpenAPI) Producer API is fully documented with interactive UI for event triggering
🪵 Event Logging Detailed logs for every stage
🐳 Docker Compose Orchestration of Producer, Consumer, Redis and RabbitMQ in a single network

🚀 Quick start

🐳 Running with Docker

Requirements: Docker Compose, Telegram Bot Token

# Run from the project root
cp .env.docker.example .env.docker

You should set your env variables:

  • RABBITMQ_DEFAULT_USER
  • RABBITMQ_DEFAULT_PASS
  • RMQ_CONNECTION_STRING
  • TELEGRAM_BOT_TOKEN
# Run from the project root
docker-compose up -d

Once the container is running, you can open http://localhost:3000/api/v1/docs/ in your browser and test it directly from the Swagger documentation page


👨‍💻 Author

GitHub: @AlanKerry1

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages