61 lines
1.9 KiB
Markdown
61 lines
1.9 KiB
Markdown
# Project Setup Instructions
|
|
|
|
This README.md file provides instructions for setting up and running various components of the project, including MongoDB, SQS, NotificationService, and TodoService. Please follow the steps below to get started.
|
|
|
|
## MongoDB/Docker && RabbitMQ/Docker
|
|
|
|
1. Install MongoDB if you haven't already.
|
|
2. Navigate to the `/infra/docker/docker-compose` directory.
|
|
3. Make sure to add .env by copying .env.example and filling in the values.
|
|
4. Run the following command to start MongoDB using Docker Compose:
|
|
|
|
```shell
|
|
docker-compose up -d
|
|
```
|
|
|
|
## NotificationService
|
|
|
|
Before running the NotificationService, ensure that you have Node.js, TypeScript (tsc), and npm installed.
|
|
Navigate to the /notification-service directory.
|
|
Run the following command to install the dependencies:
|
|
|
|
```npm
|
|
npm install
|
|
```
|
|
|
|
Run the following command to build and run (Dem mode)the project:
|
|
|
|
```npm
|
|
npm run dev
|
|
```
|
|
|
|
## TodoService
|
|
|
|
Before running the TodoService, ensure that you have Node.js, TypeScript (tsc) and npm installed.
|
|
Navigate to the /todo-service directory.
|
|
Run the following command to install the dependencies:
|
|
|
|
```npm
|
|
npm install
|
|
```
|
|
|
|
Run the following command to build and run (Dem mode)the project:
|
|
|
|
```npm
|
|
npm run dev
|
|
```
|
|
|
|
## Requests
|
|
|
|
Examples are located in request.http - can be run in VSCode with the REST Client extension.
|
|
|
|
## notification-service business logic
|
|
|
|
1. When a new todo is created, the notification-service will receive a message from the todo-service with delay time due_date - current_time.
|
|
2. The notification-service will then send a message to rabbitmq with the delay time.
|
|
3. When the delay time is up, the notification-service will receive a message from rabbitmq and send a notification to the user by the following logic:
|
|
a. If the todo is no "pending" status and due_date is smaller then current time, send a notification to the user.
|
|
b. If the todo is already completed, do nothing.
|
|
|
|
|
|
|