# sanikasurade/documind_ai_learning_assistant architecture

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

- Interactive diagram: https://gitdiagram.com/sanikasurade/documind_ai_learning_assistant
- Repository: https://github.com/sanikasurade/documind_ai_learning_assistant

## Overview

DocuMind turns uploaded study PDFs into saved, interactive learning material. The main workflow is learner → authenticated document upload and parsing → document workspace for chat, summaries, and explanations, or generated flashcards and quizzes. Separate branches handle account verification/profile and subscription upgrades. The backend controller-to-service links shown for AI and authentication are supported by sampled source; broader feature routing and UI-service wiring are represented only where documented, so unsampled call links are omitted.

Main entry points: [`frontend/src/App.jsx`](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/App.jsx) (App routes), [`backend/server.js`](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/server.js) (Express API), [`backend/controllers/aiController.js`](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/aiController.js) (AI controller), [`backend/controllers/authController.js`](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/authController.js) (Auth controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Learning interface"]
  node_app["App routes<br/>[App.jsx]"]
  node_workspace["Document workspace"]
  node_dashboard["Study dashboard<br/>[DashboardPage.jsx]"]
  node_cardsui["Flashcard study<br/>[FlashcardsPage.jsx]"]
  node_upgradeui["Upgrade screen<br/>[UpgradePage.jsx]"]
  node_authui["Authentication views"]
  node_authstate["Auth state<br/>[AuthContext.jsx]"]
  node_themes["Theme state<br/>[ThemeContext.jsx]"]
  node_webservices["HTTP services"]
end

subgraph group_api["API and identity"]
  node_server["Express API<br/>[server.js]"]
  node_authroutes["Auth routes<br/>[authRoutes.js]"]
  node_docroutes["Document routes<br/>[documentRoutes.js]"]
  node_airoutes["AI routes<br/>[aiRoutes.js]"]
  node_controllers["Feature controllers"]
  node_authcontroller["Auth controller<br/>[authController.js]"]
  node_doccontroller["Document controller"]
  node_aicontroller["AI controller<br/>[aiController.js]"]
end

subgraph group_learning["Study content"]
  node_pdf["PDF parsing<br/>[pdfService.js]"]
  node_gemini["Gemini learning service<br/>[geminiService.js]"]
  node_documents[("Study documents<br/>[Document.js]")]
  node_flashcards[("Flashcard sets<br/>[Flashcard.js]")]
  node_quizzes[("Quizzes and results<br/>[Quiz.js]")]
  node_results[("Quiz results<br/>[QuizResult.js]")]
end

subgraph group_platform["Accounts and plans"]
  node_users[("User accounts<br/>[User.js]")]
  node_otp[("Verification codes<br/>[OTP.js]")]
  node_payments["Payment controller"]
  node_email["Email delivery<br/>[emailService.js]"]
end

node_learner(("Learner"))
node_mongo[("MongoDB")]
node_geminisvc["Google Gemini"]
node_razorpay["Razorpay"]
node_mailprovider["Email provider"]

node_learner -->|"uses"| node_app
node_app -->|"routes to"| node_workspace
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_cardsui
node_app -->|"routes to"| node_upgradeui
node_app -->|"routes to"| node_authui
node_app -->|"reads state"| node_authstate
node_app -->|"uses state"| node_themes
node_webservices -->|"calls API"| node_server
node_server -->|"mounts routes"| node_authroutes
node_server -->|"mounts routes"| node_docroutes
node_server -->|"mounts routes"| node_airoutes
node_server -->|"mounts routes"| node_controllers
node_authroutes -->|"dispatches"| node_authcontroller
node_docroutes -->|"dispatches"| node_doccontroller
node_airoutes -->|"dispatches"| node_aicontroller
node_authcontroller -->|"reads/writes"| node_users
node_authcontroller -->|"sends OTP"| node_email
node_email -.->|"sends email"| node_mailprovider
node_doccontroller -->|"parses PDF"| node_pdf
node_doccontroller -->|"reads/writes"| node_documents
node_aicontroller -->|"loads context"| node_documents
node_aicontroller -->|"requests generation"| node_gemini
node_gemini -->|"calls model"| node_geminisvc
node_aicontroller -->|"saves sets"| node_flashcards
node_aicontroller -->|"saves quizzes"| node_quizzes
node_learner -->|"requests upgrade"| node_payments
node_payments -->|"creates order"| node_razorpay
node_payments -->|"updates plan"| node_users
node_users -->|"persists"| node_mongo
node_documents -->|"persists"| node_mongo
node_flashcards -->|"persists"| node_mongo
node_quizzes -->|"persists"| node_mongo
node_results -->|"persists"| node_mongo
node_otp -->|"persists"| node_mongo

click node_app "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/App.jsx"
click node_workspace "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/pages/DocumentWorkspacePage.jsx"
click node_dashboard "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/pages/DashboardPage.jsx"
click node_cardsui "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/pages/FlashcardsPage.jsx"
click node_upgradeui "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/pages/UpgradePage.jsx"
click node_authui "https://github.com/sanikasurade/documind_ai_learning_assistant/tree/main/frontend/src/pages"
click node_authstate "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/context/AuthContext.jsx"
click node_themes "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/context/ThemeContext.jsx"
click node_webservices "https://github.com/sanikasurade/documind_ai_learning_assistant/tree/main/frontend/src/services"
click node_server "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/server.js"
click node_authroutes "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/routes/authRoutes.js"
click node_docroutes "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/routes/documentRoutes.js"
click node_airoutes "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/routes/aiRoutes.js"
click node_controllers "https://github.com/sanikasurade/documind_ai_learning_assistant/tree/main/backend/controllers"
click node_authcontroller "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/authController.js"
click node_doccontroller "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/documentController.js"
click node_aicontroller "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/aiController.js"
click node_pdf "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/services/pdfService.js"
click node_gemini "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/services/geminiService.js"
click node_documents "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/Document.js"
click node_flashcards "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/Flashcard.js"
click node_quizzes "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/Quiz.js"
click node_results "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/QuizResult.js"
click node_users "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/User.js"
click node_otp "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/OTP.js"
click node_payments "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/paymentController.js"
click node_email "https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/services/emailService.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_app,node_workspace,node_dashboard,node_cardsui,node_upgradeui,node_authui,node_authstate,node_themes,node_webservices toneBlue
class node_server,node_authroutes,node_docroutes,node_airoutes,node_controllers,node_authcontroller,node_doccontroller,node_aicontroller,node_mongo toneAmber
class node_pdf,node_gemini,node_documents,node_flashcards,node_quizzes,node_results toneMint
class node_users,node_otp,node_payments,node_email toneRose
class node_learner,node_geminisvc,node_razorpay,node_mailprovider toneIndigo
```

## Components

### Learning interface

- [App routes](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Document workspace](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/pages/DocumentWorkspacePage.jsx): `frontend/src/pages/DocumentWorkspacePage.jsx`
- [Study dashboard](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/pages/DashboardPage.jsx): `frontend/src/pages/DashboardPage.jsx`
- [Flashcard study](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/pages/FlashcardsPage.jsx): `frontend/src/pages/FlashcardsPage.jsx`
- [Upgrade screen](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/pages/UpgradePage.jsx): `frontend/src/pages/UpgradePage.jsx`
- [Authentication views](https://github.com/sanikasurade/documind_ai_learning_assistant/tree/main/frontend/src/pages): `frontend/src/pages`
- [Auth state](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Theme state](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/frontend/src/context/ThemeContext.jsx): `frontend/src/context/ThemeContext.jsx`
- [HTTP services](https://github.com/sanikasurade/documind_ai_learning_assistant/tree/main/frontend/src/services): `frontend/src/services`

### API and identity

- [Express API](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/server.js): `backend/server.js`
- [Auth routes](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/routes/authRoutes.js): `backend/routes/authRoutes.js`
- [Document routes](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/routes/documentRoutes.js): `backend/routes/documentRoutes.js`
- [AI routes](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/routes/aiRoutes.js): `backend/routes/aiRoutes.js`
- [Feature controllers](https://github.com/sanikasurade/documind_ai_learning_assistant/tree/main/backend/controllers): `backend/controllers`
- [Auth controller](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/authController.js): `backend/controllers/authController.js`
- [Document controller](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/documentController.js): `backend/controllers/documentController.js`
- [AI controller](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/aiController.js): `backend/controllers/aiController.js`

### Study content

- [PDF parsing](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/services/pdfService.js): `backend/services/pdfService.js`
- [Gemini learning service](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/services/geminiService.js): `backend/services/geminiService.js`
- [Study documents](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/Document.js): `backend/models/Document.js`
- [Flashcard sets](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/Flashcard.js): `backend/models/Flashcard.js`
- [Quizzes and results](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/Quiz.js): `backend/models/Quiz.js`
- [Quiz results](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/QuizResult.js): `backend/models/QuizResult.js`

### Accounts and plans

- [User accounts](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/User.js): `backend/models/User.js`
- [Verification codes](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/models/OTP.js): `backend/models/OTP.js`
- [Payment controller](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/controllers/paymentController.js): `backend/controllers/paymentController.js`
- [Email delivery](https://github.com/sanikasurade/documind_ai_learning_assistant/blob/main/backend/services/emailService.js): `backend/services/emailService.js`

### Other components

- **Learner**
- **MongoDB**
- **Google Gemini**
- **Razorpay**
- **Email provider**

## Connections

- Learner → App routes: uses
- App routes → Document workspace: routes to
- App routes → Study dashboard: routes to
- App routes → Flashcard study: routes to
- App routes → Upgrade screen: routes to
- App routes → Authentication views: routes to
- App routes → Auth state: reads state
- App routes → Theme state: uses state
- HTTP services → Express API: calls API
- Express API → Auth routes: mounts routes
- Express API → Document routes: mounts routes
- Express API → AI routes: mounts routes
- Express API → Feature controllers: mounts routes
- Auth routes → Auth controller: dispatches
- Document routes → Document controller: dispatches
- AI routes → AI controller: dispatches
- Auth controller → User accounts: reads/writes
- Auth controller → Email delivery: sends OTP
- Email delivery → Email provider: sends email
- Document controller → PDF parsing: parses PDF
- Document controller → Study documents: reads/writes
- AI controller → Study documents: loads context
- AI controller → Gemini learning service: requests generation
- Gemini learning service → Google Gemini: calls model
- AI controller → Flashcard sets: saves sets
- AI controller → Quizzes and results: saves quizzes
- Learner → Payment controller: requests upgrade
- Payment controller → Razorpay: creates order
- Payment controller → User accounts: updates plan
- User accounts → MongoDB: persists
- Study documents → MongoDB: persists
- Flashcard sets → MongoDB: persists
- Quizzes and results → MongoDB: persists
- Quiz results → MongoDB: persists
- Verification codes → MongoDB: persists
