Tasks Management is a project for managing tasks and tracking user actions. It provides features for changing task status, assigning responsibility to other users, and updating task properties such as title and description while keeping track of the changes.
The project is built using the following technologies:
- Node.js
- NestJS
- TypeScript
- MySQL with TypeORM
- React
- Node.js application based on a layered architecture with MySQL database.
- Applied validation on user requests using class validator.
- Applied the command pattern with transactional database operations to ensure separation of concerns.
- Implemented a pipe state transition to validate task transitions using the state pattern.
- Error handling using interceptors.
- Added Swagger documentation for API endpoints.
The project uses the following database schema:
- id
- title
- description
- status
- assignedTo (user: one-to-many relation)
- createdBy (user: one-to-many relation)
- history (history: one-to-many relation)
- createdAt (date)
- updatedAt (date)
- id
- changedBy (user)
- createdAt (date)
- updatedAt (date)
- current (taskHistory: one-to-one relation)
- previous (taskHistory: one-to-one relation)
- id
- title
- description
- assignedTo (user)
- id
- username
The project exposes the following endpoints:
GET /task/{id}
- Get a specific task by ID.GET /tasks/list
- Get a list of all tasks.PATCH /tasks/status/{id}
- Update the status of a task by ID.PATCH /tasks/responsibility/{id}
- Update the responsibility of a task by ID.POST /task
- Create a new task.
GET /history/task/{taskId}
- Get the history of changes for a specific task.
POST /user
- Create a new user.
Feel free to explore and use these endpoints to interact with the Tasks Management system.
To get started with the project, follow these steps:
- Install the necessary dependencies by running
npm install
oryarn install
. - Set up the MySQL database and update the database configuration in the project.
- Run the backend project using
nest start
. - Run the frontend project using
npm start
. - Access the API endpoints using a tool like Postman or through the provided Swagger documentation.
The Tasks Management project provides a robust system for managing tasks and tracking user actions. With its layered architecture, validation, command pattern, and state pattern, it offers a scalable and maintainable solution for task management.