
MerryGit Messaging
A full-stack real-time messaging platform designed around a microservices architecture, with a focus on privacy, scalability, real-time communication, and cloud-native deployment.
Core Features
- Real-Time Messaging: Socket.IO-based one-to-one and group messaging
- Authentication: JWT-based authentication with dedicated user management
- Privacy Controls: Message expiration with automated cleanup
- Media Sharing: Cloudinary-powered media uploads within conversations
- Group Messaging: Multi-user conversations with real-time message delivery
- Email Processing: Asynchronous email operations through RabbitMQ
Microservices Architecture
User Service:
- Node.js + Express.js microservice responsible for authentication and user management
- JWT-based authentication and protected user operations
- MongoDB persistence for user data
Chat Service:
- Node.js + Express.js microservice handling messaging and conversations
- Socket.IO for real-time WebSocket communication
- MongoDB for message and conversation persistence
- Redis for caching and performance optimization
- RabbitMQ for asynchronous event communication
Mail Service:
- FastAPI + Python microservice dedicated to email processing
- RabbitMQ consumer for asynchronous email events
aio-pikafor RabbitMQ integration- Decouples email processing from the main application services
System Design
Event-Driven Architecture:
- RabbitMQ enables asynchronous communication between services
- Services remain loosely coupled instead of relying on direct synchronous dependencies
- Background operations can be processed independently from user requests
Real-Time Architecture:
- Persistent Socket.IO connections between clients and the Chat Service
- Server-side event handling and real-time message broadcasting
- Redis used to support high-frequency application operations
Service Isolation:
- Independent User, Chat, and Mail services
- Each service has a clearly defined responsibility
- Services can be developed, deployed, and scaled independently
DevOps & Infrastructure
Containerization:
- Dockerized application services for consistent deployments
- Independent containers for microservices and supporting components
Kubernetes:
- Deployed microservices on DigitalOcean Kubernetes
- Kubernetes used for service orchestration, networking, and deployment management
- Separate services allow independent scaling and deployment
Infrastructure as Code:
- Terraform used to provision and manage the cloud infrastructure
- Infrastructure configuration maintained as version-controlled code
Tech Stack
- Frontend: Next.js, React, TypeScript, Redux Toolkit, Tailwind CSS, Socket.IO Client
- Backend: Node.js, Express.js, FastAPI, Python
- Real-Time: Socket.IO, WebSockets
- Databases: MongoDB, Redis
- Messaging: RabbitMQ,
amqplib,aio-pika - Infrastructure: Docker, Kubernetes, DigitalOcean, Terraform
- Media: Cloudinary
Engineering Focus
Microservices architecture
Event-driven communication
Real-time distributed systems
Cloud-native deployment
Infrastructure as Code
Caching and asynchronous processing
Scalable backend architecture
Live Demo | GitHub Repository | API Documentation | Project Video