This project is a microservices-based task management system, composed of three main services:
- User Service
- Task Service
- Notification Service
Services communicate asynchronously using RabbitMQ for message brokering. Each service is containerized with Docker and managed via a central docker-compose.yml file. Mailpit is included for capturing and viewing emails sent by the system during development and testing.
docker-compose.yml
notification-service/
Dockerfile
package.json
pnpm-lock.yaml
src/
index.js
mailpit/ (service runs via Docker, no source code)
task-service/
Dockerfile
package.json
pnpm-lock.yaml
src/
index.js
user-service/
Dockerfile
package.json
pnpm-lock.yaml
src/
index.js
Handles user registration, authentication, and user data management.
Manages tasks, including creation, updating, and tracking task status. This service now includes email sending functionality—when tasks are created, notification emails are sent (captured by Mailpit in development).
Sends notifications to users about task updates and other relevant events.
Mailpit is an email testing tool included as a service in this project. It captures outgoing emails for inspection during development. Access the Mailpit web UI at http://localhost:8025 (default port, see docker-compose.yml).
This project uses RabbitMQ as a message broker for asynchronous communication between microservices. Events such as task creation, updates, and notifications are published to RabbitMQ and consumed by the relevant services.
- Docker
- Docker Compose
- pnpm (for local development)
- RabbitMQ (automatically started via Docker Compose)
-
Clone the repository:
git clone git@github.com:bishalshrestha013/task-management-microservices.git cd task-management-microservices -
Start all services:
docker-compose up --build
-
Access the services:
- User Service: http://localhost:3001
- Task Service: http://localhost:3002
- Notification Service: http://localhost:3003
- Mailpit (Email UI): http://localhost:8025
Ports may be configured in the
docker-compose.ymlfile.
Each service is a standalone Node.js application. To run a service locally:
cd <service-name>
pnpm install
pnpm startThis project is licensed under the MIT License.