# sodamkimkim/javasocketnetworking_youcheatalk architecture

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

- Interactive diagram: https://gitdiagram.com/sodamkimkim/javasocketnetworking_youcheatalk
- Repository: https://github.com/sodamkimkim/javasocketnetworking_youcheatalk

## Overview

YouChaeTalk is a Java Swing chat-room application using socket communication and multithreading. A user connects with an ID, views users and rooms, creates or joins a room, and exchanges room messages or private notes; the server manages connected users, room membership, and broadcasts. The README also documents stacked-panel navigation, duplicate checks, and empty-room cleanup. The excerpts show the principal client/server protocol and an older `chatting_ref` implementation; the legacy client’s details and some newer client handlers were only partially sampled.

Main entry points: [`SocketNetworkingChatting/src/SodamiChat/Client.java`](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java) (Swing client), [`SocketNetworkingChatting/src/SodamiChat/Server.java`](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java) (Protocol dispatch), [`SocketNetworkingChatting/src/chatting_ref/Client.java`](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/chatting_ref/Client.java) (Legacy Swing client), [`SocketNetworkingChatting/src/chatting_ref/Server.java`](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/chatting_ref/Server.java) (Legacy socket server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_main["Current Chat"]
  node_client["Swing client<br/>[Client.java]"]
  node_navigation["Panel navigation<br/>[Client.java]"]
  node_userlist["User and room lists<br/>[Client.java]"]
  node_roomchat["Room chat view<br/>[Client.java]"]
  node_notes["Private notes<br/>[Client.java]"]
end

subgraph group_server["Server Runtime"]
  node_serverui["Server controls<br/>[Server.java]"]
  node_session["Socket sessions<br/>[Server.java]"]
  node_protocol["Protocol dispatch<br/>[Server.java]"]
  node_users[("Connected users<br/>[Server.java]")]
  node_rooms[("Chat rooms<br/>[Server.java]")]
end

subgraph group_legacy["Legacy Chat"]
  node_legacyclient["Legacy Swing client<br/>[Client.java]"]
  node_legacyserver["Legacy socket server<br/>[Server.java]"]
  node_legacyrooms[("Legacy room handling<br/>[Server.java]")]
end

node_user(("Chat user"))

node_user -->|"uses"| node_client
node_client -->|"manages panels"| node_navigation
node_client -->|"opens socket"| node_session
node_client -->|"sends commands"| node_protocol
node_protocol -->|"updates users"| node_users
node_protocol -->|"updates rooms"| node_rooms
node_client -->|"shows lists"| node_userlist
node_client -->|"sends chat"| node_roomchat
node_client -->|"sends notes"| node_notes
node_protocol -->|"routes notes"| node_notes
node_protocol -->|"broadcasts chat"| node_roomchat
node_serverui -->|"starts listener"| node_session
node_user -->|"uses"| node_legacyclient
node_legacyclient -->|"connects by socket"| node_legacyserver
node_legacyserver -->|"manages membership"| node_legacyrooms

click node_client "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java"
click node_navigation "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java"
click node_userlist "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java"
click node_roomchat "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java"
click node_notes "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java"
click node_serverui "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java"
click node_session "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java"
click node_protocol "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java"
click node_users "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java"
click node_rooms "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java"
click node_legacyclient "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/chatting_ref/Client.java"
click node_legacyserver "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/chatting_ref/Server.java"
click node_legacyrooms "https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/chatting_ref/Server.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,node_navigation,node_userlist,node_roomchat,node_notes,node_user toneBlue
class node_serverui,node_session,node_protocol,node_users,node_rooms toneAmber
class node_legacyclient,node_legacyserver,node_legacyrooms toneMint
```

## Components

### Current Chat

- [Swing client](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java): `SocketNetworkingChatting/src/SodamiChat/Client.java`
- [Panel navigation](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java): `SocketNetworkingChatting/src/SodamiChat/Client.java`
- [User and room lists](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java): `SocketNetworkingChatting/src/SodamiChat/Client.java`
- [Room chat view](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java): `SocketNetworkingChatting/src/SodamiChat/Client.java`
- [Private notes](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Client.java): `SocketNetworkingChatting/src/SodamiChat/Client.java`

### Server Runtime

- [Server controls](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java): `SocketNetworkingChatting/src/SodamiChat/Server.java`
- [Socket sessions](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java): `SocketNetworkingChatting/src/SodamiChat/Server.java`
- [Protocol dispatch](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java): `SocketNetworkingChatting/src/SodamiChat/Server.java`
- [Connected users](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java): `SocketNetworkingChatting/src/SodamiChat/Server.java`
- [Chat rooms](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/SodamiChat/Server.java): `SocketNetworkingChatting/src/SodamiChat/Server.java`

### Legacy Chat

- [Legacy Swing client](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/chatting_ref/Client.java): `SocketNetworkingChatting/src/chatting_ref/Client.java`
- [Legacy socket server](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/chatting_ref/Server.java): `SocketNetworkingChatting/src/chatting_ref/Server.java`
- [Legacy room handling](https://github.com/sodamkimkim/javasocketnetworking_youcheatalk/blob/main/SocketNetworkingChatting/src/chatting_ref/Server.java): `SocketNetworkingChatting/src/chatting_ref/Server.java`

### Other components

- **Chat user**

## Connections

- Chat user → Swing client: uses (evidence: `README.md`)
- Swing client → Panel navigation: manages panels (evidence: `README.md`)
- Swing client → Socket sessions: opens socket (evidence: `SocketNetworkingChatting/src/SodamiChat/Client.java`)
- Swing client → Protocol dispatch: sends commands (evidence: `SocketNetworkingChatting/src/SodamiChat/Client.java`)
- Protocol dispatch → Connected users: updates users (evidence: `SocketNetworkingChatting/src/SodamiChat/Server.java`)
- Protocol dispatch → Chat rooms: updates rooms (evidence: `SocketNetworkingChatting/src/SodamiChat/Server.java`)
- Swing client → User and room lists: shows lists (evidence: `SocketNetworkingChatting/src/SodamiChat/Client.java`)
- Swing client → Room chat view: sends chat (evidence: `SocketNetworkingChatting/src/SodamiChat/Client.java`)
- Swing client → Private notes: sends notes (evidence: `SocketNetworkingChatting/src/SodamiChat/Client.java`)
- Protocol dispatch → Private notes: routes notes (evidence: `SocketNetworkingChatting/src/SodamiChat/Server.java`)
- Protocol dispatch → Room chat view: broadcasts chat (evidence: `SocketNetworkingChatting/src/SodamiChat/Server.java`)
- Server controls → Socket sessions: starts listener (evidence: `SocketNetworkingChatting/src/SodamiChat/Server.java`)
- Chat user → Legacy Swing client: uses (evidence: `SocketNetworkingChatting/src/chatting_ref/Client.java`)
- Legacy Swing client → Legacy socket server: connects by socket (evidence: `SocketNetworkingChatting/src/chatting_ref/Client.java`)
- Legacy socket server → Legacy room handling: manages membership (evidence: `SocketNetworkingChatting/src/chatting_ref/Server.java`)
