# asiyaibrahim478/week_6_internship architecture

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

- Interactive diagram: https://gitdiagram.com/asiyaibrahim478/week_6_internship
- Repository: https://github.com/asiyaibrahim478/week_6_internship

## Overview

The repository’s product is a library-management SPA backed by a .NET API, with a FastAPI assistant exposed through a resilient .NET client. The main user journey is browsing or managing books, or sending a question from the assistant UI and receiving a streamed answer. The graph also preserves documented authentication, RAG, memory, tool-calling, and AI utility capabilities, plus the separate corpus/vector-store project identified as core modules. Some subsystem links rely on README documentation because their implementation was not sampled.

Main entry points: [`ai-service/main.py`](https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py) (Grounded RAG), [`LibraryAPI/Services/BookService.cs`](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Services/BookService.cs) (Book service), [`library-frontend/src/app/book-list/book-list.component.ts`](https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/book-list/book-list.component.ts) (Book catalog UI), [`library-frontend/src/app/components/login/login.component.ts`](https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/components/login/login.component.ts) (Login UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Angular client"]
  node_book_ui["Book catalog UI"]
  node_book_form["Book editor"]
  node_login_ui["Login UI<br/>[login.component.ts]"]
  node_auth_service["Auth service<br/>[auth.service.ts]"]
  node_chat_ui["Assistant UI"]
  node_chat_service["Chat service<br/>[chat.service.ts]"]
end

subgraph group_library["Library API"]
  node_auth_controller["Authentication API<br/>[AuthController.cs]"]
  node_books_controller["Books API<br/>[BooksController.cs]"]
  node_book_service["Book service<br/>[BookService.cs]"]
  node_book_repository["SQL repository<br/>[BookRepository.cs]"]
  node_memory_repository["In-memory repository"]
  node_db_context["EF data context"]
  node_library_db[("Library database")]
  node_assistant_controller["Assistant proxy"]
  node_ai_client["Resilient AI client<br/>[AiServiceClient.cs]"]
end

subgraph group_assistant["AI assistant"]
  node_ai_api["FastAPI endpoints<br/>[main.py]"]
  node_rag["Grounded RAG<br/>[main.py]"]
  node_prompts["Prompt templates<br/>[prompts.py]"]
  node_session_memory[("Session memory<br/>[main.py]")]
  node_availability_tool["Availability tool<br/>[main.py]"]
end

subgraph group_corpus["Corpus project"]
  node_corpus_runner["Corpus assistant<br/>[main.py]"]
  node_corpus_fetcher["Corpus fetcher<br/>[fetch_corpus.py]"]
  node_vector_store[("Vector store<br/>[vector_store.py]")]
end

node_reader(("Library user"))
node_llm(("LLM provider"))

node_reader -->|"browses"| node_book_ui
node_reader -->|"signs in"| node_login_ui
node_reader -->|"asks"| node_chat_ui
node_book_ui -->|"requests catalog"| node_book_service
node_book_form -->|"submits changes"| node_book_service
node_login_ui -->|"authenticates"| node_auth_service
node_auth_service -->|"calls auth API"| node_auth_controller
node_books_controller -->|"delegates books"| node_book_service
node_book_service -->|"uses repository"| node_book_repository
node_book_repository -->|"queries"| node_db_context
node_db_context -.->|"reads and writes"| node_library_db
node_memory_repository -.->|"fallback store"| node_library_db
node_chat_ui -->|"sends prompt"| node_chat_service
node_chat_service -->|"streams request"| node_assistant_controller
node_assistant_controller -->|"forwards request"| node_ai_client
node_ai_client -->|"calls service"| node_ai_api
node_ai_api -->|"dispatches question"| node_rag
node_rag -->|"uses templates"| node_prompts
node_rag -->|"updates history"| node_session_memory
node_rag -->|"checks availability"| node_availability_tool
node_rag -.->|"generates answer"| node_llm
node_ai_api -.->|"streams tokens"| node_llm

click node_book_ui "https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/book-list/book-list.component.ts"
click node_book_form "https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/book-form/book-form.component.ts"
click node_login_ui "https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/components/login/login.component.ts"
click node_auth_service "https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/services/auth.service.ts"
click node_chat_ui "https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/components/assistant/assistant.component.ts"
click node_chat_service "https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/services/chat.service.ts"
click node_auth_controller "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Controllers/AuthController.cs"
click node_books_controller "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Controllers/BooksController.cs"
click node_book_service "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Services/BookService.cs"
click node_book_repository "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Repositories/BookRepository.cs"
click node_memory_repository "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Repositories/InMemoryBookRepository.cs"
click node_db_context "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Data/LibraryDbContext.cs"
click node_library_db "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Data/LibraryDbContext.cs"
click node_assistant_controller "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Controllers/AssistantController.cs"
click node_ai_client "https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Services/AiServiceClient.cs"
click node_ai_api "https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py"
click node_rag "https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py"
click node_prompts "https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/prompts.py"
click node_session_memory "https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py"
click node_availability_tool "https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py"
click node_corpus_runner "https://github.com/asiyaibrahim478/week_6_internship/blob/main/Week5_Project_LibraryAssistant/main.py"
click node_corpus_fetcher "https://github.com/asiyaibrahim478/week_6_internship/blob/main/Week5_Project_LibraryAssistant/fetch_corpus.py"
click node_vector_store "https://github.com/asiyaibrahim478/week_6_internship/blob/main/Week5_Project_LibraryAssistant/vector_store.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_book_ui,node_book_form,node_login_ui,node_auth_service,node_chat_ui,node_chat_service,node_reader toneBlue
class node_auth_controller,node_books_controller,node_book_service,node_book_repository,node_memory_repository,node_db_context,node_library_db,node_assistant_controller,node_ai_client toneAmber
class node_ai_api,node_rag,node_prompts,node_session_memory,node_availability_tool toneMint
class node_corpus_runner,node_corpus_fetcher,node_vector_store toneRose
class node_llm toneIndigo
```

## Components

### Angular client

- [Book catalog UI](https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/book-list/book-list.component.ts): `library-frontend/src/app/book-list/book-list.component.ts`
- [Book editor](https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/book-form/book-form.component.ts): `library-frontend/src/app/book-form/book-form.component.ts`
- [Login UI](https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/components/login/login.component.ts): `library-frontend/src/app/components/login/login.component.ts`
- [Auth service](https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/services/auth.service.ts): `library-frontend/src/app/services/auth.service.ts`
- [Assistant UI](https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/components/assistant/assistant.component.ts): `library-frontend/src/app/components/assistant/assistant.component.ts`
- [Chat service](https://github.com/asiyaibrahim478/week_6_internship/blob/main/library-frontend/src/app/services/chat.service.ts): `library-frontend/src/app/services/chat.service.ts`

### Library API

- [Authentication API](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Controllers/AuthController.cs): `LibraryAPI/Controllers/AuthController.cs`
- [Books API](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Controllers/BooksController.cs): `LibraryAPI/Controllers/BooksController.cs`
- [Book service](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Services/BookService.cs): `LibraryAPI/Services/BookService.cs`
- [SQL repository](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Repositories/BookRepository.cs): `LibraryAPI/Repositories/BookRepository.cs`
- [In-memory repository](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Repositories/InMemoryBookRepository.cs): `LibraryAPI/Repositories/InMemoryBookRepository.cs`
- [EF data context](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Data/LibraryDbContext.cs): `LibraryAPI/Data/LibraryDbContext.cs`
- [Library database](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Data/LibraryDbContext.cs): `LibraryAPI/Data/LibraryDbContext.cs`
- [Assistant proxy](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Controllers/AssistantController.cs): `LibraryAPI/Controllers/AssistantController.cs`
- [Resilient AI client](https://github.com/asiyaibrahim478/week_6_internship/blob/main/LibraryAPI/Services/AiServiceClient.cs): `LibraryAPI/Services/AiServiceClient.cs`

### AI assistant

- [FastAPI endpoints](https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py): `ai-service/main.py`
- [Grounded RAG](https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py): `ai-service/main.py`
- [Prompt templates](https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/prompts.py): `ai-service/prompts.py`
- [Session memory](https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py): `ai-service/main.py`
- [Availability tool](https://github.com/asiyaibrahim478/week_6_internship/blob/main/ai-service/main.py): `ai-service/main.py`

### Corpus project

- [Corpus assistant](https://github.com/asiyaibrahim478/week_6_internship/blob/main/Week5_Project_LibraryAssistant/main.py): `Week5_Project_LibraryAssistant/main.py`
- [Corpus fetcher](https://github.com/asiyaibrahim478/week_6_internship/blob/main/Week5_Project_LibraryAssistant/fetch_corpus.py): `Week5_Project_LibraryAssistant/fetch_corpus.py`
- [Vector store](https://github.com/asiyaibrahim478/week_6_internship/blob/main/Week5_Project_LibraryAssistant/vector_store.py): `Week5_Project_LibraryAssistant/vector_store.py`

### Other components

- **Library user**
- **LLM provider**

## Connections

- Library user → Book catalog UI: browses (evidence: `README.md`)
- Library user → Login UI: signs in (evidence: `README.md`)
- Library user → Assistant UI: asks (evidence: `README.md`)
- Book catalog UI → Book service: requests catalog (evidence: `library-frontend/src/app/book-list/book-list.component.ts`)
- Book editor → Book service: submits changes (evidence: `library-frontend/src/app/book-form/book-form.component.ts`)
- Login UI → Auth service: authenticates (evidence: `library-frontend/src/app/components/login/login.component.ts`)
- Auth service → Authentication API: calls auth API (evidence: `library-frontend/src/app/services/auth.service.ts`)
- Books API → Book service: delegates books (evidence: `LibraryAPI/Controllers/BooksController.cs`)
- Book service → SQL repository: uses repository (evidence: `LibraryAPI/Services/BookService.cs`)
- SQL repository → EF data context: queries (evidence: `LibraryAPI/Repositories/BookRepository.cs`)
- EF data context → Library database: reads and writes (evidence: `LibraryAPI/Data/LibraryDbContext.cs`)
- In-memory repository → Library database: fallback store
- Assistant UI → Chat service: sends prompt (evidence: `library-frontend/src/app/components/assistant/assistant.component.ts`)
- Chat service → Assistant proxy: streams request (evidence: `README.md`)
- Assistant proxy → Resilient AI client: forwards request (evidence: `README.md`)
- Resilient AI client → FastAPI endpoints: calls service (evidence: `README.md`)
- FastAPI endpoints → Grounded RAG: dispatches question (evidence: `ai-service/main.py`)
- Grounded RAG → Prompt templates: uses templates (evidence: `ai-service/main.py`)
- Grounded RAG → Session memory: updates history (evidence: `ai-service/main.py`)
- Grounded RAG → Availability tool: checks availability (evidence: `ai-service/main.py`)
- Grounded RAG → LLM provider: generates answer
- FastAPI endpoints → LLM provider: streams tokens
