How hyuni0326/askeep_backend works
ASKeep is a collaborative presentation/study-session backend. The main workflow is account access, session creation and code-based joining, PDF material processing, live questions with AI and presenter answers, then an AI-generated session summary; WebSocket events keep session subscribers updated. Spring Boot owns the API and workflow coordination, while FastAPI provides document and answer/summary AI processing. The README documents the deployment and major capabilities; source excerpts and the import index support selected internal calls. Some unexcerpted handlers and processors are represented only at their documented subsystem level.
Main entry points: QuestionService.java Questions and answers · SessionService.java Session lifecycle · SessionSummaryService.java Session summaries · MaterialService.java PDF materials
Components 21
Identity and access
- User
src/main/java/com/GDGoCSMU/ASKeep/domain/user/entity/User.java - Authentication
src/main/java/com/GDGoCSMU/ASKeep/domain/user/service/AuthService.java
Session lifecycle
- Session API
src/main/java/com/GDGoCSMU/ASKeep/domain/session/controller/SessionController.java - Session lifecycle
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionService.java - Membership checks
src/main/java/com/GDGoCSMU/ASKeep/domain/session/SessionAccessService.java - Session records
src/main/java/com/GDGoCSMU/ASKeep/domain/session/repository/SessionRepository.java
Materials and Q&A
- PDF materials
src/main/java/com/GDGoCSMU/ASKeep/domain/material/MaterialService.java - Questions and answers
src/main/java/com/GDGoCSMU/ASKeep/domain/question/QuestionService.java - Question records
src/main/java/com/GDGoCSMU/ASKeep/domain/question/QuestionRepository.java - Answer records
src/main/java/com/GDGoCSMU/ASKeep/domain/answer/AnswerRepository.java - Material records
src/main/java/com/GDGoCSMU/ASKeep/domain/material/MaterialRepository.java
AI processing
- AI HTTP client
src/main/java/com/GDGoCSMU/ASKeep/domain/material/client/AiClientServer.java - FastAPI processing
ai-server/main.py - Session summaries
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionSummaryService.java - Summary processor
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionSummaryProcessor.java - Summary records
src/main/java/com/GDGoCSMU/ASKeep/domain/session/repository/SessionSummaryRepository.java
Realtime delivery
- Session event publisher
src/main/java/com/GDGoCSMU/ASKeep/global/websocket/SessionTopicEvent.java - STOMP WebSocket
src/main/java/com/GDGoCSMU/ASKeep/global/websocket/RealtimeBroadcaster.java
Other components
- Presenter / audience
- PostgreSQL
- Gemini API
Connections 30
- Presenter / audience → Authentication: signs in
- Authentication → User: authenticates
src/main/java/com/GDGoCSMU/ASKeep/domain/user/service/AuthService.java - Presenter / audience → Session API: creates and joins
- Session API → Session lifecycle: delegates to
src/main/java/com/GDGoCSMU/ASKeep/domain/session/controller/SessionController.java - Session lifecycle → Session records: reads and writes
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionService.java - Session lifecycle → PDF materials: deletes session files
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionService.java - Session lifecycle → User: resolves presenter
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionService.java - Presenter / audience → PDF materials: uploads PDF
- PDF materials → AI HTTP client: requests processing
src/main/java/com/GDGoCSMU/ASKeep/domain/material/MaterialService.java - PDF materials → Material records: updates status
src/main/java/com/GDGoCSMU/ASKeep/domain/material/MaterialService.java - AI HTTP client → FastAPI processing: sends document
- Presenter / audience → Questions and answers: asks question
- Questions and answers → Question records: stores questions
src/main/java/com/GDGoCSMU/ASKeep/domain/question/QuestionService.java - Questions and answers → Answer records: stores answers
src/main/java/com/GDGoCSMU/ASKeep/domain/question/QuestionService.java - Questions and answers → AI HTTP client: requests AI answer
src/main/java/com/GDGoCSMU/ASKeep/domain/question/QuestionService.java - Questions and answers → Membership checks: checks membership
src/main/java/com/GDGoCSMU/ASKeep/domain/question/QuestionService.java - Presenter / audience → Session summaries: requests summary
- Session summaries → Summary records: creates and reads
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionSummaryService.java - Session summaries → Question records: loads session questions
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionSummaryService.java - Session summaries → Summary processor: queues request
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionSummaryService.java - Summary processor → AI HTTP client: requests summary AI
- FastAPI processing → PostgreSQL: stores embeddings
- FastAPI processing → Gemini API: requests generated content
- Presenter / audience → STOMP WebSocket: subscribes to session
- Questions and answers → Session event publisher: publishes question events
src/main/java/com/GDGoCSMU/ASKeep/domain/question/QuestionService.java - Session lifecycle → Session event publisher: publishes status events
src/main/java/com/GDGoCSMU/ASKeep/domain/session/service/SessionService.java - Session event publisher → STOMP WebSocket: broadcasts events
- Session records → PostgreSQL: persists session state
- Question records → PostgreSQL: persists Q&A
- Summary records → PostgreSQL: persists summaries