How bantikumardas/question-service-java-backend works
Question Service is a Spring Boot REST backend for authoring question banks, creating and inviting candidates to tests, running timed exams, and executing submitted code. The main workflow is test administration through invitation and exam start; separate APIs handle authentication, question authoring, and code runs. Controllers delegate to service-layer operations, with persistence and Redis-backed exam-session caching underneath. Paths and links are grounded in the README, tree, and sampled source; implementation details for exam execution, invitations, and code running were not sampled, so their internal links are conservative.
Main entry points: AuthServiceImpl.java Authentication · repository H2 database · TestServiceImpl.java Test management · ExamServiceImpl.java Exam sessions
Components 20
REST API
- Auth endpoints
src/main/java/com/question/service/question_service/controller/AuthController.java - Test endpoints
src/main/java/com/question/service/question_service/controller/TestController.java - Question endpoints
src/main/java/com/question/service/question_service/controller/QuestionController.java - Exam endpoints
src/main/java/com/question/service/question_service/controller/ExamController.java - Code run endpoint
src/main/java/com/question/service/question_service/controller/CodeRunnerController.java
Assessment Services
- Test management
src/main/java/com/question/service/question_service/service/impl/TestServiceImpl.java - Invite dispatch
src/main/java/com/question/service/question_service/service/impl/TestInviteDispatcher.java - Question authoring
src/main/java/com/question/service/question_service/service/impl/QuestionServiceImpl.java - Exam sessions
src/main/java/com/question/service/question_service/service/impl/ExamServiceImpl.java
Identity and Access
- Authentication
src/main/java/com/question/service/question_service/service/impl/AuthServiceImpl.java - JWT security
src/main/java/com/question/service/question_service/security - Token blacklist
src/main/java/com/question/service/question_service/service/impl/TokenBlacklistServiceImpl.java
Persistence and Cache
- H2 database
src/main/java/com/question/service/question_service/repository - Exam session cache
src/main/java/com/question/service/question_service/service/impl/ExamSessionCacheServiceImpl.java
Execution and Messaging
- Code run coordination
src/main/java/com/question/service/question_service/service/impl/CodeRunServiceImpl.java - Code execution
src/main/java/com/question/service/question_service/service/impl/CodeRunnerImpl.java
Other components
- Candidate
- Test administrator
- SMTP mail
- Redis
Connections 23
- Test administrator → Auth endpoints: register or login
- Candidate → Auth endpoints: register or login
- Auth endpoints → Authentication: delegates
- Authentication → H2 database: reads and writes users
- Authentication → JWT security: creates tokens
- Authentication → Token blacklist: blacklists logout token
- Candidate → Test endpoints: accesses tests
- Test administrator → Test endpoints: manages tests
- Test endpoints → Test management: delegates
- Test management → H2 database: reads and writes test data
- Test management → Invite dispatch: requests invitations
- Invite dispatch → SMTP mail: sends invitations
- Test administrator → Question endpoints: authors questions
- Question endpoints → Question authoring: delegates
- Question authoring → H2 database: persists questions
- Candidate → Exam endpoints: starts exam
- Exam endpoints → Exam sessions: delegates
- Exam sessions → H2 database: reads and writes sessions
- Exam sessions → Exam session cache: uses session cache
- Exam session cache → Redis: reads and writes cache
- Candidate → Code run endpoint: submits code
- Code run endpoint → Code run coordination: delegates
- Code run coordination → Code execution: runs submission