# yogeshwaar/syvi architecture

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

- Interactive diagram: https://gitdiagram.com/yogeshwaar/syvi
- Repository: https://github.com/yogeshwaar/syvi

## Overview

SYVI is a Spring Boot AI chatbot backend: users authenticate, submit natural-language questions, receive LLM responses, and can retrieve saved chat history; public endpoints also support email-OTP verification. Admins can manage users and public/internal prompts. The README documents MongoDB Atlas and NVIDIA LLM integration; those external connections are shown where documented, while unsampled implementation details are not inferred.

Main entry points: [`chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/UserService.java`](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/UserService.java) (User service), [`chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/PublicController.java`](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/PublicController.java) (Public API), [`chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/OtpVerificationService.java`](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/OtpVerificationService.java) (OTP verification), [`chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/ChatServiceImpl.java`](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/ChatServiceImpl.java) (Chat service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API workflows"]
  node_public_api["Public API"]
  node_user_api["User API"]
  node_admin_api["Admin API"]
  node_models["Domain models"]
end

subgraph group_identity["Identity and access"]
  node_user_service["User service<br/>[UserService.java]"]
  node_otp_service["OTP verification"]
  node_email_service["Email service<br/>[EmailService.java]"]
  node_jwt["JWT utilities<br/>[JwtUtil.java]"]
  node_security["Security filter<br/>[JwtFilter.java]"]
  node_user_repo["User repository"]
end

subgraph group_conversation["Chat and AI"]
  node_ai_api["AI API<br/>[AiController.java]"]
  node_chat_service["Chat service"]
  node_ai_service["AI service<br/>[AiService.java]"]
  node_chat_repo["Chat repositories"]
  node_mongo[("MongoDB Atlas")]
  node_llm["NVIDIA LLM"]
end

subgraph group_content["Prompts and email"]
  node_prompt_handler["Prompt handler<br/>[PromptHandler.java]"]
  node_prompt_files["Prompt files"]
  node_email_template["Email template<br/>[email-body.html]"]
  node_constant_handler["Template constants"]
end

node_user(("User"))
node_admin(("Admin"))

node_user -->|"uses"| node_public_api
node_user -.->|"asks"| node_ai_api
node_admin -->|"manages"| node_admin_api
node_public_api -->|"verifies OTP"| node_otp_service
node_otp_service -->|"sends email"| node_email_service
node_otp_service -.->|"uses body"| node_email_template
node_otp_service -.->|"stores OTP"| node_mongo
node_public_api -->|"registers users"| node_user_service
node_public_api -->|"creates token"| node_jwt
node_user_service -->|"persists users"| node_user_repo
node_user_api -->|"manages users"| node_user_service
node_admin_api -->|"manages users"| node_user_service
node_admin_api -->|"manages prompts"| node_prompt_handler
node_prompt_handler -->|"loads and updates"| node_prompt_files
node_prompt_handler -->|"loads template"| node_constant_handler
node_constant_handler -->|"reads template"| node_email_template
node_ai_api -->|"handles chat"| node_chat_service
node_chat_service -->|"requests response"| node_ai_service
node_ai_service -.->|"queries model"| node_llm
node_chat_service -->|"saves and reads chats"| node_chat_repo
node_chat_service -->|"loads user"| node_user_service
node_chat_repo -.->|"stores conversations"| node_mongo

click node_public_api "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/PublicController.java"
click node_user_api "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/UserController.java"
click node_admin_api "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AdminController.java"
click node_user_service "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/UserService.java"
click node_otp_service "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/OtpVerificationService.java"
click node_email_service "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/EmailService.java"
click node_jwt "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/utils/JwtUtil.java"
click node_security "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/filter/JwtFilter.java"
click node_models "https://github.com/yogeshwaar/syvi/tree/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/entity"
click node_user_repo "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/repository/UserRepository.java"
click node_ai_api "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AiController.java"
click node_chat_service "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/ChatServiceImpl.java"
click node_ai_service "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/AiService.java"
click node_chat_repo "https://github.com/yogeshwaar/syvi/tree/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/repository"
click node_prompt_handler "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/PromptHandler.java"
click node_prompt_files "https://github.com/yogeshwaar/syvi/tree/main/chat-bot-ai%20(2)/prompts"
click node_email_template "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/resources/templates/email-body.html"
click node_constant_handler "https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/ConstantFileHandler.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_public_api,node_user_api,node_admin_api,node_models,node_user toneBlue
class node_user_service,node_otp_service,node_email_service,node_jwt,node_security,node_user_repo toneAmber
class node_ai_api,node_chat_service,node_ai_service,node_chat_repo,node_mongo,node_llm toneMint
class node_prompt_handler,node_prompt_files,node_email_template,node_constant_handler toneRose
class node_admin toneIndigo
```

## Components

### API workflows

- [Public API](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/PublicController.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/PublicController.java`
- [User API](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/UserController.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/UserController.java`
- [Admin API](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AdminController.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AdminController.java`
- [Domain models](https://github.com/yogeshwaar/syvi/tree/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/entity): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/entity`

### Identity and access

- [User service](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/UserService.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/UserService.java`
- [OTP verification](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/OtpVerificationService.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/OtpVerificationService.java`
- [Email service](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/EmailService.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/EmailService.java`
- [JWT utilities](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/utils/JwtUtil.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/utils/JwtUtil.java`
- [Security filter](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/filter/JwtFilter.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/filter/JwtFilter.java`
- [User repository](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/repository/UserRepository.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/repository/UserRepository.java`

### Chat and AI

- [AI API](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AiController.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AiController.java`
- [Chat service](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/ChatServiceImpl.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/ChatServiceImpl.java`
- [AI service](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/AiService.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/AiService.java`
- [Chat repositories](https://github.com/yogeshwaar/syvi/tree/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/repository): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/repository`
- **MongoDB Atlas**
- **NVIDIA LLM**

### Prompts and email

- [Prompt handler](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/PromptHandler.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/PromptHandler.java`
- [Prompt files](https://github.com/yogeshwaar/syvi/tree/main/chat-bot-ai%20(2)/prompts): `chat-bot-ai (2)/prompts`
- [Email template](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/resources/templates/email-body.html): `chat-bot-ai (2)/chat-bot-ai/src/main/resources/templates/email-body.html`
- [Template constants](https://github.com/yogeshwaar/syvi/blob/main/chat-bot-ai%20(2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/ConstantFileHandler.java): `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/ConstantFileHandler.java`

### Other components

- **User**
- **Admin**

## Connections

- User → Public API: uses
- User → AI API: asks
- Admin → Admin API: manages (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AdminController.java`)
- Public API → OTP verification: verifies OTP (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/PublicController.java`)
- OTP verification → Email service: sends email (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/OtpVerificationService.java`)
- OTP verification → Email template: uses body
- OTP verification → MongoDB Atlas: stores OTP
- Public API → User service: registers users (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/PublicController.java`)
- Public API → JWT utilities: creates token (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/PublicController.java`)
- User service → User repository: persists users (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/UserService.java`)
- User API → User service: manages users (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/UserController.java`)
- Admin API → User service: manages users (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AdminController.java`)
- Admin API → Prompt handler: manages prompts (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AdminController.java`)
- Prompt handler → Prompt files: loads and updates (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/PromptHandler.java`)
- Prompt handler → Template constants: loads template (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/PromptHandler.java`)
- Template constants → Email template: reads template (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/helper/ConstantFileHandler.java`)
- AI API → Chat service: handles chat (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/controller/AiController.java`)
- Chat service → AI service: requests response (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/ChatServiceImpl.java`)
- AI service → NVIDIA LLM: queries model (evidence: `README.md`)
- Chat service → Chat repositories: saves and reads chats (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/ChatServiceImpl.java`)
- Chat service → User service: loads user (evidence: `chat-bot-ai (2)/chat-bot-ai/src/main/java/com/coeta/group5/chat_bot_ai/service/ChatServiceImpl.java`)
- Chat repositories → MongoDB Atlas: stores conversations (evidence: `README.md`)
