# vamamurin/java-socket-chat architecture

> Architecture diagram of the GitHub repository vamamurin/java-socket-chat, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vamamurin/java-socket-chat
- Repository: https://github.com/vamamurin/java-socket-chat

## Overview

This repository appears to implement a terminal chat client backed by a Spring-based chat server. The likely user workflow is login or registration, then messaging and relationship management; the server exposes corresponding API and persistence layers, with JWT/security components. The tree supports these subsystem boundaries, but no README or source excerpts were provided, so runtime calls and data flows are unverified; inferred links are dashed and have no evidence path.

Main entry points: [`chat_server/src/main/java/com/example/chat_server/repository`](https://github.com/vamamurin/java-socket-chat/tree/main/chat_server/src/main/java/com/example/chat_server/repository) (Repositories), [`chat_client/src/main/java/com/example/chat_client/controller/ClientController.java`](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/controller/ClientController.java) (Client controller), [`chat_client/src/main/java/com/example/chat_client/service`](https://github.com/vamamurin/java-socket-chat/tree/main/chat_client/src/main/java/com/example/chat_client/service) (Client services), [`chat_client/src/main/java/com/example/chat_client/ui/LoginTUI.java`](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/LoginTUI.java) (Login UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client_ui["Client interface"]
  node_client_app["Client startup"]
  node_client_controller["Client controller"]
  node_login_ui["Login UI<br/>[LoginTUI.java]"]
  node_register_ui["Registration UI<br/>[RegisterTUI.java]"]
  node_chat_ui["Chat UI<br/>[ChatTUI.java]"]
  node_relationship_ui["Relationship UI"]
end

subgraph group_client_logic["Client logic"]
  node_client_services["Client services"]
  node_client_api["HTTP clients"]
  node_client_session["User session<br/>[UserSession.java]"]
  node_client_models["Client models"]
end

subgraph group_server_api["Server API"]
  node_auth_api["Auth API"]
  node_message_api["Message API"]
  node_relationship_api["Relationship API"]
  node_request_api["Relationship requests"]
end

subgraph group_server_domain["Server domain"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
  node_message_service["Messaging"]
  node_relationship_service["Relationships"]
  node_request_service["Relationship requests"]
end

subgraph group_server_support["Server support"]
  node_repositories["Repositories"]
  node_entities["Domain entities"]
  node_jwt_security["JWT security"]
  node_security_config["Security configuration"]
end

node_user(("User"))
node_server(("Chat server"))
node_database[("Database")]

node_user -.->|"signs in"| node_login_ui
node_user -.->|"registers"| node_register_ui
node_user -.->|"uses"| node_chat_ui
node_user -.->|"manages links"| node_relationship_ui
node_login_ui -.->|"submits credentials"| node_client_controller
node_register_ui -.->|"submits registration"| node_client_controller
node_chat_ui -.->|"sends messages"| node_client_controller
node_relationship_ui -.->|"manages requests"| node_client_controller
node_client_controller -.->|"dispatches actions"| node_client_services
node_client_services -.->|"makes requests"| node_client_api
node_client_services -.->|"uses session"| node_client_session
node_client_services -.->|"uses models"| node_client_models
node_client_api -.->|"calls API"| node_server
node_server -.->|"routes auth"| node_auth_api
node_server -.->|"routes messages"| node_message_api
node_server -.->|"routes relationships"| node_relationship_api
node_server -.->|"routes requests"| node_request_api
node_auth_api -.->|"delegates"| node_auth_service
node_message_api -.->|"delegates"| node_message_service
node_relationship_api -.->|"delegates"| node_relationship_service
node_request_api -.->|"delegates"| node_request_service
node_auth_service -.->|"uses"| node_repositories
node_message_service -.->|"uses"| node_repositories
node_relationship_service -.->|"uses"| node_repositories
node_request_service -.->|"uses"| node_repositories
node_repositories -.->|"persists"| node_entities
node_repositories -.->|"reads and writes"| node_database
node_security_config -.->|"configures"| node_jwt_security

click node_client_app "https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ChatClientApplication.java"
click node_client_controller "https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/controller/ClientController.java"
click node_login_ui "https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/LoginTUI.java"
click node_register_ui "https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/RegisterTUI.java"
click node_chat_ui "https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/ChatTUI.java"
click node_relationship_ui "https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/RelationshipTUI.java"
click node_client_services "https://github.com/vamamurin/java-socket-chat/tree/main/chat_client/src/main/java/com/example/chat_client/service"
click node_client_api "https://github.com/vamamurin/java-socket-chat/tree/main/chat_client/src/main/java/com/example/chat_client/api"
click node_client_session "https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/core/UserSession.java"
click node_client_models "https://github.com/vamamurin/java-socket-chat/tree/main/chat_client/src/main/java/com/example/chat_client/model"
click node_auth_api "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/controller/AuthController.java"
click node_message_api "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/controller/MessageController.java"
click node_relationship_api "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/controller/RelationshipController.java"
click node_request_api "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/controller/RelationshipRequestController.java"
click node_auth_service "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/service/AuthService.java"
click node_message_service "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/service/MessageService.java"
click node_relationship_service "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/service/RelationshipService.java"
click node_request_service "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/service/RelationshipRequestService.java"
click node_repositories "https://github.com/vamamurin/java-socket-chat/tree/main/chat_server/src/main/java/com/example/chat_server/repository"
click node_entities "https://github.com/vamamurin/java-socket-chat/tree/main/chat_server/src/main/java/com/example/chat_server/entity"
click node_jwt_security "https://github.com/vamamurin/java-socket-chat/tree/main/chat_server/src/main/java/com/example/chat_server/security"
click node_security_config "https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/config/SecurityConfig.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_client_app,node_client_controller,node_login_ui,node_register_ui,node_chat_ui,node_relationship_ui,node_user toneBlue
class node_client_services,node_client_api,node_client_session,node_client_models,node_database toneAmber
class node_auth_api,node_message_api,node_relationship_api,node_request_api,node_server toneMint
class node_auth_service,node_message_service,node_relationship_service,node_request_service toneRose
class node_repositories,node_entities,node_jwt_security,node_security_config toneIndigo
```

## Components

### Client interface

- [Client startup](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ChatClientApplication.java): `chat_client/src/main/java/com/example/chat_client/ChatClientApplication.java`
- [Client controller](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/controller/ClientController.java): `chat_client/src/main/java/com/example/chat_client/controller/ClientController.java`
- [Login UI](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/LoginTUI.java): `chat_client/src/main/java/com/example/chat_client/ui/LoginTUI.java`
- [Registration UI](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/RegisterTUI.java): `chat_client/src/main/java/com/example/chat_client/ui/RegisterTUI.java`
- [Chat UI](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/ChatTUI.java): `chat_client/src/main/java/com/example/chat_client/ui/ChatTUI.java`
- [Relationship UI](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/ui/RelationshipTUI.java): `chat_client/src/main/java/com/example/chat_client/ui/RelationshipTUI.java`

### Client logic

- [Client services](https://github.com/vamamurin/java-socket-chat/tree/main/chat_client/src/main/java/com/example/chat_client/service): `chat_client/src/main/java/com/example/chat_client/service`
- [HTTP clients](https://github.com/vamamurin/java-socket-chat/tree/main/chat_client/src/main/java/com/example/chat_client/api): `chat_client/src/main/java/com/example/chat_client/api`
- [User session](https://github.com/vamamurin/java-socket-chat/blob/main/chat_client/src/main/java/com/example/chat_client/core/UserSession.java): `chat_client/src/main/java/com/example/chat_client/core/UserSession.java`
- [Client models](https://github.com/vamamurin/java-socket-chat/tree/main/chat_client/src/main/java/com/example/chat_client/model): `chat_client/src/main/java/com/example/chat_client/model`

### Server API

- [Auth API](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/controller/AuthController.java): `chat_server/src/main/java/com/example/chat_server/controller/AuthController.java`
- [Message API](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/controller/MessageController.java): `chat_server/src/main/java/com/example/chat_server/controller/MessageController.java`
- [Relationship API](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/controller/RelationshipController.java): `chat_server/src/main/java/com/example/chat_server/controller/RelationshipController.java`
- [Relationship requests](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/controller/RelationshipRequestController.java): `chat_server/src/main/java/com/example/chat_server/controller/RelationshipRequestController.java`

### Server domain

- [Authentication](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/service/AuthService.java): `chat_server/src/main/java/com/example/chat_server/service/AuthService.java`
- [Messaging](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/service/MessageService.java): `chat_server/src/main/java/com/example/chat_server/service/MessageService.java`
- [Relationships](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/service/RelationshipService.java): `chat_server/src/main/java/com/example/chat_server/service/RelationshipService.java`
- [Relationship requests](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/service/RelationshipRequestService.java): `chat_server/src/main/java/com/example/chat_server/service/RelationshipRequestService.java`

### Server support

- [Repositories](https://github.com/vamamurin/java-socket-chat/tree/main/chat_server/src/main/java/com/example/chat_server/repository): `chat_server/src/main/java/com/example/chat_server/repository`
- [Domain entities](https://github.com/vamamurin/java-socket-chat/tree/main/chat_server/src/main/java/com/example/chat_server/entity): `chat_server/src/main/java/com/example/chat_server/entity`
- [JWT security](https://github.com/vamamurin/java-socket-chat/tree/main/chat_server/src/main/java/com/example/chat_server/security): `chat_server/src/main/java/com/example/chat_server/security`
- [Security configuration](https://github.com/vamamurin/java-socket-chat/blob/main/chat_server/src/main/java/com/example/chat_server/config/SecurityConfig.java): `chat_server/src/main/java/com/example/chat_server/config/SecurityConfig.java`

### Other components

- **User**
- **Chat server**
- **Database**

## Connections

- User → Login UI: signs in
- User → Registration UI: registers
- User → Chat UI: uses
- User → Relationship UI: manages links
- Login UI → Client controller: submits credentials
- Registration UI → Client controller: submits registration
- Chat UI → Client controller: sends messages
- Relationship UI → Client controller: manages requests
- Client controller → Client services: dispatches actions
- Client services → HTTP clients: makes requests
- Client services → User session: uses session
- Client services → Client models: uses models
- HTTP clients → Chat server: calls API
- Chat server → Auth API: routes auth
- Chat server → Message API: routes messages
- Chat server → Relationship API: routes relationships
- Chat server → Relationship requests: routes requests
- Auth API → Authentication: delegates
- Message API → Messaging: delegates
- Relationship API → Relationships: delegates
- Relationship requests → Relationship requests: delegates
- Authentication → Repositories: uses
- Messaging → Repositories: uses
- Relationships → Repositories: uses
- Relationship requests → Repositories: uses
- Repositories → Domain entities: persists
- Repositories → Database: reads and writes
- Security configuration → JWT security: configures
