Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quentin-piot/messaging-microservices-grpc-ddd
Whatsapp clone using microservices, DDD, CQRS, GRPC, etc.
https://github.com/quentin-piot/messaging-microservices-grpc-ddd
cqrs ddd grpc nestjs
Last synced: 8 days ago
JSON representation
Whatsapp clone using microservices, DDD, CQRS, GRPC, etc.
- Host: GitHub
- URL: https://github.com/quentin-piot/messaging-microservices-grpc-ddd
- Owner: Quentin-Piot
- License: mit
- Created: 2024-10-31T06:45:39.000Z (2 months ago)
- Default Branch: master
- Last Pushed: 2024-11-28T15:07:23.000Z (about 2 months ago)
- Last Synced: 2025-01-05T22:09:39.126Z (8 days ago)
- Topics: cqrs, ddd, grpc, nestjs
- Language: TypeScript
- Homepage: https://messaging.quentinpiot.com
- Size: 1.79 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Messaging App - Architecture and Microservices Training
### Project Overview
The goal is to develop a messaging application to explore and deepen knowledge in service-oriented architecture,
asynchronous communication, and modern backend and DevOps practices. This project uses microservices to create a modular
and scalable application where each service operates independently and communicates via gRPC and RabbitMQ.
Infrastructure management is handled with Kubernetes for container orchestration and Terraform for cloud infrastructure
provisioning and management.### Main Features
* User Authentication: Basic login and authentication service for users.
* Messaging Service: A microservice dedicated to sending, receiving, and storing messages.
* Chat Service: A microservice to handle group and chat between users.
* Notification Service: Manages notifications for received messages and user activity.
* API Gateway: A single entry point for all client requests, redirecting them to the correct microservice.
* gRPC Communication: Inter-service communication for faster and more efficient interactions.
* RabbitMQ for Messaging: Event-driven architecture using RabbitMQ as a message broker to handle asynchronous tasks.
* Infrastructure Management: Use of Kubernetes for container orchestration and Terraform for infrastructure
provisioning.### Technical Stack
| Tool | Usage |
|----------------|-------------------------------------------------------|
| **Node.js** | Backend server for each microservice |
| **Express** | Framework to build REST APIs |
| **gRPC** | Communication between services |
| **RabbitMQ** | Message broker for asynchronous tasks |
| **Docker** | Containerization of services |
| **Kubernetes** | Container orchestration for deployment and management |
| **Terraform** | Cloud infrastructure provisioning |
| **PostgreSQL** | Database for user data |### Simplified Diagram
![Simplified architecture](diagrams/diagram.png)