# vamsikrishna070/study architecture

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

- Interactive diagram: https://gitdiagram.com/vamsikrishna070/study
- Repository: https://github.com/vamsikrishna070/study

## Overview

StudyArena is an academic workspace for planning coursework, studying, and monitoring academic progress. Students use the web or mobile app to manage subjects, notes and resources, tasks and exams, study sessions, and reminders; the clients call the Express API, whose route handlers and services operate on MongoDB-backed records. SRM portal integration adds attendance, timetable, and calendar data. Syllabus parsing is represented as a distinct backend capability based on the source tree; its internal wiring was not sampled. The README documents Cloudinary file storage and web push.

Main entry points: [`backend/routes/index.js`](https://github.com/vamsikrishna070/study/blob/main/backend/routes/index.js) (API routes), [`backend/models`](https://github.com/vamsikrishna070/study/tree/main/backend/models) (Academic records), [`backend/controllers/authController.js`](https://github.com/vamsikrishna070/study/blob/main/backend/controllers/authController.js) (Authentication), [`backend/controllers/studyController.js`](https://github.com/vamsikrishna070/study/blob/main/backend/controllers/studyController.js) (Academic workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Student clients"]
  node_web["Web app<br/>[App.jsx]"]
  node_mobile["Mobile app<br/>[App.js]"]
  node_webapi["Web API client<br/>[apiClient.js]"]
  node_mobileapi["Mobile API client<br/>[client.js]"]
end

subgraph group_api["API and identity"]
  node_apiapp["Express API<br/>[app.js]"]
  node_routes["API routes<br/>[index.js]"]
  node_auth["Authentication<br/>[authController.js]"]
  node_authservice["Token and email<br/>[emailService.js]"]
end

subgraph group_learning["Study workspace"]
  node_workspace["Academic workspace<br/>[studyController.js]"]
  node_reminders["Reminder management<br/>[reminderRoutes.js]"]
  node_scheduler["Reminder processing"]
  node_syllabus["Syllabus extraction"]
end

subgraph group_integrations["Academic integrations"]
  node_portalcontroller["Portal API"]
  node_portalservice["SRM portal service"]
  node_attendance["Attendance service"]
end

subgraph group_state["Persistence and delivery"]
  node_models[("Academic records")]
  node_portalmodel[("Portal account")]
  node_cloudinary[("Cloudinary storage")]
  node_push["Web push"]
end

node_student(("Student"))
node_email["Email provider"]
node_srm["SRM portal"]

node_student -->|"uses"| node_web
node_student -->|"uses"| node_mobile
node_web -->|"requests data"| node_webapi
node_mobile -->|"requests data"| node_mobileapi
node_webapi -->|"sends requests"| node_apiapp
node_mobileapi -->|"sends requests"| node_apiapp
node_apiapp -->|"dispatches"| node_routes
node_routes -->|"routes auth"| node_auth
node_auth -->|"sends email"| node_authservice
node_auth -->|"reads and writes"| node_models
node_routes -->|"routes study APIs"| node_workspace
node_workspace -->|"reads and writes"| node_models
node_routes -->|"routes reminders"| node_reminders
node_reminders -->|"reads and writes"| node_models
node_scheduler -->|"loads reminders"| node_models
node_scheduler -->|"dispatches notifications"| node_push
node_syllabus -.->|"stores extracted data"| node_models
node_routes -->|"routes portal APIs"| node_portalcontroller
node_portalcontroller -->|"requests portal data"| node_portalservice
node_portalcontroller -->|"requests attendance data"| node_attendance
node_portalservice -->|"reads and writes"| node_portalmodel
node_attendance -->|"reads and writes"| node_portalmodel
node_portalservice -->|"scrapes portal data"| node_srm
node_attendance -->|"requests attendance"| node_srm
node_push -.->|"sends notifications"| node_student
node_authservice -.->|"sends messages"| node_email
node_workspace -.->|"uploads files"| node_cloudinary

click node_web "https://github.com/vamsikrishna070/study/blob/main/frontend/src/App.jsx"
click node_mobile "https://github.com/vamsikrishna070/study/blob/main/mobile/App.js"
click node_webapi "https://github.com/vamsikrishna070/study/blob/main/frontend/src/services/apiClient.js"
click node_mobileapi "https://github.com/vamsikrishna070/study/blob/main/mobile/src/api/client.js"
click node_apiapp "https://github.com/vamsikrishna070/study/blob/main/backend/app.js"
click node_routes "https://github.com/vamsikrishna070/study/blob/main/backend/routes/index.js"
click node_auth "https://github.com/vamsikrishna070/study/blob/main/backend/controllers/authController.js"
click node_authservice "https://github.com/vamsikrishna070/study/blob/main/backend/services/emailService.js"
click node_workspace "https://github.com/vamsikrishna070/study/blob/main/backend/controllers/studyController.js"
click node_reminders "https://github.com/vamsikrishna070/study/blob/main/backend/routes/reminderRoutes.js"
click node_scheduler "https://github.com/vamsikrishna070/study/blob/main/backend/jobs/processReminders.js"
click node_syllabus "https://github.com/vamsikrishna070/study/blob/main/backend/services/syllabusExtractorService.js"
click node_portalcontroller "https://github.com/vamsikrishna070/study/blob/main/backend/controllers/portal/portalController.js"
click node_portalservice "https://github.com/vamsikrishna070/study/blob/main/backend/services/portal/srmPortalService.js"
click node_attendance "https://github.com/vamsikrishna070/study/blob/main/backend/services/portal/srmAttendanceService.js"
click node_models "https://github.com/vamsikrishna070/study/tree/main/backend/models"
click node_portalmodel "https://github.com/vamsikrishna070/study/blob/main/backend/models/SrmPortalAccount.js"
click node_push "https://github.com/vamsikrishna070/study/blob/main/backend/services/notificationService.js"

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,node_mobile,node_webapi,node_mobileapi toneBlue
class node_apiapp,node_routes,node_auth,node_authservice toneAmber
class node_workspace,node_reminders,node_scheduler,node_syllabus toneMint
class node_portalcontroller,node_portalservice,node_attendance toneRose
class node_models,node_portalmodel,node_cloudinary,node_push,node_student,node_email,node_srm toneIndigo
```

## Components

### Student clients

- [Web app](https://github.com/vamsikrishna070/study/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Mobile app](https://github.com/vamsikrishna070/study/blob/main/mobile/App.js): `mobile/App.js`
- [Web API client](https://github.com/vamsikrishna070/study/blob/main/frontend/src/services/apiClient.js): `frontend/src/services/apiClient.js`
- [Mobile API client](https://github.com/vamsikrishna070/study/blob/main/mobile/src/api/client.js): `mobile/src/api/client.js`

### API and identity

- [Express API](https://github.com/vamsikrishna070/study/blob/main/backend/app.js): `backend/app.js`
- [API routes](https://github.com/vamsikrishna070/study/blob/main/backend/routes/index.js): `backend/routes/index.js`
- [Authentication](https://github.com/vamsikrishna070/study/blob/main/backend/controllers/authController.js): `backend/controllers/authController.js`
- [Token and email](https://github.com/vamsikrishna070/study/blob/main/backend/services/emailService.js): `backend/services/emailService.js`

### Study workspace

- [Academic workspace](https://github.com/vamsikrishna070/study/blob/main/backend/controllers/studyController.js): `backend/controllers/studyController.js`
- [Reminder management](https://github.com/vamsikrishna070/study/blob/main/backend/routes/reminderRoutes.js): `backend/routes/reminderRoutes.js`
- [Reminder processing](https://github.com/vamsikrishna070/study/blob/main/backend/jobs/processReminders.js): `backend/jobs/processReminders.js`
- [Syllabus extraction](https://github.com/vamsikrishna070/study/blob/main/backend/services/syllabusExtractorService.js): `backend/services/syllabusExtractorService.js`

### Academic integrations

- [Portal API](https://github.com/vamsikrishna070/study/blob/main/backend/controllers/portal/portalController.js): `backend/controllers/portal/portalController.js`
- [SRM portal service](https://github.com/vamsikrishna070/study/blob/main/backend/services/portal/srmPortalService.js): `backend/services/portal/srmPortalService.js`
- [Attendance service](https://github.com/vamsikrishna070/study/blob/main/backend/services/portal/srmAttendanceService.js): `backend/services/portal/srmAttendanceService.js`

### Persistence and delivery

- [Academic records](https://github.com/vamsikrishna070/study/tree/main/backend/models): `backend/models`
- [Portal account](https://github.com/vamsikrishna070/study/blob/main/backend/models/SrmPortalAccount.js): `backend/models/SrmPortalAccount.js`
- **Cloudinary storage**
- [Web push](https://github.com/vamsikrishna070/study/blob/main/backend/services/notificationService.js): `backend/services/notificationService.js`

### Other components

- **Student**
- **Email provider**
- **SRM portal**

## Connections

- Student → Web app: uses
- Student → Mobile app: uses
- Web app → Web API client: requests data
- Mobile app → Mobile API client: requests data
- Web API client → Express API: sends requests
- Mobile API client → Express API: sends requests
- Express API → API routes: dispatches
- API routes → Authentication: routes auth
- Authentication → Token and email: sends email
- Authentication → Academic records: reads and writes
- API routes → Academic workspace: routes study APIs
- Academic workspace → Academic records: reads and writes
- API routes → Reminder management: routes reminders
- Reminder management → Academic records: reads and writes
- Reminder processing → Academic records: loads reminders
- Reminder processing → Web push: dispatches notifications
- Syllabus extraction → Academic records: stores extracted data
- API routes → Portal API: routes portal APIs
- Portal API → SRM portal service: requests portal data
- Portal API → Attendance service: requests attendance data
- SRM portal service → Portal account: reads and writes
- Attendance service → Portal account: reads and writes
- SRM portal service → SRM portal: scrapes portal data
- Attendance service → SRM portal: requests attendance
- Web push → Student: sends notifications
- Token and email → Email provider: sends messages
- Academic workspace → Cloudinary storage: uploads files
