- Introduction
- Technologies Used
- Getting Started
- Features
- Authentication and Access Control
- Development Actions
- API Documentation
TicketEase provides a powerful backend for managing customer support tickets, offering a seamless experience for users and support agents alike. Built with Node.js, TypeScript, and Express.js, this API enables efficient creation, updating, and tracking of support tickets, ensuring effective issue resolution and improved customer satisfaction.
- Node.js
- TypeScript
- Express.js
- MongoDB (Database)
- JWT (JSON Web Tokens)
- Docker & Docker Compose (containerization)
- Jest (for testing)
- Swagger (for API documentation)
To run the Ticketing System REST API, you have two options:
- Clone the repository.
- Install dependencies by running
npm install
. - Start the development server with
npm run dev
.
- Clone the repository.
- Run the following command to start the Docker containers:
docker-compose up -d
The API will be available athttp://localhost:3000
.
Other users can use the Ticketing System REST API by following these steps:
Pull the Docker Image: Run the following command to pull the Docker image from the Docker registry (e.g., Docker Hub):
docker pull nitinjuyal/ticketing_rest_api:v1.0
Run the Container: After pulling the Docker image, users can run the container using the following command:
docker run -p 3000:3000 nitinjuyal/ticketing_rest_api:v1.0
- Create, retrieve, and update ticket details.
- Filter and sort tickets based on status, category, or priority.
- Support agents can claim unassigned tickets.
- Tickets are assigned atomically to prevent concurrency issues.
- Support agents can reassign tickets to other agents if needed.
- Users and agents can communicate by adding ticket comments.
- Ticket logs are updated and can be retrieved to track changes.
- Email notifications are sent to users on various ticket updates using nodemailer and Gmail service transporter.
The API implements RBAC (Role-Based Access Control) with JWT (JSON Web Tokens) for authentication. Different roles, such as admin, support agent, and customer, have access permissions based on their roles.
- Effective Error Handling: Implemented error handling mechanisms to provide informative error messages to users.
- Validated and sanitized user input to prevent security vulnerabilities, such as encrypted passwords on the client-side using bcrypt.
- MVCS Architecture: Built on the Model-View-Controller-Services architecture to organize code effectively.
- Testing: Thoroughly tested the application using integration tests from routes->services using the Jest testing framework.
- Documentation: Used Swagger to create interactive documentation in Swagger UI. The documentation can be accessed by going to
{{baseUrl}}/api-docs
. - Containerization: Containerized the application with the help of docker-compose and uploaded it to a DockerHub repository named
nitinjuyal/ticketing_rest_api:v1.0
.
To explore the API endpoints and their usage, access the Swagger UI documentation at {{baseUrl}}/api-docs
.