Microservices-based notification system with email and push notifications.
- Member 1: Infrastructure + API Gateway (@teammate1)
- Member 2: User Service (@teammate2)
- Member 3: Email + Push Services (@teammate3)
- Member 4: Template Service + DevOps (@teammate4)
# 1. Start infrastructure
docker-compose up -d
# 2. Check services
docker-compose ps
# 3. Access services
# - API Gateway: http://localhost:3000
# - RabbitMQ UI: http://localhost:15672 (rabbit_user/rabbit_password)
# - PostgreSQL: localhost:5432- 5 Microservices (API Gateway, User, Email, Push, Template)
- PostgreSQL (3 databases)
- RabbitMQ (Message queue with DLQ)
- Redis (Cache)
- Client Request → API Gateway
- Authentication → Validate JWT token
- Validation → Check request format
- User Lookup → Fetch user from User Service
- Idempotency Check → Verify in Redis (prevent duplicates)
- Queue Message → Publish to RabbitMQ
- Status Tracking → Store in Redis
- Response → Return 202 Accepted
- Consumer Processing → Email/Push Service consumes message
- Send → Deliver to recipient
- Status Update → Mark as sent or failed
Each microservice has its own PostgreSQL database:
- user_service_db - User accounts, preferences, push tokens
- template_service_db - Email/push templates and versions
- notification_logs_db - Notification audit logs
# Minimum
- Docker 20.10+
- Docker Compose 2.0+
- 4GB RAM
- 10GB Disk space
# For local development
- Node.js 18+ (https://nodejs.org/)
- npm 9+
- GitSee CONTRIBUTING.md for stacked PRs workflow.
