# shweta-bharti50/ai-chatbot-application architecture

> Architecture diagram of the GitHub repository shweta-bharti50/ai-chatbot-application, 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/shweta-bharti50/ai-chatbot-application
- Repository: https://github.com/shweta-bharti50/ai-chatbot-application

## Overview

This Spring application provides authenticated AI customer-support chat. Users register or log in, manage conversations, send messages, and retrieve chat history. ChatService verifies user ownership, stores the user message, requests a reply from the OpenAI-backed AI service, and stores the response. Authentication issues JWTs and a security layer validates requests. Source excerpts establish these core calls; the FAQ and broader user-management capabilities are visible in the tree, but their full behavior is not sampled.

Main entry points: [`src/main/java/com/AI_Chatbot/repository/UserRepository.java`](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/UserRepository.java) (User Repository), [`src/main/java/com/AI_Chatbot/service/ChatService.java`](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/service/ChatService.java) (Chat Service), [`src/main/java/com/AI_Chatbot/service/AuthService.java`](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/service/AuthService.java) (Auth Service), [`src/main/resources/application.properties`](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/resources/application.properties) (Application Database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_auth_controller["Auth API"]
  node_conversation_controller["Conversation API"]
  node_chat_controller["Chat API"]
  node_user_controller["User API"]
end

subgraph group_services["Application Services"]
  node_auth_service["Auth Service<br/>[AuthService.java]"]
  node_conversation_service["Conversation Service"]
  node_chat_service["Chat Service<br/>[ChatService.java]"]
  node_ai_service["AI Service<br/>[AIService.java]"]
  node_openai_service["OpenAI Adapter<br/>[OpenAIService.java]"]
end

subgraph group_security["Authentication"]
  node_security_config["Security Config"]
  node_jwt_filter["JWT Filter"]
  node_jwt_service["JWT Service<br/>[JwtService.java]"]
  node_user_details["User Details"]
end

subgraph group_persistence["Persistence"]
  node_user_repo["User Repository"]
  node_conversation_repo["Conversation Repository"]
  node_message_repo["Message Repository"]
  node_faq_repo["FAQ Repository<br/>[FAQRepository.java]"]
  node_database[("Application Database")]
end

node_user(("User"))
node_openai{{"OpenAI API"}}

node_user -->|"registers or logs in"| node_auth_controller
node_auth_controller -->|"delegates auth"| node_auth_service
node_auth_service -->|"looks up and saves"| node_user_repo
node_auth_service -->|"creates token"| node_jwt_service
node_user -->|"manages conversations"| node_conversation_controller
node_conversation_controller -->|"delegates"| node_conversation_service
node_conversation_service -->|"loads user"| node_user_repo
node_conversation_service -->|"reads and writes"| node_conversation_repo
node_user -->|"sends or reads chat"| node_chat_controller
node_chat_controller -->|"delegates"| node_chat_service
node_chat_service -->|"loads user"| node_user_repo
node_chat_service -->|"checks ownership"| node_conversation_repo
node_chat_service -->|"stores and reads"| node_message_repo
node_chat_service -->|"requests reply"| node_ai_service
node_ai_service -->|"implemented by"| node_openai_service
node_openai_service -->|"sends prompt"| node_openai
node_openai -->|"returns completion"| node_openai_service
node_user -->|"requests user operation"| node_user_controller
node_user_controller -->|"reads or deletes"| node_user_repo
node_user_repo -->|"persists users"| node_database
node_conversation_repo -->|"persists conversations"| node_database
node_message_repo -->|"persists messages"| node_database
node_faq_repo -->|"accesses FAQs"| node_database
node_security_config -->|"configures security"| node_jwt_filter
node_jwt_filter -->|"validates tokens"| node_jwt_service
node_jwt_filter -->|"loads principal"| node_user_details
node_user_details -->|"loads account"| node_user_repo
node_jwt_service -->|"issues login token"| node_auth_service

click node_auth_controller "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/controller/AuthController.java"
click node_conversation_controller "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/controller/ConversationController.java"
click node_chat_controller "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/controller/ChatController.java"
click node_user_controller "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/controller/UserController.java"
click node_auth_service "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/service/AuthService.java"
click node_conversation_service "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/service/ConversationService.java"
click node_chat_service "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/service/ChatService.java"
click node_ai_service "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/ai/AIService.java"
click node_openai_service "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/ai/OpenAIService.java"
click node_security_config "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/security/SecurityConfig.java"
click node_jwt_filter "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/security/JwtAuthenticationFilter.java"
click node_jwt_service "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/security/JwtService.java"
click node_user_details "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/security/CustomUserDetailsService.java"
click node_user_repo "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/UserRepository.java"
click node_conversation_repo "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/ConversationRepository.java"
click node_message_repo "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/ChatMessageRepository.java"
click node_faq_repo "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/FAQRepository.java"
click node_database "https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/resources/application.properties"

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_auth_controller,node_conversation_controller,node_chat_controller,node_user_controller,node_user toneBlue
class node_auth_service,node_conversation_service,node_chat_service,node_ai_service,node_openai_service toneAmber
class node_security_config,node_jwt_filter,node_jwt_service,node_user_details,node_openai toneMint
class node_user_repo,node_conversation_repo,node_message_repo,node_faq_repo,node_database toneRose
```

## Components

### HTTP API

- [Auth API](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/controller/AuthController.java): `src/main/java/com/AI_Chatbot/controller/AuthController.java`
- [Conversation API](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/controller/ConversationController.java): `src/main/java/com/AI_Chatbot/controller/ConversationController.java`
- [Chat API](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/controller/ChatController.java): `src/main/java/com/AI_Chatbot/controller/ChatController.java`
- [User API](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/controller/UserController.java): `src/main/java/com/AI_Chatbot/controller/UserController.java`

### Application Services

- [Auth Service](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/service/AuthService.java): `src/main/java/com/AI_Chatbot/service/AuthService.java`
- [Conversation Service](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/service/ConversationService.java): `src/main/java/com/AI_Chatbot/service/ConversationService.java`
- [Chat Service](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/service/ChatService.java): `src/main/java/com/AI_Chatbot/service/ChatService.java`
- [AI Service](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/ai/AIService.java): `src/main/java/com/AI_Chatbot/ai/AIService.java`
- [OpenAI Adapter](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/ai/OpenAIService.java): `src/main/java/com/AI_Chatbot/ai/OpenAIService.java`

### Authentication

- [Security Config](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/security/SecurityConfig.java): `src/main/java/com/AI_Chatbot/security/SecurityConfig.java`
- [JWT Filter](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/security/JwtAuthenticationFilter.java): `src/main/java/com/AI_Chatbot/security/JwtAuthenticationFilter.java`
- [JWT Service](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/security/JwtService.java): `src/main/java/com/AI_Chatbot/security/JwtService.java`
- [User Details](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/security/CustomUserDetailsService.java): `src/main/java/com/AI_Chatbot/security/CustomUserDetailsService.java`

### Persistence

- [User Repository](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/UserRepository.java): `src/main/java/com/AI_Chatbot/repository/UserRepository.java`
- [Conversation Repository](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/ConversationRepository.java): `src/main/java/com/AI_Chatbot/repository/ConversationRepository.java`
- [Message Repository](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/ChatMessageRepository.java): `src/main/java/com/AI_Chatbot/repository/ChatMessageRepository.java`
- [FAQ Repository](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/java/com/AI_Chatbot/repository/FAQRepository.java): `src/main/java/com/AI_Chatbot/repository/FAQRepository.java`
- [Application Database](https://github.com/shweta-bharti50/ai-chatbot-application/blob/main/src/main/resources/application.properties): `src/main/resources/application.properties`

### Other components

- **User**
- **OpenAI API**

## Connections

- User → Auth API: registers or logs in
- Auth API → Auth Service: delegates auth
- Auth Service → User Repository: looks up and saves
- Auth Service → JWT Service: creates token
- User → Conversation API: manages conversations
- Conversation API → Conversation Service: delegates
- Conversation Service → User Repository: loads user
- Conversation Service → Conversation Repository: reads and writes
- User → Chat API: sends or reads chat
- Chat API → Chat Service: delegates
- Chat Service → User Repository: loads user
- Chat Service → Conversation Repository: checks ownership
- Chat Service → Message Repository: stores and reads
- Chat Service → AI Service: requests reply
- AI Service → OpenAI Adapter: implemented by
- OpenAI Adapter → OpenAI API: sends prompt
- OpenAI API → OpenAI Adapter: returns completion
- User → User API: requests user operation
- User API → User Repository: reads or deletes
- User Repository → Application Database: persists users
- Conversation Repository → Application Database: persists conversations
- Message Repository → Application Database: persists messages
- FAQ Repository → Application Database: accesses FAQs
- Security Config → JWT Filter: configures security
- JWT Filter → JWT Service: validates tokens
- JWT Filter → User Details: loads principal
- User Details → User Repository: loads account
- JWT Service → Auth Service: issues login token
