This is a simple web application designed to manage tasks within a company. The application is built upon a micro-service architecture with the following components:
- Nashville: Backend for Frontend (BFF) responsible for handling REST and WebSocket communications.
- Gallatin: Task Manager micro-service handling task logic.
- Ashland: Logger micro-service for event logging.
- Nashville communicates with Gallatin micro-service via GRPC.
- Gallatin and Ashland are connected to a RabbitMQ message broker.
- Gallatin emits logical events to Ashland for logging.
A task in the system has the following attributes:
id
: Universally unique identifier (UUID) for the task.parentId
: UUID of the parent task (nullable for root tasks).title
: Title of the task (string).description
: Description of the task (text).createdAt
: Date or timestamp automatically generated by the ORM upon task creation.updatedAt
: Date or timestamp automatically updated by the ORM upon task modification.
The application provides the following functionalities:
- Create and Update Task: Allows users to create and update tasks with basic attributes.
- List Tasks: Provides a paginated list of tasks. Complicated pagination within the task tree is not implemented.
- Delete Task: Enables users to delete a specific task by its ID.
To run the application, follow these steps:
- Install docker.
- run
docker-compose up
.