How trinhcong1120/khaosat_springboot works
BE_KhaoSat is a Spring-based microservices backend for authentication, access management, and survey creation and analysis. The main user workflow enters through the gateway, authenticates through auth-service, then uses core-service and survey-service APIs; survey respondents can submit answers through public survey endpoints, while staff can view dashboards and export reports. Core-service also emits user notification events for Kafka delivery and email handling. README documents gateway routes and shared infrastructure; several internal service links are omitted because their wiring was not sampled.
Main entry points: GatewayServiceApplication.java API Gateway · AuthService.java Auth Service · ReportController.java Reports API · UserService.java User Service
Components 23
API Edge
- API Gateway
gateway-service/src/main/java/com/trinhcong1120/gateway_service/GatewayServiceApplication.java
Identity And Access
- Auth API
auth-service/src/main/java/com/trinhcong1120/auth_service/controller/AuthController.java - Auth Service
auth-service/src/main/java/com/trinhcong1120/auth_service/service/AuthService.java - Auth User Store
auth-service/src/main/java/com/trinhcong1120/auth_service/repository/UserRepository.java - JWT Issuer
auth-service/src/main/java/com/trinhcong1120/auth_service/security/JwtService.java - Core APIs
core-service/src/main/java/com/trinhcong1120/core_service/controller/UserController.java - Menu API
core-service/src/main/java/com/trinhcong1120/core_service/controller/MenuController.java - Menu Service
core-service/src/main/java/com/trinhcong1120/core_service/service/MenuService.java - User Service
core-service/src/main/java/com/trinhcong1120/core_service/service/UserService.java
Survey Lifecycle
- Survey APIs
survey-service/src/main/java/com/trinhcong1120/survey_service/controller/SurveyController.java - Public Survey API
survey-service/src/main/java/com/trinhcong1120/survey_service/controller/PublicSurveyController.java - Public Survey Service
survey-service/src/main/java/com/trinhcong1120/survey_service/service/PublicSurveyService.java - Reports API
survey-service/src/main/java/com/trinhcong1120/survey_service/controller/ReportController.java - Statistics Service
survey-service/src/main/java/com/trinhcong1120/survey_service/service/StatisticsService.java - Report Service
survey-service/src/main/java/com/trinhcong1120/survey_service/service/ReportService.java
Notifications
- Notification Producer
core-service/src/main/java/com/trinhcong1120/core_service/producer/NotificationProducer.java - Kafka Broker
- Notification Consumer
notification-service/src/main/java/com/trinhcong1120/notification_service/consumer/NotificationConsumer.java - Email Service
notification-service/src/main/java/com/trinhcong1120/notification_service/service/EmailService.java
Shared Platform
- PostgreSQL
- Config Server
config-service/src/main/java/com/trinhcong1120/config_service/ConfigServiceApplication.java - Eureka Discovery
discovery-service/src/main/java/com/trinhcong1120/discovery_service/DiscoveryServiceApplication.java
Other components
- Client / Frontend
Connections 23
- Client / Frontend → API Gateway: sends API requests
- API Gateway → Auth API: routes auth
- API Gateway → Core APIs: routes core APIs
- API Gateway → Survey APIs: routes surveys
- API Gateway → Public Survey API: routes public surveys
- API Gateway → Reports API: routes reports
- Auth API → Auth Service: invokes
- Auth Service → Auth User Store: looks up user
- Auth Service → JWT Issuer: generates token
- Menu API → Menu Service: invokes
- User Service → Notification Producer: publishes event
- Notification Producer → Kafka Broker: sends event
- Kafka Broker → Notification Consumer: delivers event
- Notification Consumer → Email Service: handles email
- Public Survey API → Public Survey Service: invokes
- Reports API → Statistics Service: requests statistics
- Reports API → Report Service: requests exports
- Auth Service → PostgreSQL: persists user data
- Menu Service → PostgreSQL: reads/writes menus
- User Service → PostgreSQL: reads/writes users
- Public Survey Service → PostgreSQL: reads/writes survey data
- Statistics Service → PostgreSQL: reads responses
- Report Service → PostgreSQL: reads survey data