A real-time chat application built with a microservices architecture using Node.js, TypeScript, and Docker.
⚠️ This is a basic implementation designed for learning and demonstration purposes.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Chatter Chimp │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌───────────────┐ │
│ │ Auth │ │ Group │ │ Chat │ │ Notification │ │
│ │ Service │ │ Service │ │ Service │ │ Service │ │
│ │ (8001) │ │ (8002) │ │ (8003) │ │ (Worker) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └───────┬───────┘ │
│ │ │ │ │ │
│ └─────────────────┴────────┬────────┴───────────────────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ RabbitMQ │ │
│ │ (Event Broker) │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
| Service | Port | Description | Tech Stack |
|---|---|---|---|
| Auth Service | 8001 | User registration, login & JWT authentication | Express, PostgreSQL, Redis, Drizzle |
| Group Service | 8002 | Group creation & membership management | Express, PostgreSQL, Redis, Drizzle |
| Chat Service | 8003 | Real-time messaging via WebSocket | Express, MongoDB, Redis, Socket.io |
| Notification Service | — | Email notifications (event-driven worker) | Node.js, RabbitMQ, Nodemailer |
For detailed API documentation, refer to each service's README in
apps/<service-name>/.
- Docker & Docker Compose installed
- Ports
5672,8001,8002,8003available
docker network create chatter_chimp_shared_networkcd infrastructure/rabbitMQ
docker-compose up -dOpen separate terminals and run:
# Auth Service
cd apps/auth-service
docker-compose up --build
# Group Service
cd apps/group-service
docker-compose up --build
# Chat Service
cd apps/chat-service
docker-compose up --build
# Notification Service
cd apps/notification-service
docker-compose up --buildTip: Add
-dflag to run in detached mode.
Chatter-Chimp/
├── apps/
│ ├── auth-service/ # Authentication microservice
│ ├── group-service/ # Group management microservice
│ ├── chat-service/ # Real-time chat microservice
│ └── notification-service/ # Email notification worker
├── infrastructure/
│ └── rabbitMQ/ # RabbitMQ Docker setup
├── packages/ # Shared packages & configs
└── turbo.json # Turborepo configuration
# Install dependencies (from root)
bun install
# Run all services in dev mode
turbo dev
# Run a specific service
turbo dev --filter=auth-serviceEach service requires its own .env file. Refer to the README of each service for the required variables:
ISC