# lyfe691/chatapp architecture

> Architecture diagram of the GitHub repository lyfe691/chatapp, 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/lyfe691/chatapp
- Repository: https://github.com/lyfe691/chatapp

## Overview

ChatApp is a Spring Boot/MongoDB messaging application. Users register and verify by email, authenticate, then create or join chat rooms and exchange real-time messages; account recovery and profile preferences are additional flows. The graph separates web/authentication, chat, and persistence concerns. The sampled controllers and services establish the principal calls; README claims preserve documented capabilities where implementation details were not sampled. The separate UserDetailsService is included as a substantial indexed module, though its wiring is not shown.

Main entry points: [`src/main/java/com/ybdd/ChatApp/controller/ChatController.java`](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/controller/ChatController.java) (Chat Controller), [`src/main/java/com/ybdd/ChatApp/controller/AuthController.java`](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/controller/AuthController.java) (Auth Controller), [`src/main/java/com/ybdd/ChatApp/service/UserService.java`](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/service/UserService.java) (User Service), [`src/main/java/com/ybdd/ChatApp/repository/UserRepository.java`](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/repository/UserRepository.java) (User Repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web and Security"]
  node_webapp["Web UI"]
  node_landing["Landing Routes"]
  node_security["Security Config"]
end

subgraph group_identity["Accounts and Email"]
  node_auth["Auth Controller"]
  node_userservice["User Service<br/>[UserService.java]"]
  node_details["User Details Service"]
  node_email["Email Service<br/>[EmailService.java]"]
  node_tokens["Token Repositories"]
  node_tokenmodels["Token Models"]
  node_user["User Model<br/>[User.java]"]
end

subgraph group_chat["Rooms and Messaging"]
  node_chatcontroller["Chat Controller"]
  node_wsconfig["WebSocket Config"]
  node_message["Message Model<br/>[Message.java]"]
end

subgraph group_data["Persistence"]
  node_userrepo["User Repository"]
  node_messagerepo["Message Repository"]
end

node_visitor(("User"))
node_mongo[("MongoDB")]
node_mailprovider["Mail Provider"]
node_chatclient(("Chat Client"))

node_visitor -->|"uses"| node_webapp
node_webapp -.->|"requests pages"| node_landing
node_visitor -->|"submits account requests"| node_auth
node_auth -->|"manages accounts"| node_userservice
node_auth -->|"stores and checks tokens"| node_tokens
node_auth -->|"creates and checks tokens"| node_tokenmodels
node_auth -->|"sends account email"| node_email
node_userservice -->|"reads and saves users"| node_userrepo
node_userservice -->|"creates and updates"| node_user
node_security -->|"authenticates with"| node_userservice
node_email -->|"sends messages"| node_mailprovider
node_visitor -->|"creates or joins rooms"| node_chatcontroller
node_chatclient -->|"sends chat events"| node_chatcontroller
node_chatcontroller -->|"stores and loads messages"| node_messagerepo
node_chatcontroller -->|"reads and saves users"| node_userrepo
node_chatcontroller -->|"sets message fields"| node_message
node_chatcontroller -->|"updates room and messages"| node_user
node_userrepo -->|"persists users"| node_mongo
node_messagerepo -->|"persists messages"| node_mongo
node_tokens -.->|"persists tokens"| node_mongo
node_chatclient -.->|"connects over WebSocket"| node_wsconfig

click node_webapp "https://github.com/lyfe691/chatapp/tree/main/src/main/resources/templates"
click node_landing "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/controller/LandingController.java"
click node_security "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/config/WebSecurityConfig.java"
click node_auth "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/controller/AuthController.java"
click node_userservice "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/service/UserService.java"
click node_details "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/service/UserDetailsService.java"
click node_email "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/service/EmailService.java"
click node_tokens "https://github.com/lyfe691/chatapp/tree/main/src/main/java/com/ybdd/ChatApp/repository"
click node_tokenmodels "https://github.com/lyfe691/chatapp/tree/main/src/main/java/com/ybdd/ChatApp/model"
click node_chatcontroller "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/controller/ChatController.java"
click node_wsconfig "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/config/WebSocketConfig.java"
click node_message "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/model/Message.java"
click node_user "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/model/User.java"
click node_userrepo "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/repository/UserRepository.java"
click node_messagerepo "https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/repository/MessageRepository.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_webapp,node_landing,node_security,node_visitor,node_chatclient toneBlue
class node_auth,node_userservice,node_details,node_email,node_tokens,node_tokenmodels,node_user,node_mongo toneAmber
class node_chatcontroller,node_wsconfig,node_message toneMint
class node_userrepo,node_messagerepo toneRose
class node_mailprovider toneIndigo
```

## Components

### Web and Security

- [Web UI](https://github.com/lyfe691/chatapp/tree/main/src/main/resources/templates): `src/main/resources/templates`
- [Landing Routes](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/controller/LandingController.java): `src/main/java/com/ybdd/ChatApp/controller/LandingController.java`
- [Security Config](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/config/WebSecurityConfig.java): `src/main/java/com/ybdd/ChatApp/config/WebSecurityConfig.java`

### Accounts and Email

- [Auth Controller](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/controller/AuthController.java): `src/main/java/com/ybdd/ChatApp/controller/AuthController.java`
- [User Service](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/service/UserService.java): `src/main/java/com/ybdd/ChatApp/service/UserService.java`
- [User Details Service](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/service/UserDetailsService.java): `src/main/java/com/ybdd/ChatApp/service/UserDetailsService.java`
- [Email Service](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/service/EmailService.java): `src/main/java/com/ybdd/ChatApp/service/EmailService.java`
- [Token Repositories](https://github.com/lyfe691/chatapp/tree/main/src/main/java/com/ybdd/ChatApp/repository): `src/main/java/com/ybdd/ChatApp/repository`
- [Token Models](https://github.com/lyfe691/chatapp/tree/main/src/main/java/com/ybdd/ChatApp/model): `src/main/java/com/ybdd/ChatApp/model`
- [User Model](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/model/User.java): `src/main/java/com/ybdd/ChatApp/model/User.java`

### Rooms and Messaging

- [Chat Controller](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/controller/ChatController.java): `src/main/java/com/ybdd/ChatApp/controller/ChatController.java`
- [WebSocket Config](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/config/WebSocketConfig.java): `src/main/java/com/ybdd/ChatApp/config/WebSocketConfig.java`
- [Message Model](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/model/Message.java): `src/main/java/com/ybdd/ChatApp/model/Message.java`

### Persistence

- [User Repository](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/repository/UserRepository.java): `src/main/java/com/ybdd/ChatApp/repository/UserRepository.java`
- [Message Repository](https://github.com/lyfe691/chatapp/blob/main/src/main/java/com/ybdd/ChatApp/repository/MessageRepository.java): `src/main/java/com/ybdd/ChatApp/repository/MessageRepository.java`

### Other components

- **User**
- **MongoDB**
- **Mail Provider**
- **Chat Client**

## Connections

- User → Web UI: uses (evidence: `README.md`)
- Web UI → Landing Routes: requests pages
- User → Auth Controller: submits account requests (evidence: `src/main/java/com/ybdd/ChatApp/controller/AuthController.java`)
- Auth Controller → User Service: manages accounts (evidence: `src/main/java/com/ybdd/ChatApp/controller/AuthController.java`)
- Auth Controller → Token Repositories: stores and checks tokens (evidence: `src/main/java/com/ybdd/ChatApp/controller/AuthController.java`)
- Auth Controller → Token Models: creates and checks tokens (evidence: `src/main/java/com/ybdd/ChatApp/controller/AuthController.java`)
- Auth Controller → Email Service: sends account email (evidence: `src/main/java/com/ybdd/ChatApp/controller/AuthController.java`)
- User Service → User Repository: reads and saves users (evidence: `src/main/java/com/ybdd/ChatApp/service/UserService.java`)
- User Service → User Model: creates and updates (evidence: `src/main/java/com/ybdd/ChatApp/service/UserService.java`)
- Security Config → User Service: authenticates with (evidence: `src/main/java/com/ybdd/ChatApp/config/WebSecurityConfig.java`)
- Email Service → Mail Provider: sends messages (evidence: `src/main/java/com/ybdd/ChatApp/service/EmailService.java`)
- User → Chat Controller: creates or joins rooms (evidence: `src/main/java/com/ybdd/ChatApp/controller/ChatController.java`)
- Chat Client → Chat Controller: sends chat events (evidence: `src/main/java/com/ybdd/ChatApp/controller/ChatController.java`)
- Chat Controller → Message Repository: stores and loads messages (evidence: `src/main/java/com/ybdd/ChatApp/controller/ChatController.java`)
- Chat Controller → User Repository: reads and saves users (evidence: `src/main/java/com/ybdd/ChatApp/controller/ChatController.java`)
- Chat Controller → Message Model: sets message fields (evidence: `src/main/java/com/ybdd/ChatApp/controller/ChatController.java`)
- Chat Controller → User Model: updates room and messages (evidence: `src/main/java/com/ybdd/ChatApp/controller/ChatController.java`)
- User Repository → MongoDB: persists users (evidence: `src/main/java/com/ybdd/ChatApp/repository/UserRepository.java`)
- Message Repository → MongoDB: persists messages (evidence: `src/main/java/com/ybdd/ChatApp/repository/MessageRepository.java`)
- Token Repositories → MongoDB: persists tokens
- Chat Client → WebSocket Config: connects over WebSocket (evidence: `README.md`)
