# saiabhiramdevarakonda-dot/chatapp architecture

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

- Interactive diagram: https://gitdiagram.com/saiabhiramdevarakonda-dot/chatapp
- Repository: https://github.com/saiabhiramdevarakonda-dot/chatapp

## Overview

This is a multi-part agentic AI chat application: an Angular chat UI fronts Node backends that generate answers, retrieve knowledge, or invoke tools for customer, order, and weather tasks. The main agent workflow is represented by the documented frontend/backend architecture and the sampled agent controller’s calls to an LLM and MCP client. The repository also contains a separate RAG chat backend and a tool-calling backend. Several route-to-controller and tool-to-service connections are not shown because their wiring was not sampled.

Main entry points: [`agentic-app-backend/src/mcp/server/mcpServer.ts`](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/mcpServer.ts) (MCP server), [`agentic-app-backend/src/controllers/agent.controller.ts`](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/controllers/agent.controller.ts) (Agent controller), [`agentic-app-backend/src/services/gemini.service.ts`](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/gemini.service.ts) (Gemini service), [`chat-app-backend/src/chatRouter.js`](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/chat-app-backend/src/chatRouter.js) (RAG chat API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Chat frontend"]
  node_angular["Angular chat UI<br/>[chat.ts]"]
  node_chatui_service["Chat service<br/>[chat.service.ts]"]
end

subgraph group_agent["Agent backend"]
  node_agent_controller["Agent controller"]
  node_gemini["Gemini service<br/>[gemini.service.ts]"]
  node_openai["OpenAI service<br/>[openai.service.ts]"]
  node_mcp_client["MCP client"]
  node_mcp_controller["MCP server endpoint"]
  node_mcp_server["MCP server<br/>[mcpServer.ts]"]
end

subgraph group_domain["Business tools"]
  node_customer_tool["Customer tool<br/>[customer.tool.ts]"]
  node_order_tool["Order tool<br/>[order.tool.ts]"]
  node_weather_tool["Weather tool<br/>[weather.tool.ts]"]
  node_customer_service["Customer service"]
  node_order_service["Order service<br/>[order.service.ts]"]
  node_mongo[("MongoDB<br/>[mongodb.ts]")]
end

subgraph group_knowledge["Knowledge retrieval"]
  node_rag_tool["RAG tool<br/>[rag.tool.ts]"]
  node_rag_engine["RAG engine<br/>[ragEngine.ts]"]
  node_vector_store["Vector store<br/>[vector.store.ts]"]
  node_vector_db[("Vector database<br/>[chroma.db.ts]")]
end

subgraph group_alternate["Other backends"]
  node_tool_chat["Tool-calling chat<br/>[chat.controller.ts]"]
  node_chat_api["RAG chat API<br/>[chatRouter.js]"]
  node_chat_rag["RAG provider<br/>[rag.js]"]
  node_embedding_cache[("Embedding cache<br/>[embeddingCache.js]")]
end

node_user(("User"))

node_user -->|"sends prompts"| node_angular
node_angular -->|"submits chat"| node_chatui_service
node_chatui_service -.->|"calls backend"| node_agent_controller
node_agent_controller -->|"initializes client"| node_mcp_client
node_agent_controller -->|"selects model"| node_gemini
node_agent_controller -->|"selects model"| node_openai
node_mcp_controller -->|"connects transport"| node_mcp_server
node_mcp_server -.->|"registers tools"| node_customer_tool
node_mcp_server -.->|"registers tools"| node_order_tool
node_mcp_server -.->|"registers tools"| node_weather_tool
node_mcp_server -.->|"registers tools"| node_rag_tool
node_customer_tool -.->|"uses service"| node_customer_service
node_order_tool -.->|"uses service"| node_order_service
node_customer_service -.->|"persists data"| node_mongo
node_order_service -.->|"persists data"| node_mongo
node_rag_tool -.->|"searches context"| node_rag_engine
node_rag_engine -->|"creates embeddings"| node_gemini
node_rag_engine -->|"searches vectors"| node_vector_store
node_vector_store -.->|"queries store"| node_vector_db
node_tool_chat -.->|"selects provider"| node_gemini
node_chat_api -->|"prepares prompt"| node_chat_rag
node_chat_api -->|"reads vectors"| node_embedding_cache
node_chat_api -.->|"generates answer"| node_gemini

click node_angular "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/technyks-chat-app/src/app/chat/chat.ts"
click node_chatui_service "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/technyks-chat-app/src/app/services/chat/chat.service.ts"
click node_agent_controller "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/controllers/agent.controller.ts"
click node_gemini "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/gemini.service.ts"
click node_openai "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/openai.service.ts"
click node_mcp_client "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/client/mcp-client.service.ts"
click node_mcp_controller "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/controllers/mcp-server.controller.ts"
click node_mcp_server "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/mcpServer.ts"
click node_customer_tool "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/tools/customer.tool.ts"
click node_order_tool "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/tools/order.tool.ts"
click node_weather_tool "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/tools/weather.tool.ts"
click node_customer_service "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/customer.service.ts"
click node_order_service "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/order.service.ts"
click node_mongo "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/config/mongodb.ts"
click node_rag_tool "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/tools/rag.tool.ts"
click node_rag_engine "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/rag/ragEngine.ts"
click node_vector_store "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/rag/vectorStore/vector.store.ts"
click node_vector_db "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/rag/vectorStore/dbs/chroma.db.ts"
click node_tool_chat "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/tool_calling/src/controllers/chat.controller.ts"
click node_chat_api "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/chat-app-backend/src/chatRouter.js"
click node_chat_rag "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/chat-app-backend/src/rag.js"
click node_embedding_cache "https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/chat-app-backend/src/embeddingCache.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_angular,node_chatui_service,node_user toneBlue
class node_agent_controller,node_gemini,node_openai,node_mcp_client,node_mcp_controller,node_mcp_server toneAmber
class node_customer_tool,node_order_tool,node_weather_tool,node_customer_service,node_order_service,node_mongo toneMint
class node_rag_tool,node_rag_engine,node_vector_store,node_vector_db toneRose
class node_tool_chat,node_chat_api,node_chat_rag,node_embedding_cache toneIndigo
```

## Components

### Chat frontend

- [Angular chat UI](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/technyks-chat-app/src/app/chat/chat.ts): `technyks-chat-app/src/app/chat/chat.ts`
- [Chat service](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/technyks-chat-app/src/app/services/chat/chat.service.ts): `technyks-chat-app/src/app/services/chat/chat.service.ts`

### Agent backend

- [Agent controller](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/controllers/agent.controller.ts): `agentic-app-backend/src/controllers/agent.controller.ts`
- [Gemini service](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/gemini.service.ts): `agentic-app-backend/src/services/gemini.service.ts`
- [OpenAI service](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/openai.service.ts): `agentic-app-backend/src/services/openai.service.ts`
- [MCP client](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/client/mcp-client.service.ts): `agentic-app-backend/src/mcp/client/mcp-client.service.ts`
- [MCP server endpoint](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/controllers/mcp-server.controller.ts): `agentic-app-backend/src/controllers/mcp-server.controller.ts`
- [MCP server](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/mcpServer.ts): `agentic-app-backend/src/mcp/server/mcpServer.ts`

### Business tools

- [Customer tool](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/tools/customer.tool.ts): `agentic-app-backend/src/mcp/server/tools/customer.tool.ts`
- [Order tool](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/tools/order.tool.ts): `agentic-app-backend/src/mcp/server/tools/order.tool.ts`
- [Weather tool](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/tools/weather.tool.ts): `agentic-app-backend/src/mcp/server/tools/weather.tool.ts`
- [Customer service](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/customer.service.ts): `agentic-app-backend/src/services/customer.service.ts`
- [Order service](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/services/order.service.ts): `agentic-app-backend/src/services/order.service.ts`
- [MongoDB](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/config/mongodb.ts): `agentic-app-backend/src/config/mongodb.ts`

### Knowledge retrieval

- [RAG tool](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/mcp/server/tools/rag.tool.ts): `agentic-app-backend/src/mcp/server/tools/rag.tool.ts`
- [RAG engine](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/rag/ragEngine.ts): `agentic-app-backend/src/rag/ragEngine.ts`
- [Vector store](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/rag/vectorStore/vector.store.ts): `agentic-app-backend/src/rag/vectorStore/vector.store.ts`
- [Vector database](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/agentic-app-backend/src/rag/vectorStore/dbs/chroma.db.ts): `agentic-app-backend/src/rag/vectorStore/dbs/chroma.db.ts`

### Other backends

- [Tool-calling chat](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/tool_calling/src/controllers/chat.controller.ts): `tool_calling/src/controllers/chat.controller.ts`
- [RAG chat API](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/chat-app-backend/src/chatRouter.js): `chat-app-backend/src/chatRouter.js`
- [RAG provider](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/chat-app-backend/src/rag.js): `chat-app-backend/src/rag.js`
- [Embedding cache](https://github.com/saiabhiramdevarakonda-dot/chatapp/blob/main/chat-app-backend/src/embeddingCache.js): `chat-app-backend/src/embeddingCache.js`

### Other components

- **User**

## Connections

- User → Angular chat UI: sends prompts
- Angular chat UI → Chat service: submits chat
- Chat service → Agent controller: calls backend
- Agent controller → MCP client: initializes client
- Agent controller → Gemini service: selects model
- Agent controller → OpenAI service: selects model
- MCP server endpoint → MCP server: connects transport
- MCP server → Customer tool: registers tools
- MCP server → Order tool: registers tools
- MCP server → Weather tool: registers tools
- MCP server → RAG tool: registers tools
- Customer tool → Customer service: uses service
- Order tool → Order service: uses service
- Customer service → MongoDB: persists data
- Order service → MongoDB: persists data
- RAG tool → RAG engine: searches context
- RAG engine → Gemini service: creates embeddings
- RAG engine → Vector store: searches vectors
- Vector store → Vector database: queries store
- Tool-calling chat → Gemini service: selects provider
- RAG chat API → RAG provider: prepares prompt
- RAG chat API → Embedding cache: reads vectors
- RAG chat API → Gemini service: generates answer
