The Support Ticket Application is a web-based system designed to manage support tickets, facilitating communication and issue resolution between users and support agents. The application provides endpoints for creating, updating, and retrieving tickets, as well as managing comments and administrative tasks.
The application follows a microservices architecture, with each functional domain encapsulated in a separate service. These services include authentication, ticket management, comments, and administration. Although due to that this project is minimal and basic, the project was deployed as a monolithic application. Docker containers is used to deploy this app, promoting scalability and ease of deployment.
- Authentication Service: Handles user authentication and authorization.
- Ticket Service: Manages the creation, retrieval, and updating of support tickets.
- Comment Service: Facilitates the creation and retrieval of comments on tickets.
- Admin Service: Contains functionality for admin-specific actions, such as user management and ticket assignment.
- Backend: Node.js with Express.js for the server-side logic.
- Database: MongoDB for storing ticket and user data.
- Authentication: JSON Web Tokens (JWT) for secure user authentication.
- Containerization: Docker and Docker Compose for packaging and deploying services.
- Documentation: Swagger for API documentation.
- Language: TypeScript for statically-typed JavaScript development.
- Validation: Express Validator for request validation.
- Testing: Jest for unit testing.
- API Documentation: Swagger for documenting and testing API endpoints.
- Version Control: Git for source code management.
Before installing the application, ensure you have the following prerequisites installed:
- Docker and Docker Compose for containerization.
The application uses MongoDB, and the database is automatically initialized when the Docker containers are started. The database is included in the Docker setup. It will be automatically initialized when running the Docker containers.
- Docker and Docker Compose are installed on the host machine.
No requirements have been left uncovered.
-
Clone the repository:
git clone <https://github.com/znuta/support-ticket.git>
cd support-ticket-app
Remember to setup the environment variables
npm test
docker-compose up --build
-
Visit this provided swagger API doc:
http://localhost:8000/api/v1/swagger/docs/
A super admin is created imdiately the server start up, find the creadentials included in the docker-compose.yml file, in the environment section.
when loggedin as admin you can create an agent.
No significant issues were encountered during the development of the application.
The assignment was comprehensive and well-structured.
Feel free to reach out for any further clarification or assistance!