# david-torosyan/diploma-online-library architecture

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

- Interactive diagram: https://gitdiagram.com/david-torosyan/diploma-online-library
- Repository: https://github.com/david-torosyan/diploma-online-library

## Overview

Biblios is a full-stack online library: users discover and browse books, inspect details, manage favorites and reviews, contribute books for approval, and use AI assistance and messaging. The React app routes user tasks through page-level experiences and API services to the .NET controllers; backend services coordinate domain operations and persistence. The README documents multilingual support and JWT authentication, while the tree shows the corresponding UI, identity, and messaging areas. Relationships are based on the supplied excerpts and README; unsampled subsystem wiring is kept high-level or omitted.

Main entry points: [`Frontend/my-react-app/src/api/LibraryClient.ts`](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/api/LibraryClient.ts) (API client), [`Frontend/my-react-app/src/App.tsx`](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/App.tsx) (App routes), [`Backend/LibraryAPI/LibraryAPI/Controllers/BookController.cs`](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/BookController.cs) (Book API), [`Backend/LibraryAPI/Library.DAL/Repositories/UnitOfWork.cs`](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/Library.DAL/Repositories/UnitOfWork.cs) (Unit of work)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_app["App routes<br/>[App.tsx]"]
  node_discovery_ui["Discovery pages<br/>[Explore.tsx]"]
  node_book_ui["Book pages<br/>[BookDetail.tsx]"]
  node_auth_ui["Account pages<br/>[SignIn.tsx]"]
  node_messenger_ui["Messenger page<br/>[Messenger.tsx]"]
  node_ai_ui["AI assistant page<br/>[AiAssistant.tsx]"]
  node_discovery_service["Discovery service"]
  node_browse_service["Browse service<br/>[browseService.ts]"]
  node_login_service["Login service<br/>[loginService.tsx]"]
  node_chat_service_ui["Chat service<br/>[chatService.ts]"]
  node_api_client["API client<br/>[LibraryClient.ts]"]
end

subgraph group_api["API and domain"]
  node_controllers["Book API<br/>[BookController.cs]"]
  node_user_controller["User API<br/>[UserController.cs]"]
  node_chat_controller["Chat API<br/>[ChatController.cs]"]
  node_ai_controller["AI API"]
  node_book_service["Book operations"]
  node_review_service["Review operations<br/>[ReviewService.cs]"]
  node_user_service["Identity operations<br/>[UserService.cs]"]
  node_chat_service["Chat operations<br/>[ChatService.cs]"]
  node_hub["Live chat hub<br/>[ChatHub.cs]"]
  node_ai_helper["AI helper"]
end

subgraph group_data["Persistence"]
  node_uow["Unit of work<br/>[UnitOfWork.cs]"]
  node_repositories["Domain repositories<br/>[BookRepository.cs]"]
  node_db_context["EF context"]
  node_database[("Library database")]
end

subgraph group_integrations["External integrations"]
  node_s3[("Amazon S3")]
  node_ai_provider["AI provider"]
end

node_reader(("Reader / admin"))

node_reader -->|"uses"| node_app
node_app -->|"routes to"| node_discovery_ui
node_app -->|"routes to"| node_book_ui
node_app -->|"routes to"| node_auth_ui
node_app -->|"routes to"| node_messenger_ui
node_app -->|"routes to"| node_ai_ui
node_discovery_ui -->|"requests books"| node_discovery_service
node_discovery_ui -->|"searches"| node_browse_service
node_book_ui -->|"requests details"| node_api_client
node_auth_ui -->|"submits credentials"| node_login_service
node_messenger_ui -->|"exchanges messages"| node_chat_service_ui
node_ai_ui -->|"sends prompts"| node_api_client
node_discovery_service -->|"calls"| node_api_client
node_browse_service -->|"calls"| node_api_client
node_login_service -->|"calls"| node_api_client
node_chat_service_ui -->|"calls"| node_api_client
node_api_client -->|"HTTP requests"| node_controllers
node_api_client -->|"HTTP requests"| node_user_controller
node_api_client -->|"HTTP requests"| node_chat_controller
node_api_client -->|"HTTP requests"| node_ai_controller
node_controllers -->|"delegates"| node_book_service
node_controllers -->|"queries"| node_uow
node_controllers -->|"delegates"| node_review_service
node_user_controller -->|"delegates"| node_user_service
node_chat_controller -->|"delegates"| node_chat_service
node_chat_controller -->|"dispatches events"| node_hub
node_ai_controller -->|"delegates"| node_ai_helper
node_book_service -->|"reads and writes"| node_uow
node_review_service -->|"reads and writes"| node_uow
node_chat_service -->|"reads and writes"| node_uow
node_uow -->|"coordinates"| node_repositories
node_repositories -->|"queries"| node_db_context
node_db_context -->|"persists entities"| node_database
node_book_service -.->|"stores media"| node_s3
node_controllers -.->|"retrieves media"| node_s3
node_ai_helper -.->|"sends prompts"| node_ai_provider

click node_app "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/App.tsx"
click node_discovery_ui "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/Explore.tsx"
click node_book_ui "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/BookDetail.tsx"
click node_auth_ui "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/SignIn.tsx"
click node_messenger_ui "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/Messenger.tsx"
click node_ai_ui "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/AiAssistant.tsx"
click node_discovery_service "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/services/discoveryService.ts"
click node_browse_service "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/services/browseService.ts"
click node_login_service "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/services/loginService.tsx"
click node_chat_service_ui "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/services/chatService.ts"
click node_api_client "https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/api/LibraryClient.ts"
click node_controllers "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/BookController.cs"
click node_user_controller "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/UserController.cs"
click node_chat_controller "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/ChatController.cs"
click node_ai_controller "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/AIAssistantController.cs"
click node_book_service "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/BookAuthorService.cs"
click node_review_service "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/ReviewService.cs"
click node_user_service "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/UserService.cs"
click node_chat_service "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/ChatService.cs"
click node_hub "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Hubs/ChatHub.cs"
click node_ai_helper "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/AIAssistantHelper.cs"
click node_uow "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/Library.DAL/Repositories/UnitOfWork.cs"
click node_repositories "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/Library.DAL/Repositories/BookRepository.cs"
click node_db_context "https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/Library.DAL/Data/ApplicationDbContext.cs"

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_discovery_ui,node_book_ui,node_auth_ui,node_messenger_ui,node_ai_ui,node_discovery_service,node_browse_service,node_login_service,node_chat_service_ui,node_api_client toneBlue
class node_controllers,node_user_controller,node_chat_controller,node_ai_controller,node_book_service,node_review_service,node_user_service,node_chat_service,node_hub,node_ai_helper toneAmber
class node_uow,node_repositories,node_db_context,node_database toneMint
class node_s3,node_ai_provider toneRose
class node_reader toneIndigo
```

## Components

### Web experience

- [App routes](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/App.tsx): `Frontend/my-react-app/src/App.tsx`
- [Discovery pages](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/Explore.tsx): `Frontend/my-react-app/src/pages/Explore.tsx`
- [Book pages](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/BookDetail.tsx): `Frontend/my-react-app/src/pages/BookDetail.tsx`
- [Account pages](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/SignIn.tsx): `Frontend/my-react-app/src/pages/SignIn.tsx`
- [Messenger page](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/Messenger.tsx): `Frontend/my-react-app/src/pages/Messenger.tsx`
- [AI assistant page](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/pages/AiAssistant.tsx): `Frontend/my-react-app/src/pages/AiAssistant.tsx`
- [Discovery service](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/services/discoveryService.ts): `Frontend/my-react-app/src/services/discoveryService.ts`
- [Browse service](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/services/browseService.ts): `Frontend/my-react-app/src/services/browseService.ts`
- [Login service](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/services/loginService.tsx): `Frontend/my-react-app/src/services/loginService.tsx`
- [Chat service](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/services/chatService.ts): `Frontend/my-react-app/src/services/chatService.ts`
- [API client](https://github.com/david-torosyan/diploma-online-library/blob/main/Frontend/my-react-app/src/api/LibraryClient.ts): `Frontend/my-react-app/src/api/LibraryClient.ts`

### API and domain

- [Book API](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/BookController.cs): `Backend/LibraryAPI/LibraryAPI/Controllers/BookController.cs`
- [User API](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/UserController.cs): `Backend/LibraryAPI/LibraryAPI/Controllers/UserController.cs`
- [Chat API](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/ChatController.cs): `Backend/LibraryAPI/LibraryAPI/Controllers/ChatController.cs`
- [AI API](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Controllers/AIAssistantController.cs): `Backend/LibraryAPI/LibraryAPI/Controllers/AIAssistantController.cs`
- [Book operations](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/BookAuthorService.cs): `Backend/LibraryAPI/LibraryAPI/Services/BookAuthorService.cs`
- [Review operations](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/ReviewService.cs): `Backend/LibraryAPI/LibraryAPI/Services/ReviewService.cs`
- [Identity operations](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/UserService.cs): `Backend/LibraryAPI/LibraryAPI/Services/UserService.cs`
- [Chat operations](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/ChatService.cs): `Backend/LibraryAPI/LibraryAPI/Services/ChatService.cs`
- [Live chat hub](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Hubs/ChatHub.cs): `Backend/LibraryAPI/LibraryAPI/Hubs/ChatHub.cs`
- [AI helper](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/LibraryAPI/Services/AIAssistantHelper.cs): `Backend/LibraryAPI/LibraryAPI/Services/AIAssistantHelper.cs`

### Persistence

- [Unit of work](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/Library.DAL/Repositories/UnitOfWork.cs): `Backend/LibraryAPI/Library.DAL/Repositories/UnitOfWork.cs`
- [Domain repositories](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/Library.DAL/Repositories/BookRepository.cs): `Backend/LibraryAPI/Library.DAL/Repositories/BookRepository.cs`
- [EF context](https://github.com/david-torosyan/diploma-online-library/blob/main/Backend/LibraryAPI/Library.DAL/Data/ApplicationDbContext.cs): `Backend/LibraryAPI/Library.DAL/Data/ApplicationDbContext.cs`
- **Library database**

### External integrations

- **Amazon S3**
- **AI provider**

### Other components

- **Reader / admin**

## Connections

- Reader / admin → App routes: uses
- App routes → Discovery pages: routes to
- App routes → Book pages: routes to
- App routes → Account pages: routes to
- App routes → Messenger page: routes to
- App routes → AI assistant page: routes to
- Discovery pages → Discovery service: requests books
- Discovery pages → Browse service: searches
- Book pages → API client: requests details
- Account pages → Login service: submits credentials
- Messenger page → Chat service: exchanges messages
- AI assistant page → API client: sends prompts
- Discovery service → API client: calls
- Browse service → API client: calls
- Login service → API client: calls
- Chat service → API client: calls
- API client → Book API: HTTP requests
- API client → User API: HTTP requests
- API client → Chat API: HTTP requests
- API client → AI API: HTTP requests
- Book API → Book operations: delegates
- Book API → Unit of work: queries
- Book API → Review operations: delegates
- User API → Identity operations: delegates
- Chat API → Chat operations: delegates
- Chat API → Live chat hub: dispatches events
- AI API → AI helper: delegates
- Book operations → Unit of work: reads and writes
- Review operations → Unit of work: reads and writes
- Chat operations → Unit of work: reads and writes
- Unit of work → Domain repositories: coordinates
- Domain repositories → EF context: queries
- EF context → Library database: persists entities
- Book operations → Amazon S3: stores media
- Book API → Amazon S3: retrieves media
- AI helper → AI provider: sends prompts
