# phanikumar122/mentora architecture

> Architecture diagram of the GitHub repository phanikumar122/mentora, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/phanikumar122/mentora
- Repository: https://github.com/phanikumar122/mentora

## Overview

Mentora is a role-based academic portal for students, teachers, parents, and administrators. Users sign in, receive role-specific dashboards, then manage academic records or use shared learning features; requests cross a React API client into Spring REST controllers and persist through repositories. Real-time chat is a separate WebSocket path. The README documents the broader product capabilities; sampled source confirms selected authentication, attendance, materials, and messaging behavior, so unsampled controller-to-storage wiring is not expanded.

Main entry points: [`mentora-frontend/src/services/api.ts`](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/services/api.ts) (API client), [`mentora-frontend/src/App.tsx`](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/App.tsx) (Routes and dashboards), [`mentora-backend/src/main/java/com/mentora/controller/ChatController.java`](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/ChatController.java) (Real-time messaging), [`mentora-backend/src/main/java/com/mentora/controller/AuthController.java`](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AuthController.java) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web Client"]
  node_app["Routes and dashboards<br/>[App.tsx]"]
  node_authui["Login and session<br/>[Login.tsx]"]
  node_api["API client<br/>[api.ts]"]
  node_adminui["Admin portal<br/>[AdminUsers.tsx]"]
  node_studentui["Student portal"]
  node_teacherui["Teacher portal"]
  node_parentui["Parent portal"]
  node_sharedui["Shared learning pages"]
end

subgraph group_identity["Identity and Access"]
  node_authcontext["Auth state<br/>[AuthContext.tsx]"]
  node_authcontroller["Authentication API"]
  node_security["JWT security<br/>[JwtAuthFilter.java]"]
  node_userdetails["User lookup"]
  node_usersrepo["User records"]
end

subgraph group_academics["Academic Operations"]
  node_academic["Academic structure"]
  node_usersapi["User administration"]
  node_assignments["Assignments and grades"]
  node_attendance["Attendance analytics"]
  node_attendrepo["Attendance records"]
end

subgraph group_learning["Learning and Community"]
  node_announcements["Notice board"]
  node_materials["Study materials"]
  node_materialrepo["Material records"]
  node_forum["Discussion forum"]
  node_chat["Real-time messaging"]
  node_chatrepo["Message records"]
  node_wsconfig["WebSocket transport"]
end

node_users(("Portal users"))
node_database[("Relational database")]
node_classroom(("STOMP clients"))

node_users -->|"use portal"| node_app
node_app -->|"route login"| node_authui
node_app -->|"route by role"| node_studentui
node_app -->|"route by role"| node_teacherui
node_app -->|"route by role"| node_parentui
node_app -->|"route by role"| node_adminui
node_app -->|"route features"| node_sharedui
node_authui -->|"submit credentials"| node_authcontext
node_authcontext -->|"request login"| node_api
node_api -->|"HTTP requests"| node_authcontroller
node_authcontroller -->|"authenticate user"| node_userdetails
node_userdetails -->|"load account"| node_usersrepo
node_usersrepo -->|"read users"| node_database
node_authcontroller -->|"register account"| node_usersrepo
node_api -->|"send bearer token"| node_security
node_studentui -->|"fetch academic data"| node_api
node_teacherui -->|"manage classes"| node_api
node_parentui -->|"view ward data"| node_api
node_adminui -->|"manage users"| node_api
node_sharedui -->|"use learning features"| node_api
node_api -->|"HTTP requests"| node_academic
node_api -->|"HTTP requests"| node_usersapi
node_api -->|"HTTP requests"| node_assignments
node_api -->|"HTTP requests"| node_attendance
node_api -->|"HTTP requests"| node_announcements
node_api -->|"HTTP requests"| node_materials
node_api -->|"HTTP requests"| node_forum
node_api -->|"HTTP messages"| node_chat
node_attendance -->|"save and query"| node_attendrepo
node_attendrepo -->|"read and write"| node_database
node_materials -->|"save and retrieve"| node_materialrepo
node_materialrepo -->|"read and write"| node_database
node_chat -->|"persist messages"| node_chatrepo
node_chatrepo -->|"read and write"| node_database
node_classroom -->|"connect STOMP"| node_wsconfig
node_wsconfig -->|"dispatch messages"| node_chat
node_chat -->|"broadcast messages"| node_classroom

click node_app "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/App.tsx"
click node_authui "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/auth/Login.tsx"
click node_api "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/services/api.ts"
click node_adminui "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/admin/AdminUsers.tsx"
click node_studentui "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/student/StudentDashboard.tsx"
click node_teacherui "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/teacher/TeacherDashboard.tsx"
click node_parentui "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/parent/ParentDashboard.tsx"
click node_sharedui "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/shared/AssignmentsPage.tsx"
click node_authcontext "https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/context/AuthContext.tsx"
click node_authcontroller "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AuthController.java"
click node_security "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/security/JwtAuthFilter.java"
click node_userdetails "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/security/UserDetailsServiceImpl.java"
click node_usersrepo "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/repository/UserRepository.java"
click node_academic "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AcademicController.java"
click node_usersapi "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/UserController.java"
click node_assignments "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AssignmentController.java"
click node_attendance "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AttendanceController.java"
click node_attendrepo "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/repository/AttendanceRepository.java"
click node_announcements "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AnnouncementController.java"
click node_materials "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/StudyMaterialController.java"
click node_materialrepo "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/repository/StudyMaterialRepository.java"
click node_forum "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/DiscussionController.java"
click node_chat "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/ChatController.java"
click node_chatrepo "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/repository/ChatMessageRepository.java"
click node_wsconfig "https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/config/WebSocketConfig.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_app,node_authui,node_api,node_adminui,node_studentui,node_teacherui,node_parentui,node_sharedui,node_users,node_classroom toneBlue
class node_authcontext,node_authcontroller,node_security,node_userdetails,node_usersrepo,node_database toneAmber
class node_academic,node_usersapi,node_assignments,node_attendance,node_attendrepo toneMint
class node_announcements,node_materials,node_materialrepo,node_forum,node_chat,node_chatrepo,node_wsconfig toneRose
```

## Components

### Web Client

- [Routes and dashboards](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/App.tsx): `mentora-frontend/src/App.tsx`
- [Login and session](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/auth/Login.tsx): `mentora-frontend/src/pages/auth/Login.tsx`
- [API client](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/services/api.ts): `mentora-frontend/src/services/api.ts`
- [Admin portal](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/admin/AdminUsers.tsx): `mentora-frontend/src/pages/admin/AdminUsers.tsx`
- [Student portal](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/student/StudentDashboard.tsx): `mentora-frontend/src/pages/student/StudentDashboard.tsx`
- [Teacher portal](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/teacher/TeacherDashboard.tsx): `mentora-frontend/src/pages/teacher/TeacherDashboard.tsx`
- [Parent portal](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/parent/ParentDashboard.tsx): `mentora-frontend/src/pages/parent/ParentDashboard.tsx`
- [Shared learning pages](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/pages/shared/AssignmentsPage.tsx): `mentora-frontend/src/pages/shared/AssignmentsPage.tsx`

### Identity and Access

- [Auth state](https://github.com/phanikumar122/mentora/blob/main/mentora-frontend/src/context/AuthContext.tsx): `mentora-frontend/src/context/AuthContext.tsx`
- [Authentication API](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AuthController.java): `mentora-backend/src/main/java/com/mentora/controller/AuthController.java`
- [JWT security](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/security/JwtAuthFilter.java): `mentora-backend/src/main/java/com/mentora/security/JwtAuthFilter.java`
- [User lookup](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/security/UserDetailsServiceImpl.java): `mentora-backend/src/main/java/com/mentora/security/UserDetailsServiceImpl.java`
- [User records](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/repository/UserRepository.java): `mentora-backend/src/main/java/com/mentora/repository/UserRepository.java`

### Academic Operations

- [Academic structure](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AcademicController.java): `mentora-backend/src/main/java/com/mentora/controller/AcademicController.java`
- [User administration](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/UserController.java): `mentora-backend/src/main/java/com/mentora/controller/UserController.java`
- [Assignments and grades](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AssignmentController.java): `mentora-backend/src/main/java/com/mentora/controller/AssignmentController.java`
- [Attendance analytics](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AttendanceController.java): `mentora-backend/src/main/java/com/mentora/controller/AttendanceController.java`
- [Attendance records](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/repository/AttendanceRepository.java): `mentora-backend/src/main/java/com/mentora/repository/AttendanceRepository.java`

### Learning and Community

- [Notice board](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/AnnouncementController.java): `mentora-backend/src/main/java/com/mentora/controller/AnnouncementController.java`
- [Study materials](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/StudyMaterialController.java): `mentora-backend/src/main/java/com/mentora/controller/StudyMaterialController.java`
- [Material records](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/repository/StudyMaterialRepository.java): `mentora-backend/src/main/java/com/mentora/repository/StudyMaterialRepository.java`
- [Discussion forum](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/DiscussionController.java): `mentora-backend/src/main/java/com/mentora/controller/DiscussionController.java`
- [Real-time messaging](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/controller/ChatController.java): `mentora-backend/src/main/java/com/mentora/controller/ChatController.java`
- [Message records](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/repository/ChatMessageRepository.java): `mentora-backend/src/main/java/com/mentora/repository/ChatMessageRepository.java`
- [WebSocket transport](https://github.com/phanikumar122/mentora/blob/main/mentora-backend/src/main/java/com/mentora/config/WebSocketConfig.java): `mentora-backend/src/main/java/com/mentora/config/WebSocketConfig.java`

### Other components

- **Portal users**
- **Relational database**
- **STOMP clients**

## Connections

- Portal users → Routes and dashboards: use portal
- Routes and dashboards → Login and session: route login
- Routes and dashboards → Student portal: route by role
- Routes and dashboards → Teacher portal: route by role
- Routes and dashboards → Parent portal: route by role
- Routes and dashboards → Admin portal: route by role
- Routes and dashboards → Shared learning pages: route features
- Login and session → Auth state: submit credentials
- Auth state → API client: request login
- API client → Authentication API: HTTP requests
- Authentication API → User lookup: authenticate user
- User lookup → User records: load account
- User records → Relational database: read users
- Authentication API → User records: register account
- API client → JWT security: send bearer token
- Student portal → API client: fetch academic data
- Teacher portal → API client: manage classes
- Parent portal → API client: view ward data
- Admin portal → API client: manage users
- Shared learning pages → API client: use learning features
- API client → Academic structure: HTTP requests
- API client → User administration: HTTP requests
- API client → Assignments and grades: HTTP requests
- API client → Attendance analytics: HTTP requests
- API client → Notice board: HTTP requests
- API client → Study materials: HTTP requests
- API client → Discussion forum: HTTP requests
- API client → Real-time messaging: HTTP messages
- Attendance analytics → Attendance records: save and query
- Attendance records → Relational database: read and write
- Study materials → Material records: save and retrieve
- Material records → Relational database: read and write
- Real-time messaging → Message records: persist messages
- Message records → Relational database: read and write
- STOMP clients → WebSocket transport: connect STOMP
- WebSocket transport → Real-time messaging: dispatch messages
- Real-time messaging → STOMP clients: broadcast messages
