# lokessharma440-ux/rag architecture

> Architecture diagram of the GitHub repository lokessharma440-ux/rag, 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/lokessharma440-ux/rag
- Repository: https://github.com/lokessharma440-ux/rag

## Overview

DocuMind AI combines document-grounded chat with a codebase analysis and auditing product exposed through the same web application. Users upload documents or connect/import a repository, then query the indexed material or inspect analysis results and generated documentation. The document path is described in the README; codebase routing and several service calls are supported by the sampled route excerpts and SOURCE INDEX. Many implementation details were not sampled, so uncertain internal links are omitted.

Main entry points: [`backend/services/documentService.js`](https://github.com/lokessharma440-ux/rag/blob/main/backend/services/documentService.js) (Document Service), [`backend/routes/codebaseRoutes.js`](https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/codebaseRoutes.js) (Codebase Routes), [`backend/config/db.js`](https://github.com/lokessharma440-ux/rag/blob/main/backend/config/db.js) (MongoDB), [`frontend/src/App.jsx`](https://github.com/lokessharma440-ux/rag/blob/main/frontend/src/App.jsx) (Application UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web Client"]
  node_app["Application UI<br/>[App.jsx]"]
  node_doc_views["Document Views<br/>[DocumentsView.jsx]"]
  node_analysis_views["Analysis Views"]
end

subgraph group_api["Backend API"]
  node_server["Express Server<br/>[server.js]"]
  node_document_routes["Document Routes<br/>[documentRoutes.js]"]
  node_chat_routes["Chat Routes<br/>[chatRoutes.js]"]
  node_codebase_routes["Codebase Routes<br/>[codebaseRoutes.js]"]
  node_audit_routes["Audit Routes<br/>[auditRoutes.js]"]
end

subgraph group_documents["Document RAG"]
  node_document_service["Document Service<br/>[documentService.js]"]
  node_text_processing["Text Chunking"]
  node_embeddings["Local Embeddings"]
  node_vector_search["Vector Search<br/>[vectorStore.js]"]
  node_query_rewriting["Query Rewriting<br/>[queryRewriter.js]"]
  node_answer_generation["Answer Generation<br/>[geminiGenerator.js]"]
end

subgraph group_codebase["Codebase Intelligence"]
  node_github_service["GitHub Import<br/>[githubService.js]"]
  node_repository_indexing["Repository Indexing"]
  node_codebase_retrieval["Code Retrieval"]
  node_codebase_audit["Codebase Audit"]
  node_documentation["Documentation Tools"]
end

subgraph group_data["Persistent Data"]
  node_mongo[("MongoDB<br/>[db.js]")]
  node_documents_model[("Documents<br/>[Document.js]")]
  node_chunks_model[("Document Chunks<br/>[DocumentChunk.js]")]
  node_codebase_model[("Codebase Records<br/>[Codebase.js]")]
  node_repository_files[("Repository Files<br/>[RepositoryFile.js]")]
  node_analysis_model[("Analysis Results")]
end

node_user(("User"))
node_gemini["Gemini API"]
node_github["GitHub Repository"]

node_user -->|"uses"| node_app
node_app -->|"uploads and manages"| node_document_routes
node_app -->|"asks questions"| node_chat_routes
node_app -.->|"repository actions"| node_codebase_routes
node_app -.->|"audit actions"| node_audit_routes
node_server -->|"routes to"| node_document_routes
node_server -->|"routes to"| node_chat_routes
node_server -->|"routes to"| node_codebase_routes
node_server -->|"routes to"| node_audit_routes
node_document_routes -->|"delegates to"| node_document_service
node_chat_routes -->|"queries through"| node_document_service
node_document_service -->|"chunks text"| node_text_processing
node_document_service -->|"generates vectors"| node_embeddings
node_document_service -->|"rewrites queries"| node_query_rewriting
node_document_service -->|"retrieves matches"| node_vector_search
node_document_service -->|"requests grounded answer"| node_answer_generation
node_answer_generation -->|"sends grounded prompt"| node_gemini
node_document_service -->|"stores documents"| node_documents_model
node_document_service -->|"stores vectors"| node_chunks_model
node_codebase_routes -->|"fetches repository metadata"| node_github_service
node_github_service -.->|"reads repository"| node_github
node_codebase_routes -->|"indexes repository"| node_repository_indexing
node_codebase_routes -->|"queries codebase"| node_codebase_retrieval
node_codebase_routes -->|"manages repository"| node_codebase_model
node_codebase_routes -->|"uses file records"| node_repository_files
node_codebase_routes -->|"runs audit"| node_codebase_audit
node_audit_routes -->|"builds inventory"| node_documentation
node_audit_routes -->|"reads analysis status"| node_analysis_model
node_mongo -.->|"persists"| node_documents_model
node_mongo -.->|"persists"| node_chunks_model
node_mongo -.->|"persists"| node_codebase_model
node_mongo -.->|"persists"| node_repository_files
node_mongo -.->|"persists"| node_analysis_model

click node_app "https://github.com/lokessharma440-ux/rag/blob/main/frontend/src/App.jsx"
click node_doc_views "https://github.com/lokessharma440-ux/rag/blob/main/frontend/src/components/DocumentsView.jsx"
click node_analysis_views "https://github.com/lokessharma440-ux/rag/blob/main/frontend/src/components/AnalysesChatView.jsx"
click node_server "https://github.com/lokessharma440-ux/rag/blob/main/backend/server.js"
click node_document_routes "https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/documentRoutes.js"
click node_chat_routes "https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/chatRoutes.js"
click node_codebase_routes "https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/codebaseRoutes.js"
click node_audit_routes "https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/auditRoutes.js"
click node_document_service "https://github.com/lokessharma440-ux/rag/blob/main/backend/services/documentService.js"
click node_text_processing "https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/documentProcessor.js"
click node_embeddings "https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/embeddingGenerator.js"
click node_vector_search "https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/vectorStore.js"
click node_query_rewriting "https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/queryRewriter.js"
click node_answer_generation "https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/geminiGenerator.js"
click node_github_service "https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/githubService.js"
click node_repository_indexing "https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/codebaseIndexingService.js"
click node_codebase_retrieval "https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/codebaseRetrievalService.js"
click node_codebase_audit "https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/codebaseAuditService.js"
click node_documentation "https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/documentationInventoryService.js"
click node_mongo "https://github.com/lokessharma440-ux/rag/blob/main/backend/config/db.js"
click node_documents_model "https://github.com/lokessharma440-ux/rag/blob/main/backend/models/Document.js"
click node_chunks_model "https://github.com/lokessharma440-ux/rag/blob/main/backend/models/DocumentChunk.js"
click node_codebase_model "https://github.com/lokessharma440-ux/rag/blob/main/backend/models/Codebase.js"
click node_repository_files "https://github.com/lokessharma440-ux/rag/blob/main/backend/models/RepositoryFile.js"
click node_analysis_model "https://github.com/lokessharma440-ux/rag/blob/main/backend/models/RepositoryAnalysis.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_doc_views,node_analysis_views,node_user toneBlue
class node_server,node_document_routes,node_chat_routes,node_codebase_routes,node_audit_routes toneAmber
class node_document_service,node_text_processing,node_embeddings,node_vector_search,node_query_rewriting,node_answer_generation,node_gemini toneMint
class node_github_service,node_repository_indexing,node_codebase_retrieval,node_codebase_audit,node_documentation toneRose
class node_mongo,node_documents_model,node_chunks_model,node_codebase_model,node_repository_files,node_analysis_model,node_github toneIndigo
```

## Components

### Web Client

- [Application UI](https://github.com/lokessharma440-ux/rag/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Document Views](https://github.com/lokessharma440-ux/rag/blob/main/frontend/src/components/DocumentsView.jsx): `frontend/src/components/DocumentsView.jsx`
- [Analysis Views](https://github.com/lokessharma440-ux/rag/blob/main/frontend/src/components/AnalysesChatView.jsx): `frontend/src/components/AnalysesChatView.jsx`

### Backend API

- [Express Server](https://github.com/lokessharma440-ux/rag/blob/main/backend/server.js): `backend/server.js`
- [Document Routes](https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/documentRoutes.js): `backend/routes/documentRoutes.js`
- [Chat Routes](https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/chatRoutes.js): `backend/routes/chatRoutes.js`
- [Codebase Routes](https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/codebaseRoutes.js): `backend/routes/codebaseRoutes.js`
- [Audit Routes](https://github.com/lokessharma440-ux/rag/blob/main/backend/routes/auditRoutes.js): `backend/routes/auditRoutes.js`

### Document RAG

- [Document Service](https://github.com/lokessharma440-ux/rag/blob/main/backend/services/documentService.js): `backend/services/documentService.js`
- [Text Chunking](https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/documentProcessor.js): `backend/RAG/documentProcessor.js`
- [Local Embeddings](https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/embeddingGenerator.js): `backend/RAG/embeddingGenerator.js`
- [Vector Search](https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/vectorStore.js): `backend/RAG/vectorStore.js`
- [Query Rewriting](https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/queryRewriter.js): `backend/RAG/queryRewriter.js`
- [Answer Generation](https://github.com/lokessharma440-ux/rag/blob/main/backend/RAG/geminiGenerator.js): `backend/RAG/geminiGenerator.js`

### Codebase Intelligence

- [GitHub Import](https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/githubService.js): `backend/services/codebase/githubService.js`
- [Repository Indexing](https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/codebaseIndexingService.js): `backend/services/codebase/codebaseIndexingService.js`
- [Code Retrieval](https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/codebaseRetrievalService.js): `backend/services/codebase/codebaseRetrievalService.js`
- [Codebase Audit](https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/codebaseAuditService.js): `backend/services/codebase/codebaseAuditService.js`
- [Documentation Tools](https://github.com/lokessharma440-ux/rag/blob/main/backend/services/codebase/documentationInventoryService.js): `backend/services/codebase/documentationInventoryService.js`

### Persistent Data

- [MongoDB](https://github.com/lokessharma440-ux/rag/blob/main/backend/config/db.js): `backend/config/db.js`
- [Documents](https://github.com/lokessharma440-ux/rag/blob/main/backend/models/Document.js): `backend/models/Document.js`
- [Document Chunks](https://github.com/lokessharma440-ux/rag/blob/main/backend/models/DocumentChunk.js): `backend/models/DocumentChunk.js`
- [Codebase Records](https://github.com/lokessharma440-ux/rag/blob/main/backend/models/Codebase.js): `backend/models/Codebase.js`
- [Repository Files](https://github.com/lokessharma440-ux/rag/blob/main/backend/models/RepositoryFile.js): `backend/models/RepositoryFile.js`
- [Analysis Results](https://github.com/lokessharma440-ux/rag/blob/main/backend/models/RepositoryAnalysis.js): `backend/models/RepositoryAnalysis.js`

### Other components

- **User**
- **Gemini API**
- **GitHub Repository**

## Connections

- User → Application UI: uses (evidence: `README.md`)
- Application UI → Document Routes: uploads and manages (evidence: `frontend/src/App.jsx`)
- Application UI → Chat Routes: asks questions (evidence: `README.md`)
- Application UI → Codebase Routes: repository actions
- Application UI → Audit Routes: audit actions
- Express Server → Document Routes: routes to (evidence: `backend/server.js`)
- Express Server → Chat Routes: routes to (evidence: `backend/server.js`)
- Express Server → Codebase Routes: routes to (evidence: `backend/server.js`)
- Express Server → Audit Routes: routes to (evidence: `backend/server.js`)
- Document Routes → Document Service: delegates to (evidence: `backend/routes/documentRoutes.js`)
- Chat Routes → Document Service: queries through (evidence: `backend/routes/chatRoutes.js`)
- Document Service → Text Chunking: chunks text (evidence: `README.md`)
- Document Service → Local Embeddings: generates vectors (evidence: `backend/services/documentService.js`)
- Document Service → Query Rewriting: rewrites queries (evidence: `backend/services/documentService.js`)
- Document Service → Vector Search: retrieves matches (evidence: `README.md`)
- Document Service → Answer Generation: requests grounded answer (evidence: `backend/services/documentService.js`)
- Answer Generation → Gemini API: sends grounded prompt (evidence: `README.md`)
- Document Service → Documents: stores documents (evidence: `backend/services/documentService.js`)
- Document Service → Document Chunks: stores vectors (evidence: `backend/services/documentService.js`)
- Codebase Routes → GitHub Import: fetches repository metadata (evidence: `backend/routes/codebaseRoutes.js`)
- GitHub Import → GitHub Repository: reads repository
- Codebase Routes → Repository Indexing: indexes repository (evidence: `backend/routes/codebaseRoutes.js`)
- Codebase Routes → Code Retrieval: queries codebase (evidence: `backend/routes/codebaseRoutes.js`)
- Codebase Routes → Codebase Records: manages repository (evidence: `backend/routes/codebaseRoutes.js`)
- Codebase Routes → Repository Files: uses file records (evidence: `backend/routes/codebaseRoutes.js`)
- Codebase Routes → Codebase Audit: runs audit
- Audit Routes → Documentation Tools: builds inventory (evidence: `backend/routes/auditRoutes.js`)
- Audit Routes → Analysis Results: reads analysis status (evidence: `backend/routes/auditRoutes.js`)
- MongoDB → Documents: persists
- MongoDB → Document Chunks: persists
- MongoDB → Codebase Records: persists
- MongoDB → Repository Files: persists
- MongoDB → Analysis Results: persists
