How brkybzkrt/student-course-registration works
This is a Spring microservice system for managing students, courses, course-registration approval, and email notifications. The main workflow is a student submitting a five-course selection; registration checks eligibility and course availability, stores grouped registrations, and exposes them for administrator approval. Approval updates registration state and emits enrolled-student updates consumed by the course service. Separate services manage student, course, and administrator records. Notification delivery also includes scheduled pending-registration reminders and failed-email retries. The README documents Keycloak security; source excerpts do not establish how every service wires the shared security module or all event producers.
Main entry points: RegistrationService.java Registration service · ScheduleService.java Reminder scheduler · StudentService.java Student service · AdminService.java Admin service
Components 27
Record management
- Student API
student-service/src/main/java/com/student/course/registration/controller/impl/StudentController.java - Student service
student-service/src/main/java/com/student/course/registration/service/impl/StudentService.java - Student repository
student-service/src/main/java/com/student/course/registration/repository/StudentRepository.java - Course API
course-service/src/main/java/com/student/course/registration/controller/impl/CourseController.java - Course service
course-service/src/main/java/com/student/course/registration/service/impl/CourseService.java - Course repository
course-service/src/main/java/com/student/course/registration/repository/CourseRepository.java - Admin API
admin-service/src/main/java/com/student/course/registration/controller/impl/AdminController.java - Admin service
admin-service/src/main/java/com/student/course/registration/service/impl/AdminService.java - Admin repository
admin-service/src/main/java/com/student/course/registration/repository/AdminRepository.java
Registration workflow
- Registration API
registration-service/src/main/java/com/student/course/registration/controller/impl/RegistrationController.java - Registration service
registration-service/src/main/java/com/student/course/registration/service/impl/RegistrationService.java - Registration repository
registration-service/src/main/java/com/student/course/registration/repository/RegistrationRepository.java - Student client
registration-service/src/main/java/com/student/course/registration/feingClients/StudentFeignClient.java - Course client
registration-service/src/main/java/com/student/course/registration/feingClients/CourseFeignClient.java - Enrollment producer
registration-service/src/main/java/com/student/course/registration/service/impl/RegistrationServiceProducer.java - Enrollment listener
course-service/src/main/java/com/student/course/registration/service/impl/CourseListener.java
Notifications
- Reminder scheduler
notification-service/src/main/java/com/student/course/registration/service/ScheduleService.java - Registration client
notification-service/src/main/java/com/student/course/registration/feignClients/RegistrationFeignClient.java - Admin client
notification-service/src/main/java/com/student/course/registration/feignClients/AdminFeignClient.java - Email event handler
notification-service/src/main/java/com/student/course/registration/service/KafkaNotificationService.java - Email service
common-modules/email-common/src/main/java/com/student/course/registration/emailcommon/service/EmailService.java - Failed email store
notification-service/src/main/java/com/student/course/registration/repository/FailedEmailRepository.java
Shared capabilities
- Keycloak security
common-modules/auth-common/src/main/java/com/student/course/registration/authcommon/config/KeycloakConfiguration.java
External systems
- Kafka
- Keycloak
- Mail transport
Other components
- Users and admins
Connections 27
- Users and admins → Student API: manages account
- Users and admins → Course API: manages courses
- Users and admins → Admin API: manages admins
- Users and admins → Registration API: submits or reviews
- Student API → Student service: delegates
- Student service → Student repository: reads and writes
- Student service → Keycloak: authenticates and provisions
- Keycloak security → Keycloak: validates identity
- Course API → Course service: delegates
- Course service → Course repository: reads and writes
- Admin API → Admin service: delegates
- Admin service → Admin repository: reads and writes
- Admin service → Keycloak: authenticates and provisions
- Registration API → Registration service: delegates
- Registration service → Student client: checks eligibility
- Registration service → Course client: checks selected courses
- Registration service → Registration repository: reads and writes groups
- Registration service → Enrollment producer: requests enrollment update
- Enrollment producer → Kafka: publishes update
- Kafka → Enrollment listener: delivers update
- Reminder scheduler → Registration client: fetches pending groups
- Reminder scheduler → Admin client: fetches admins
- Reminder scheduler → Email service: sends reminders
- Kafka → Email event handler: delivers email events
- Email event handler → Email service: sends email
- Email event handler → Failed email store: stores and retries failures
- Email service → Mail transport: sends messages