Support Ticket System is a microservices-based helpdesk and customer support platform designed to manage and track user requests efficiently. The system is built using Spring Boot, Spring Cloud, Kafka, and Redis for a scalable, event-driven, and high-performance solution.
This project follows microservices architecture to ensure scalability, resilience, and security. Each microservice is independently deployable and communicates via event-driven messaging (Kafka) and RESTful APIs.
- Config Service: Centralized configuration management for microservices.
- Discovery Service (Eureka): Service registry for dynamic service discovery.
- API Gateway (Spring Cloud Gateway): Routes client requests to the appropriate microservices and handles authentication.
- Auth Service: Handles authentication, authorization, and JWT token management.
- User Service: Manages user accounts, roles, and permissions.
- Support Service: Handles support ticket creation, tracking, and resolution.
- Image Service: Handles file uploads for support ticket attachments.
Each service operates independently and communicates using Kafka for event-driven processing.
- Spring Boot 3.4.2 - Microservices framework
- Spring Cloud - Provides distributed system support
- Kafka - Message broker for event-driven architecture
- PostgreSQL - Relational database for support tickets and users
- Redis - Caching for fast access to frequently used data
- Spring Security & JWT - Authentication and authorization
- Docker & Kubernetes - Containerization and orchestration
- Eureka - Service discovery
- Spring Cloud Config - Centralized configuration management
- Spring Cloud OpenFeign - Inter-service communication
- Users authenticate through the Auth Service using JWT tokens.
- The API Gateway verifies each request and routes it to the corresponding service.
- A user submits a support ticket via the Support Service.
- The request is validated and stored in PostgreSQL.
- If an attachment is included, it is uploaded via the Image Service.
- The Support Service publishes an event to Kafka for ticket creation.
- Notification services (or worker services) can subscribe to updates and process them asynchronously.
- Frequently accessed support tickets are cached in Redis to improve performance.
Each microservice has a dedicated README with detailed information:
- Config Service
- Discovery Service
- API Gateway
- Auth Service
- User Service
- Support Service
- Image Service
- Java 17+
- Maven
- Docker
- Kafka & Zookeeper
- PostgreSQL
- Redis
git clone https://github.com/Fayupable/support-service.git
cd support-servicedocker-compose up -d postgres mongodb redis zipkin zookeeper kafka mail-dev pgadmin mongo-express redis-commandermvn clean package -DskipTests
docker-compose up -d config-server discovery user-service auth-service image-service support-service notification gateway2025-02-25T14:45:10.123+03:00 INFO 12234 --- [support-service] [nio-8120-exec-1] c.f.kafka.SupportTicketProducer:
Publishing ticket created event: SupportTicketCreatedEvent(ticketId=45d3e2c4-8a3d-4871-ae5f-d2944f8a3c42,
userId=550e8400-e29b-41d4-a716-446655440000, status=PENDING)
docker logs -f <container_name>docker exec -it kafka kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic support-tickets --from-beginningFeel free to fork and contribute to this project! Create a pull request if you find any issues or want to add features.
- Email: enisyaman4@gmail.com
- GitHub: Fayupable
- Spring Boot & Spring Cloud
- Netflix OSS (Eureka, Feign, Gateway)
- Docker & Kubernetes
- Redis & Kafka

