https://github.com/sidd-77/microservices-chat
Microservices based application designed which uses TypeScript and technologies such as Docker, Kubernetes, Redis Pub/Sub, RabbitMQ, and MinIO for building scalable and maintainable solutions.
https://github.com/sidd-77/microservices-chat
chat docker-compose github-actions kubernetes mern microservices-architecture pubsub rabbitmq redis turborepo
Last synced: 22 days ago
JSON representation
Microservices based application designed which uses TypeScript and technologies such as Docker, Kubernetes, Redis Pub/Sub, RabbitMQ, and MinIO for building scalable and maintainable solutions.
- Host: GitHub
- URL: https://github.com/sidd-77/microservices-chat
- Owner: Sidd-77
- Created: 2024-12-17T08:04:40.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-01-15T06:10:46.000Z (4 months ago)
- Last Synced: 2025-04-12T00:53:00.878Z (22 days ago)
- Topics: chat, docker-compose, github-actions, kubernetes, mern, microservices-architecture, pubsub, rabbitmq, redis, turborepo
- Language: TypeScript
- Homepage: https://microservices-chat-docs.vercel.app/
- Size: 1.37 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Project Introduction
This project is a modern microservices-based application designed to showcase proficiency in advanced software architecture and DevOps practices. It leverages **TypeScript** and cutting-edge technologies such as **Docker**, **Kubernetes**, **Redis Pub/Sub**, **RabbitMQ**, and **MinIO** for building scalable and maintainable solutions.
## Key Features
- **Microservices Architecture:** The application consists of modular services that are independently deployable and scalable.
- **Message Queues:** Asynchronous communication is enabled through RabbitMQ.
- **Redis Pub/Sub:** Facilitates real-time updates and inter-service communication.
- **Kubernetes:** Ensures orchestration of microservices for scalable deployment.
- **MinIO:** Provides S3-compatible file storage.
- **Turborepo:** Manages the monorepo, allowing shared configurations and code reuse.## Architecture
## Directory Structure
```
├── apps
│ ├── auth-service # Handles authentication and authorization
│ ├── db-service # Database-related tasks and abstraction
│ ├── docs # Documentation for the project
│ ├── file-service # File upload and management
│ ├── notification-service # Notifications using custom WAPT-based system
│ ├── socket-service # Real-time communication using Socket.IO
│ └── web # Frontend application using RailJS
├── docker-compose-dependencies.yml # Docker dependencies for local setup
├── docs # Service-specific documentation
├── k8s # Kubernetes manifests for services
├── packages
│ ├── eslint-config # Shared ESLint configuration
│ ├── models # Shared models for microservices
│ └── typescript-config # Shared TypeScript configuration
├── setup.js # Setup script for local environment
├── turbo.json # Turborepo configuration
```---
# Setting Up the Project Locally for Developement
Follow these steps to set up the project on your local machine:
## Prerequisites
- **Node.js (>=18)**
- **Docker and Docker Compose**## Steps
1. **Clone the Repository:**
```bash
git clone https://github.com/Sidd-77/microservices-chat.git
cd microservices-chat
```2. **Install Dependencies:**
Install all dependencies in the root and subdirectories:
```bash
npm install
```3. **Run Setup Script:**
Execute the setup script to configure the environment:
```bash
node setup.js
```4. **Build Project:**
Build the services and models needed:
```bash
npm run build
```5. **Start Dependencies Locally:**
Use Docker Compose to start dependencies like Redis, RabbitMQ, MongoDB and MinIO:
```bash
docker-compose -f docker-compose-dependencies.yml up -d
```6. **Run the Application:**
Start the application using npm:
```bash
npm run dev
```> **Note for Notification Service:**
> To enable the push-notification service, generate a VAPID key pair and place it in the environment files of both the `web` and `notification-service` directories.