# jiashinnn/documentsearchsystem architecture

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

## Overview

OmniDoc is a corporate document-management and hybrid-retrieval application. Users log in, upload documents, and search active documents by filename and content; upload processing extracts and chunks text, creates embeddings, and stores file metadata and vectors. Search results include matching text snippets, while users can download or soft-delete documents and review audit history. The graph includes the frontend, API/service layer, processing and retrieval dependencies, and persistence. Some processing and frontend excerpts are partial, so only documented or directly evidenced subsystem links are shown.

Main entry points: [`backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java`](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java) (Document service), [`frontend/src/App.tsx`](https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/App.tsx) (App coordinator), [`backend/src/main/java/com/omnidoc/backend/controller/DocumentController.java`](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/controller/DocumentController.java) (Document API), [`backend/src/main/resources/application.properties`](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/resources/application.properties) (PostgreSQL)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["App coordinator<br/>[App.tsx]"]
  node_landing["Login view<br/>[LandingView.tsx]"]
  node_searchui["Search and documents<br/>[SearchView.tsx]"]
  node_historyui["Audit history<br/>[HistoryView.tsx]"]
end

subgraph group_api["API and services"]
  node_authapi["Authentication API"]
  node_userlogic["User service"]
  node_docapi["Document API"]
  node_doclogic["Document service"]
end

subgraph group_processing["Document processing"]
  node_parser["Text extraction"]
  node_chunking["Paragraph chunking"]
end

subgraph group_persistence["Persistence and storage"]
  node_authrepo["User repository"]
  node_filerepo["File repository"]
  node_chunkrepo["Chunk search repository"]
  node_recordrepo["Audit repository"]
  node_database[("PostgreSQL")]
end

subgraph group_integrations["External integrations"]
  node_ollama{{"Ollama embeddings"}}
  node_r2[("Cloudflare R2")]
end

node_user(("Enterprise user"))

node_user -->|"uses"| node_app
node_app -->|"shows login"| node_landing
node_app -->|"shows search"| node_searchui
node_app -->|"shows history"| node_historyui
node_landing -->|"submits login"| node_authapi
node_authapi -->|"delegates login"| node_userlogic
node_userlogic -->|"looks up user"| node_authrepo
node_authrepo -->|"reads users"| node_database
node_searchui -->|"requests documents"| node_docapi
node_app -->|"loads history"| node_docapi
node_docapi -->|"delegates operations"| node_doclogic
node_doclogic -->|"extracts text"| node_parser
node_parser -->|"passes extracted text"| node_chunking
node_doclogic -.->|"creates embeddings"| node_ollama
node_doclogic -->|"stores and retrieves files"| node_r2
node_doclogic -->|"reads and writes files"| node_filerepo
node_doclogic -->|"stores and searches chunks"| node_chunkrepo
node_doclogic -->|"records activity"| node_recordrepo
node_doclogic -->|"looks up user context"| node_authrepo
node_filerepo -->|"persists metadata"| node_database
node_chunkrepo -->|"queries vectors and names"| node_database
node_recordrepo -->|"persists audit history"| node_database
node_docapi -->|"checks object metadata"| node_r2

click node_app "https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/App.tsx"
click node_landing "https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/components/LandingView.tsx"
click node_searchui "https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/components/SearchView.tsx"
click node_historyui "https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/components/HistoryView.tsx"
click node_authapi "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/controller/AuthController.java"
click node_userlogic "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/UserServiceImpl.java"
click node_docapi "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/controller/DocumentController.java"
click node_doclogic "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java"
click node_authrepo "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/repository/UserRepository.java"
click node_filerepo "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/repository/FileRepository.java"
click node_chunkrepo "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/repository/ChunkRepository.java"
click node_recordrepo "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/repository/RecordRepository.java"
click node_database "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/resources/application.properties"
click node_parser "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java"
click node_chunking "https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.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_landing,node_searchui,node_historyui,node_user toneBlue
class node_authapi,node_userlogic,node_docapi,node_doclogic toneAmber
class node_parser,node_chunking toneMint
class node_authrepo,node_filerepo,node_chunkrepo,node_recordrepo,node_database toneRose
class node_ollama,node_r2 toneIndigo
```

## Components

### Web application

- [App coordinator](https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Login view](https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/components/LandingView.tsx): `frontend/src/components/LandingView.tsx`
- [Search and documents](https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/components/SearchView.tsx): `frontend/src/components/SearchView.tsx`
- [Audit history](https://github.com/jiashinnn/documentsearchsystem/blob/main/frontend/src/components/HistoryView.tsx): `frontend/src/components/HistoryView.tsx`

### API and services

- [Authentication API](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/controller/AuthController.java): `backend/src/main/java/com/omnidoc/backend/controller/AuthController.java`
- [User service](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/UserServiceImpl.java): `backend/src/main/java/com/omnidoc/backend/service/impl/UserServiceImpl.java`
- [Document API](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/controller/DocumentController.java): `backend/src/main/java/com/omnidoc/backend/controller/DocumentController.java`
- [Document service](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java): `backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java`

### Document processing

- [Text extraction](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java): `backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java`
- [Paragraph chunking](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java): `backend/src/main/java/com/omnidoc/backend/service/impl/DocumentServiceImpl.java`

### Persistence and storage

- [User repository](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/repository/UserRepository.java): `backend/src/main/java/com/omnidoc/backend/repository/UserRepository.java`
- [File repository](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/repository/FileRepository.java): `backend/src/main/java/com/omnidoc/backend/repository/FileRepository.java`
- [Chunk search repository](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/repository/ChunkRepository.java): `backend/src/main/java/com/omnidoc/backend/repository/ChunkRepository.java`
- [Audit repository](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/java/com/omnidoc/backend/repository/RecordRepository.java): `backend/src/main/java/com/omnidoc/backend/repository/RecordRepository.java`
- [PostgreSQL](https://github.com/jiashinnn/documentsearchsystem/blob/main/backend/src/main/resources/application.properties): `backend/src/main/resources/application.properties`

### External integrations

- **Ollama embeddings**
- **Cloudflare R2**

### Other components

- **Enterprise user**

## Connections

- Enterprise user → App coordinator: uses
- App coordinator → Login view: shows login
- App coordinator → Search and documents: shows search
- App coordinator → Audit history: shows history
- Login view → Authentication API: submits login
- Authentication API → User service: delegates login
- User service → User repository: looks up user
- User repository → PostgreSQL: reads users
- Search and documents → Document API: requests documents
- App coordinator → Document API: loads history
- Document API → Document service: delegates operations
- Document service → Text extraction: extracts text
- Text extraction → Paragraph chunking: passes extracted text
- Document service → Ollama embeddings: creates embeddings
- Document service → Cloudflare R2: stores and retrieves files
- Document service → File repository: reads and writes files
- Document service → Chunk search repository: stores and searches chunks
- Document service → Audit repository: records activity
- Document service → User repository: looks up user context
- File repository → PostgreSQL: persists metadata
- Chunk search repository → PostgreSQL: queries vectors and names
- Audit repository → PostgreSQL: persists audit history
- Document API → Cloudflare R2: checks object metadata
