# itzqingyu/rag-project architecture

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

- Interactive diagram: https://gitdiagram.com/itzqingyu/rag-project
- Repository: https://github.com/itzqingyu/rag-project

## Overview

DASH is a desktop event-management and knowledge-support application. Users manage event stages and records, upload/search documents through chat, or extract meeting minutes for review and commit. The README documents additional dashboard capabilities whose individual implementations were not sampled; those are represented at their existing directory paths. Backend endpoint wiring is shown where supported by excerpts or the documented architecture.

Main entry points: [`python/src/dash_backend/main.py`](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/main.py) (REST endpoints), [`react/src/App.tsx`](https://github.com/itzqingyu/rag-project/blob/main/react/src/App.tsx) (DASH workspace), [`react/src/api/apiClient.ts`](https://github.com/itzqingyu/rag-project/blob/main/react/src/api/apiClient.ts) (HTTP client), [`python/src/dash_backend/ai_services/rag_engine.py`](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/ai_services/rag_engine.py) (Document retrieval)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop interface"]
  node_app["DASH workspace<br/>[App.tsx]"]
  node_dash_views["Event dashboard"]
  node_chat_view["Chat panel<br/>[ChatPanel.tsx]"]
  node_extract_view["Extraction review"]
  node_doc_view["Document manager<br/>[DocumentDrawer.tsx]"]
end

subgraph group_api["HTTP client services"]
  node_activity_api["Activity service<br/>[activityApi.ts]"]
  node_chat_api["Chat service<br/>[chatService.ts]"]
  node_doc_api["Document service<br/>[documentService.ts]"]
  node_extract_api["Extraction service"]
  node_http["HTTP client<br/>[apiClient.ts]"]
end

subgraph group_backend["Backend workflows"]
  node_fastapi["REST endpoints<br/>[main.py]"]
  node_activity_logic["Event records"]
  node_rag["Document retrieval<br/>[rag_engine.py]"]
  node_converter["Format conversion<br/>[converter.py]"]
  node_llm["LLM operations<br/>[llm_service.py]"]
end

subgraph group_storage["Local data and models"]
  node_sqlite[("SQLite records<br/>[database.py]")]
  node_vectors[("Chroma vectors<br/>[database.py]")]
  node_markdown["Markdown repository<br/>[converter.py]"]
end

node_user(("Team member"))
node_model_provider{{"LLM provider"}}

node_user -->|"uses"| node_app
node_app -->|"shows"| node_dash_views
node_app -->|"shows"| node_chat_view
node_app -->|"shows"| node_extract_view
node_app -->|"shows"| node_doc_view
node_dash_views -->|"requests records"| node_activity_api
node_chat_view -->|"sends messages"| node_chat_api
node_doc_view -->|"manages files"| node_doc_api
node_extract_view -->|"extracts and commits"| node_extract_api
node_activity_api -->|"calls"| node_http
node_chat_api -->|"calls"| node_http
node_doc_api -->|"calls"| node_http
node_extract_api -->|"calls"| node_http
node_http -->|"HTTP requests"| node_fastapi
node_fastapi -->|"dispatches records"| node_activity_logic
node_activity_logic -->|"reads and writes"| node_sqlite
node_fastapi -->|"converts uploads"| node_converter
node_converter -->|"writes Markdown"| node_markdown
node_fastapi -->|"indexes and searches"| node_rag
node_rag -->|"reads documents"| node_markdown
node_rag -->|"stores and retrieves chunks"| node_vectors
node_rag -->|"manages document records"| node_sqlite
node_fastapi -->|"requests chat or extraction"| node_llm
node_llm -->|"calls model"| node_model_provider
node_fastapi -->|"stores chat and metadata"| node_sqlite

click node_app "https://github.com/itzqingyu/rag-project/blob/main/react/src/App.tsx"
click node_dash_views "https://github.com/itzqingyu/rag-project/tree/main/react/src/components"
click node_chat_view "https://github.com/itzqingyu/rag-project/blob/main/react/src/components/ChatPanel.tsx"
click node_extract_view "https://github.com/itzqingyu/rag-project/blob/main/react/src/components/MeetingExtractPanel.tsx"
click node_doc_view "https://github.com/itzqingyu/rag-project/blob/main/react/src/components/DocumentDrawer.tsx"
click node_activity_api "https://github.com/itzqingyu/rag-project/blob/main/react/src/api/activityApi.ts"
click node_chat_api "https://github.com/itzqingyu/rag-project/blob/main/react/src/api/chatService.ts"
click node_doc_api "https://github.com/itzqingyu/rag-project/blob/main/react/src/api/documentService.ts"
click node_extract_api "https://github.com/itzqingyu/rag-project/blob/main/react/src/api/meetingExtractService.ts"
click node_http "https://github.com/itzqingyu/rag-project/blob/main/react/src/api/apiClient.ts"
click node_fastapi "https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/main.py"
click node_activity_logic "https://github.com/itzqingyu/rag-project/tree/main/python/src/dash_backend/activity_services"
click node_rag "https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/ai_services/rag_engine.py"
click node_converter "https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/document_processing/converter.py"
click node_llm "https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/ai_services/llm_service.py"
click node_sqlite "https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/database.py"
click node_vectors "https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/database.py"
click node_markdown "https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/document_processing/converter.py"

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_dash_views,node_chat_view,node_extract_view,node_doc_view toneBlue
class node_activity_api,node_chat_api,node_doc_api,node_extract_api,node_http toneAmber
class node_fastapi,node_activity_logic,node_rag,node_converter,node_llm toneMint
class node_sqlite,node_vectors,node_markdown toneRose
class node_user,node_model_provider toneIndigo
```

## Components

### Desktop interface

- [DASH workspace](https://github.com/itzqingyu/rag-project/blob/main/react/src/App.tsx): `react/src/App.tsx`
- [Event dashboard](https://github.com/itzqingyu/rag-project/tree/main/react/src/components): `react/src/components`
- [Chat panel](https://github.com/itzqingyu/rag-project/blob/main/react/src/components/ChatPanel.tsx): `react/src/components/ChatPanel.tsx`
- [Extraction review](https://github.com/itzqingyu/rag-project/blob/main/react/src/components/MeetingExtractPanel.tsx): `react/src/components/MeetingExtractPanel.tsx`
- [Document manager](https://github.com/itzqingyu/rag-project/blob/main/react/src/components/DocumentDrawer.tsx): `react/src/components/DocumentDrawer.tsx`

### HTTP client services

- [Activity service](https://github.com/itzqingyu/rag-project/blob/main/react/src/api/activityApi.ts): `react/src/api/activityApi.ts`
- [Chat service](https://github.com/itzqingyu/rag-project/blob/main/react/src/api/chatService.ts): `react/src/api/chatService.ts`
- [Document service](https://github.com/itzqingyu/rag-project/blob/main/react/src/api/documentService.ts): `react/src/api/documentService.ts`
- [Extraction service](https://github.com/itzqingyu/rag-project/blob/main/react/src/api/meetingExtractService.ts): `react/src/api/meetingExtractService.ts`
- [HTTP client](https://github.com/itzqingyu/rag-project/blob/main/react/src/api/apiClient.ts): `react/src/api/apiClient.ts`

### Backend workflows

- [REST endpoints](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/main.py): `python/src/dash_backend/main.py`
- [Event records](https://github.com/itzqingyu/rag-project/tree/main/python/src/dash_backend/activity_services): `python/src/dash_backend/activity_services`
- [Document retrieval](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/ai_services/rag_engine.py): `python/src/dash_backend/ai_services/rag_engine.py`
- [Format conversion](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/document_processing/converter.py): `python/src/dash_backend/document_processing/converter.py`
- [LLM operations](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/ai_services/llm_service.py): `python/src/dash_backend/ai_services/llm_service.py`

### Local data and models

- [SQLite records](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/database.py): `python/src/dash_backend/database.py`
- [Chroma vectors](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/database.py): `python/src/dash_backend/database.py`
- [Markdown repository](https://github.com/itzqingyu/rag-project/blob/main/python/src/dash_backend/document_processing/converter.py): `python/src/dash_backend/document_processing/converter.py`

### Other components

- **Team member**
- **LLM provider**

## Connections

- Team member → DASH workspace: uses
- DASH workspace → Event dashboard: shows
- DASH workspace → Chat panel: shows
- DASH workspace → Extraction review: shows
- DASH workspace → Document manager: shows
- Event dashboard → Activity service: requests records
- Chat panel → Chat service: sends messages
- Document manager → Document service: manages files
- Extraction review → Extraction service: extracts and commits
- Activity service → HTTP client: calls
- Chat service → HTTP client: calls
- Document service → HTTP client: calls
- Extraction service → HTTP client: calls
- HTTP client → REST endpoints: HTTP requests
- REST endpoints → Event records: dispatches records
- Event records → SQLite records: reads and writes
- REST endpoints → Format conversion: converts uploads
- Format conversion → Markdown repository: writes Markdown
- REST endpoints → Document retrieval: indexes and searches
- Document retrieval → Markdown repository: reads documents
- Document retrieval → Chroma vectors: stores and retrieves chunks
- Document retrieval → SQLite records: manages document records
- REST endpoints → LLM operations: requests chat or extraction
- LLM operations → LLM provider: calls model
- REST endpoints → SQLite records: stores chat and metadata
