How mintpansy/scholardot works
ScholarDot is a web app for turning academic PDFs into sentence-level translations and a parallel-reading experience. The documented workflow runs from upload and document creation through asynchronous PDF parsing, translation, persistence, and progress polling, then into reading and study tools. The graph also preserves authentication, notes/highlights, reading-position state, summaries, complexity analysis, and figure/table assets. Some subsystem paths and links come from the README and tree; where sampled code did not establish a call, links are omitted or marked unverified.
Main entry points: DocumentPipelineService.java Translation pipeline · page.tsx Next.js UI · DocumentPipelineController.java Document endpoints · Read.tsx Parallel reader
Components 22
Web experience
- Next.js UI
frontend/app/page.tsx - Document API client
frontend/app/services/document.ts
Document processing
- Spring API
backend/app/scholardot/src/main/java/swyp/scholardot/ScholardotApplication.java - Document endpoints
backend/app/scholardot/src/main/java/swyp/scholardot/document/controller/DocumentPipelineController.java - Document records
backend/app/scholardot/src/main/java/swyp/scholardot/document/domain/Document.java - PDF storage
backend/app/scholardot/src/main/java/swyp/scholardot/document/storage/ObjectStorageClient.java - Translation pipeline
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentPipelineService.java - PDF extraction
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/PdfTextExtractService.java - Sentence units
backend/app/scholardot/src/main/java/swyp/scholardot/doc_units/docUnits/docUnitsEntity.java - Unit repository
backend/app/scholardot/src/main/java/swyp/scholardot/doc_units/docUnits/docUnitsRepository.java - OpenAI translation
backend/app/scholardot/src/main/java/swyp/scholardot/translator/OpenAiTranslator.java - Figure/table assets
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentAssetService.java - Content summary
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentContentSummaryService.java - Complexity analysis
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentStructureAnalysisService.java - LLM chat service
backend/app/scholardot/src/main/java/swyp/scholardot/api/callLLM/CallLLMService.java
Reading and study
- Parallel reader
frontend/app/components/read/Read.tsx - Notes and highlights
backend/app/scholardot/src/main/java/swyp/scholardot/document/note/UserDocNoteService.java - Reading position
backend/app/scholardot/src/main/java/swyp/scholardot/state/userDocStates/userDocStatesService.java
Identity and accounts
- OAuth and JWT
backend/app/scholardot/src/main/java/swyp/scholardot/domain/user/CustomOAuth2UserService.java
Other components
- Reader
- OpenAI API
- Kakao OAuth
Connections 22
- Reader → Next.js UI: uses
README.md - Next.js UI → Document API client: requests
README.md - Document API client → Spring API: calls API
README.md - Spring API → Document endpoints: routes
- Document endpoints → Translation pipeline: starts processing
backend/app/scholardot/src/main/java/swyp/scholardot/document/controller/DocumentPipelineController.java - Document endpoints → Document records: deletes
backend/app/scholardot/src/main/java/swyp/scholardot/document/controller/DocumentPipelineController.java - Translation pipeline → PDF extraction: extracts text
README.md - Translation pipeline → OpenAI translation: requests translation
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentPipelineService.java - OpenAI translation → OpenAI API: translates via
README.md - Translation pipeline → Sentence units: creates units
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentPipelineService.java - Translation pipeline → Unit repository: saves batches
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentPipelineService.java - Translation pipeline → Figure/table assets: extracts assets
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentPipelineService.java - Translation pipeline → Content summary: generates summary
backend/app/scholardot/src/main/java/swyp/scholardot/document/service/DocumentPipelineService.java - Document endpoints → Complexity analysis: serves analysis
backend/app/scholardot/src/main/java/swyp/scholardot/document/controller/DocumentPipelineController.java - Next.js UI → Parallel reader: opens reader
- Parallel reader → Document API client: loads document
- Parallel reader → Notes and highlights: manages annotations
- Parallel reader → Reading position: restores position
- Kakao OAuth → OAuth and JWT: authenticates
backend/app/scholardot/src/main/java/swyp/scholardot/domain/user/CustomOAuth2UserService.java - LLM chat service → OpenAI API: posts prompt
backend/app/scholardot/src/main/java/swyp/scholardot/api/callLLM/CallLLMService.java - Translation pipeline → PDF extraction: parses PDF
README.md - Next.js UI → OAuth and JWT: signs in