# joaoptoaldo/study-management-platform architecture

> Architecture diagram of the GitHub repository joaoptoaldo/study-management-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/joaoptoaldo/study-management-platform
- Repository: https://github.com/joaoptoaldo/study-management-platform

## Overview

Study Management Platform is a full-stack study organizer: students use the React app to manage study materials and plans, practice, and review progress through a Spring Boot API. Its major domain stages include authentication, subject and goal management, exam preparation, study sessions, and learning content; PDFs feed an AI tutor, while quizzes, simulations, flashcards, summaries, focus tools, and analytics support ongoing study. The README documents the principal capabilities; sampled source confirms selected auth, session, and RAG internals, but not every feature’s runtime wiring.

Main entry points: [`frontend/src/App.tsx`](https://github.com/joaoptoaldo/study-management-platform/blob/main/frontend/src/App.tsx) (Web application), [`backend/src/main/java/com/studyplatform/file/UploadedFileService.java`](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/file/UploadedFileService.java) (PDFs and notes), [`backend/src/main/java/com/studyplatform/auth/AuthService.java`](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/auth/AuthService.java) (Authentication), [`backend/src/main/java/com/studyplatform/ai/RAGChatService.java`](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/RAGChatService.java) (RAG tutor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Web experience"]
  node_web_app["Web application<br/>[App.tsx]"]
  node_api["Study API"]
end

subgraph group_identity["Identity and access"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_users[("User accounts<br/>[User.java]")]
end

subgraph group_planning["Study planning"]
  node_subjects[("Subjects<br/>[Subject.java]")]
  node_goals[("Study goals<br/>[Goal.java]")]
  node_exam_prep[("Exam preparation<br/>[ExamPrep.java]")]
  node_sessions[("Study sessions<br/>[StudySession.java]")]
  node_pomodoro["Pomodoro focus"]
end

subgraph group_learning["Learning content"]
  node_pdfs["PDFs and notes"]
  node_pdf_store[("PDF records<br/>[PdfChunk.java]")]
  node_vector_index["Vector indexing<br/>[VectorIndexer.java]"]
  node_rag_tutor["RAG tutor"]
  node_vector_store["Vector store"]
  node_ai_content["AI content<br/>[AiService.java]"]
  node_summaries["Summaries"]
  node_flashcards["Flashcards"]
  node_podcasts["Podcast audio<br/>[TtsService.java]"]
end

subgraph group_insight["Practice and insight"]
  node_quiz_sim[("Quizzes and simulations")]
  node_analytics["Learning analytics"]
end

node_student(("Student"))

node_student -->|"uses"| node_web_app
node_web_app -->|"calls API"| node_api
node_web_app -.->|"registers and logs in"| node_auth
node_auth -->|"creates and looks up"| node_users
node_web_app -->|"manages"| node_subjects
node_web_app -->|"tracks"| node_goals
node_web_app -->|"plans exams"| node_exam_prep
node_web_app -.->|"records study"| node_sessions
node_web_app -->|"starts focus"| node_pomodoro
node_web_app -->|"uploads and annotates"| node_pdfs
node_pdfs -.->|"stores chunks"| node_pdf_store
node_pdfs -->|"indexes material"| node_vector_index
node_rag_tutor -->|"retrieves context"| node_vector_store
node_web_app -->|"asks material"| node_rag_tutor
node_web_app -->|"generates study content"| node_ai_content
node_web_app -->|"edits summaries"| node_summaries
node_web_app -->|"reviews cards"| node_flashcards
node_web_app -->|"takes quizzes and exams"| node_quiz_sim
node_web_app -->|"views progress"| node_analytics
node_web_app -->|"plays generated audio"| node_podcasts

click node_web_app "https://github.com/joaoptoaldo/study-management-platform/blob/main/frontend/src/App.tsx"
click node_api "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/StudyPlatformApplication.java"
click node_auth "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/auth/AuthService.java"
click node_users "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/user/User.java"
click node_subjects "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/subject/Subject.java"
click node_goals "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/goal/Goal.java"
click node_exam_prep "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/examprep/ExamPrep.java"
click node_sessions "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/session/StudySession.java"
click node_pomodoro "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/pomodoro/PomodoroSessionService.java"
click node_pdfs "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/file/UploadedFileService.java"
click node_pdf_store "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/file/PdfChunk.java"
click node_vector_index "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/file/VectorIndexer.java"
click node_rag_tutor "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/RAGChatService.java"
click node_vector_store "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/vector/VectorStoreService.java"
click node_ai_content "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/AiService.java"
click node_summaries "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/summary/SummaryService.java"
click node_flashcards "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/flashcard/FlashcardService.java"
click node_quiz_sim "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/examprep/ExamSimulation.java"
click node_analytics "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/analytics/LearningZoneService.java"
click node_podcasts "https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/TtsService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_web_app,node_api toneBlue
class node_auth,node_users toneAmber
class node_subjects,node_goals,node_exam_prep,node_sessions,node_pomodoro toneMint
class node_pdfs,node_pdf_store,node_vector_index,node_rag_tutor,node_vector_store,node_ai_content,node_summaries,node_flashcards,node_podcasts toneRose
class node_quiz_sim,node_analytics,node_student toneIndigo
```

## Components

### Web experience

- [Web application](https://github.com/joaoptoaldo/study-management-platform/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Study API](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/StudyPlatformApplication.java): `backend/src/main/java/com/studyplatform/StudyPlatformApplication.java`

### Identity and access

- [Authentication](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/auth/AuthService.java): `backend/src/main/java/com/studyplatform/auth/AuthService.java`
- [User accounts](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/user/User.java): `backend/src/main/java/com/studyplatform/user/User.java`

### Study planning

- [Subjects](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/subject/Subject.java): `backend/src/main/java/com/studyplatform/subject/Subject.java`
- [Study goals](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/goal/Goal.java): `backend/src/main/java/com/studyplatform/goal/Goal.java`
- [Exam preparation](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/examprep/ExamPrep.java): `backend/src/main/java/com/studyplatform/examprep/ExamPrep.java`
- [Study sessions](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/session/StudySession.java): `backend/src/main/java/com/studyplatform/session/StudySession.java`
- [Pomodoro focus](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/pomodoro/PomodoroSessionService.java): `backend/src/main/java/com/studyplatform/pomodoro/PomodoroSessionService.java`

### Learning content

- [PDFs and notes](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/file/UploadedFileService.java): `backend/src/main/java/com/studyplatform/file/UploadedFileService.java`
- [PDF records](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/file/PdfChunk.java): `backend/src/main/java/com/studyplatform/file/PdfChunk.java`
- [Vector indexing](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/file/VectorIndexer.java): `backend/src/main/java/com/studyplatform/file/VectorIndexer.java`
- [RAG tutor](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/RAGChatService.java): `backend/src/main/java/com/studyplatform/ai/RAGChatService.java`
- [Vector store](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/vector/VectorStoreService.java): `backend/src/main/java/com/studyplatform/ai/vector/VectorStoreService.java`
- [AI content](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/AiService.java): `backend/src/main/java/com/studyplatform/ai/AiService.java`
- [Summaries](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/summary/SummaryService.java): `backend/src/main/java/com/studyplatform/summary/SummaryService.java`
- [Flashcards](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/flashcard/FlashcardService.java): `backend/src/main/java/com/studyplatform/flashcard/FlashcardService.java`
- [Podcast audio](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/ai/TtsService.java): `backend/src/main/java/com/studyplatform/ai/TtsService.java`

### Practice and insight

- [Quizzes and simulations](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/examprep/ExamSimulation.java): `backend/src/main/java/com/studyplatform/examprep/ExamSimulation.java`
- [Learning analytics](https://github.com/joaoptoaldo/study-management-platform/blob/main/backend/src/main/java/com/studyplatform/analytics/LearningZoneService.java): `backend/src/main/java/com/studyplatform/analytics/LearningZoneService.java`

### Other components

- **Student**

## Connections

- Student → Web application: uses (evidence: `README.md`)
- Web application → Study API: calls API (evidence: `README.md`)
- Web application → Authentication: registers and logs in
- Authentication → User accounts: creates and looks up (evidence: `backend/src/main/java/com/studyplatform/auth/AuthService.java`)
- Web application → Subjects: manages (evidence: `README.md`)
- Web application → Study goals: tracks (evidence: `README.md`)
- Web application → Exam preparation: plans exams (evidence: `README.md`)
- Web application → Study sessions: records study
- Web application → Pomodoro focus: starts focus (evidence: `README.md`)
- Web application → PDFs and notes: uploads and annotates (evidence: `README.md`)
- PDFs and notes → PDF records: stores chunks
- PDFs and notes → Vector indexing: indexes material (evidence: `README.md`)
- RAG tutor → Vector store: retrieves context (evidence: `backend/src/main/java/com/studyplatform/ai/RAGChatService.java`)
- Web application → RAG tutor: asks material (evidence: `README.md`)
- Web application → AI content: generates study content (evidence: `README.md`)
- Web application → Summaries: edits summaries (evidence: `README.md`)
- Web application → Flashcards: reviews cards (evidence: `README.md`)
- Web application → Quizzes and simulations: takes quizzes and exams (evidence: `README.md`)
- Web application → Learning analytics: views progress (evidence: `README.md`)
- Web application → Podcast audio: plays generated audio (evidence: `README.md`)
