# calixto-sxz/chat-sistemas-distribuidos architecture

> Architecture diagram of the GitHub repository calixto-sxz/chat-sistemas-distribuidos, 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/calixto-sxz/chat-sistemas-distribuidos
- Repository: https://github.com/calixto-sxz/chat-sistemas-distribuidos

## Overview

This is a small Windows TCP chat application. A user starts the client, connects to the server, supplies a username, and exchanges messages; the server broadcasts chat and join/leave notices to connected clients and keeps message history in memory and in a local file. The main runtime is visible in both source files. Edges reflect calls and socket traffic shown in the excerpts; no README or further product capabilities were provided.

Main entry points: [`server.cpp`](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp) (Client handler), [`client.cpp`](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/client.cpp) (Client app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Chat client"]
  node_client_app["Client app<br/>[client.cpp]"]
  node_client_receive["Message receiver<br/>[client.cpp]"]
end

subgraph group_server["Chat server"]
  node_server_listener["Connection listener<br/>[server.cpp]"]
  node_client_handler["Client handler<br/>[server.cpp]"]
  node_broadcast["Message broadcast<br/>[server.cpp]"]
end

subgraph group_history["Message history"]
  node_history_memory[("In-memory history<br/>[server.cpp]")]
  node_history_file["History file<br/>[server.cpp]"]
end

node_user(("Chat user"))

node_user -->|"enters messages"| node_client_app
node_client_app -->|"connects via TCP"| node_server_listener
node_server_listener -->|"dispatches client"| node_client_handler
node_client_app -->|"sends username and chat"| node_client_handler
node_client_handler -->|"broadcasts messages"| node_broadcast
node_broadcast -->|"sends chat over TCP"| node_client_receive
node_client_receive -->|"displays messages"| node_user
node_client_handler -->|"appends messages"| node_history_memory
node_client_handler -->|"saves messages"| node_history_file
node_server_listener -->|"loads on startup"| node_history_memory
node_history_file -->|"reads saved lines"| node_history_memory
node_client_handler -->|"sends prior history"| node_history_memory

click node_client_app "https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/client.cpp"
click node_client_receive "https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/client.cpp"
click node_server_listener "https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp"
click node_client_handler "https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp"
click node_broadcast "https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp"
click node_history_memory "https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp"
click node_history_file "https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp"

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_receive,node_user toneBlue
class node_server_listener,node_client_handler,node_broadcast toneAmber
class node_history_memory,node_history_file toneMint
```

## Components

### Chat client

- [Client app](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/client.cpp): `client.cpp`
- [Message receiver](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/client.cpp): `client.cpp`

### Chat server

- [Connection listener](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp): `server.cpp`
- [Client handler](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp): `server.cpp`
- [Message broadcast](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp): `server.cpp`

### Message history

- [In-memory history](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp): `server.cpp`
- [History file](https://github.com/calixto-sxz/chat-sistemas-distribuidos/blob/main/server.cpp): `server.cpp`

### Other components

- **Chat user**

## Connections

- Chat user → Client app: enters messages (evidence: `client.cpp`)
- Client app → Connection listener: connects via TCP (evidence: `client.cpp`)
- Connection listener → Client handler: dispatches client (evidence: `server.cpp`)
- Client app → Client handler: sends username and chat (evidence: `client.cpp`)
- Client handler → Message broadcast: broadcasts messages (evidence: `server.cpp`)
- Message broadcast → Message receiver: sends chat over TCP (evidence: `server.cpp`)
- Message receiver → Chat user: displays messages (evidence: `client.cpp`)
- Client handler → In-memory history: appends messages (evidence: `server.cpp`)
- Client handler → History file: saves messages (evidence: `server.cpp`)
- Connection listener → In-memory history: loads on startup (evidence: `server.cpp`)
- History file → In-memory history: reads saved lines (evidence: `server.cpp`)
- Client handler → In-memory history: sends prior history (evidence: `server.cpp`)
