# yladraoui/llm-powered-chat-application architecture

> Architecture diagram of the GitHub repository yladraoui/llm-powered-chat-application, 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/yladraoui/llm-powered-chat-application
- Repository: https://github.com/yladraoui/llm-powered-chat-application

## Overview

This repository pairs an Angular chat interface with a Spring API for chat and conversation management. The evidenced streaming path runs from the browser’s EventSource client to the chat endpoint; conversation listing, retrieval, and deletion are exposed separately. Backend service implementations, frontend state wiring, persistence behavior, and AI-provider calls are not shown in the sampled source, so those components are included where the tree identifies them, but uncertain connections are omitted.

Main entry points: [`ai/src/main/java/com/yladraoui/ai/controllers/ChatController.java`](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/controllers/ChatController.java) (Chat endpoint), [`ai-front-end/src/app/app.routes.ts`](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/app.routes.ts) (Chat route), [`ai-front-end/src/app/core/services/chat-stream.service.ts`](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/core/services/chat-stream.service.ts) (SSE client), [`ai/src/main/java/com/yladraoui/ai/controllers/ConversationController.java`](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/controllers/ConversationController.java) (Conversation endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Chat frontend"]
  node_app["App shell<br/>[app.ts]"]
  node_routes["Chat route<br/>[app.routes.ts]"]
  node_chatpage["Chat page<br/>[chat-page.ts]"]
  node_chatstore["Chat state<br/>[chat.store.ts]"]
  node_input["Message input<br/>[message-input.ts]"]
  node_messages["Message list<br/>[message-list.ts]"]
  node_convolist["Conversation list"]
  node_streamclient["SSE client"]
  node_convclient["Conversation client"]
end

subgraph group_api["HTTP API"]
  node_chatcontroller["Chat endpoint"]
  node_convcontroller["Conversation endpoints"]
end

subgraph group_domain["Chat services"]
  node_chatservice["Chat service<br/>[ChatService.java]"]
  node_chatdefault["Chat implementation"]
  node_convservice["Conversation service"]
  node_convdefault["Conversation implementation"]
  node_recorder["Reply recorder"]
  node_convo[("Conversation repository")]
  node_message[("Message repository")]
end

subgraph group_ai["AI integration"]
  node_aiport["AI chat port<br/>[AiChatPort.java]"]
  node_streamport["AI stream port"]
  node_adapter["Spring AI adapter"]
end

node_user(("Chat user"))

node_user -->|"opens"| node_app
node_routes -->|"loads"| node_chatpage
node_streamclient -->|"SSE request"| node_chatcontroller
node_chatcontroller -->|"calls"| node_chatservice
node_convcontroller -->|"calls"| node_convservice

click node_app "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/app.ts"
click node_routes "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/app.routes.ts"
click node_chatpage "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/chat/chat-page/chat-page.ts"
click node_chatstore "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/chat/chat.store.ts"
click node_input "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/components/message-input/message-input.ts"
click node_messages "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/components/message-list/message-list.ts"
click node_convolist "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/components/conversation-list/conversation-list.ts"
click node_streamclient "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/core/services/chat-stream.service.ts"
click node_convclient "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/core/services/conversation.service.ts"
click node_chatcontroller "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/controllers/ChatController.java"
click node_convcontroller "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/controllers/ConversationController.java"
click node_chatservice "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/ChatService.java"
click node_chatdefault "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/ChatServiceDefault.java"
click node_convservice "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/ConversationService.java"
click node_convdefault "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/ConversationServiceDefault.java"
click node_recorder "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/AssistantReplyRecorder.java"
click node_convo "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/repositories/ConversationRepository.java"
click node_message "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/repositories/ChatMessageRepository.java"
click node_aiport "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/AiChatPort.java"
click node_streamport "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/AiChatStreamPort.java"
click node_adapter "https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/SpringAiChatAdapter.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_routes,node_chatpage,node_chatstore,node_input,node_messages,node_convolist,node_streamclient,node_convclient,node_user toneBlue
class node_chatcontroller,node_convcontroller toneAmber
class node_chatservice,node_chatdefault,node_convservice,node_convdefault,node_recorder,node_convo,node_message toneMint
class node_aiport,node_streamport,node_adapter toneRose
```

## Components

### Chat frontend

- [App shell](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/app.ts): `ai-front-end/src/app/app.ts`
- [Chat route](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/app.routes.ts): `ai-front-end/src/app/app.routes.ts`
- [Chat page](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/chat/chat-page/chat-page.ts): `ai-front-end/src/app/features/chat/chat-page/chat-page.ts`
- [Chat state](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/chat/chat.store.ts): `ai-front-end/src/app/features/chat/chat.store.ts`
- [Message input](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/components/message-input/message-input.ts): `ai-front-end/src/app/features/components/message-input/message-input.ts`
- [Message list](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/components/message-list/message-list.ts): `ai-front-end/src/app/features/components/message-list/message-list.ts`
- [Conversation list](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/features/components/conversation-list/conversation-list.ts): `ai-front-end/src/app/features/components/conversation-list/conversation-list.ts`
- [SSE client](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/core/services/chat-stream.service.ts): `ai-front-end/src/app/core/services/chat-stream.service.ts`
- [Conversation client](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai-front-end/src/app/core/services/conversation.service.ts): `ai-front-end/src/app/core/services/conversation.service.ts`

### HTTP API

- [Chat endpoint](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/controllers/ChatController.java): `ai/src/main/java/com/yladraoui/ai/controllers/ChatController.java`
- [Conversation endpoints](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/controllers/ConversationController.java): `ai/src/main/java/com/yladraoui/ai/controllers/ConversationController.java`

### Chat services

- [Chat service](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/ChatService.java): `ai/src/main/java/com/yladraoui/ai/services/ChatService.java`
- [Chat implementation](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/ChatServiceDefault.java): `ai/src/main/java/com/yladraoui/ai/services/ChatServiceDefault.java`
- [Conversation service](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/ConversationService.java): `ai/src/main/java/com/yladraoui/ai/services/ConversationService.java`
- [Conversation implementation](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/ConversationServiceDefault.java): `ai/src/main/java/com/yladraoui/ai/services/ConversationServiceDefault.java`
- [Reply recorder](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/services/AssistantReplyRecorder.java): `ai/src/main/java/com/yladraoui/ai/services/AssistantReplyRecorder.java`
- [Conversation repository](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/repositories/ConversationRepository.java): `ai/src/main/java/com/yladraoui/ai/repositories/ConversationRepository.java`
- [Message repository](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/repositories/ChatMessageRepository.java): `ai/src/main/java/com/yladraoui/ai/repositories/ChatMessageRepository.java`

### AI integration

- [AI chat port](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/AiChatPort.java): `ai/src/main/java/com/yladraoui/ai/AiChatPort.java`
- [AI stream port](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/AiChatStreamPort.java): `ai/src/main/java/com/yladraoui/ai/AiChatStreamPort.java`
- [Spring AI adapter](https://github.com/yladraoui/llm-powered-chat-application/blob/main/ai/src/main/java/com/yladraoui/ai/SpringAiChatAdapter.java): `ai/src/main/java/com/yladraoui/ai/SpringAiChatAdapter.java`

### Other components

- **Chat user**

## Connections

- Chat user → App shell: opens
- Chat route → Chat page: loads
- SSE client → Chat endpoint: SSE request
- Chat endpoint → Chat service: calls
- Conversation endpoints → Conversation service: calls
