# theplaceoftangerine/mfc_chat architecture

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

- Interactive diagram: https://gitdiagram.com/theplaceoftangerine/mfc_chat
- Repository: https://github.com/theplaceoftangerine/mfc_chat

## Overview

This repository’s main product is a Windows MFC chat client backed by a TCP server. The principal flow is a user action in the client UI, sent through the TCP client, handled by the server, and persisted through its database layer. Server declarations and database APIs show support for login, direct and group messaging, delivery/read state, attachments, avatars, and conversation queries. The UI-to-client and server-to-database links are evidenced; the client-to-server wire relationship is strongly implied but not directly shown in the excerpts. Week-based projects appear to be separate prototypes or variants.

Main entry points: [`Server/Server.cpp`](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp) (TCP request handling), [`MFCChat/TcpChatClient.cpp`](https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/TcpChatClient.cpp) (TCP client), [`MFCChat/MFCChatDlg.cpp`](https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/MFCChatDlg.cpp) (Chat UI), [`Server/Database.cpp`](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Database.cpp) (Chat data access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Chat client"]
  node_ui["Chat UI<br/>[MFCChatDlg.cpp]"]
  node_auth_ui["Login and registration<br/>[CLoginDlg.cpp]"]
  node_tcp_client["TCP client<br/>[TcpChatClient.cpp]"]
  node_protocol["Chat protocol<br/>[ChatProtocol.h]"]
end

subgraph group_service["Chat server"]
  node_server["TCP request handling<br/>[Server.cpp]"]
  node_accounts["Account operations<br/>[Server.cpp]"]
  node_direct_messages["Direct messages<br/>[Server.cpp]"]
  node_groups["Group messaging<br/>[Server.cpp]"]
  node_attachments["Attachments and avatars<br/>[Server.cpp]"]
end

subgraph group_storage["Persistence"]
  node_database["Chat data access<br/>[Database.cpp]"]
  node_sqlite[("SQLite engine<br/>[sqlite3.c]")]
end

subgraph group_variants["IPC variants"]
  node_named_pipe_client["Named-pipe client"]
  node_named_pipe_server["Named-pipe server"]
  node_windows_message["Windows-message chat"]
  node_variant_db["Variant database<br/>[Database.cpp]"]
end

node_user(("Chat user"))

node_user -->|"uses"| node_ui
node_ui -->|"calls"| node_tcp_client
node_auth_ui -.->|"uses"| node_tcp_client
node_tcp_client -->|"uses"| node_protocol
node_tcp_client -.->|"sends requests"| node_server
node_server -.->|"dispatches"| node_accounts
node_server -.->|"dispatches"| node_direct_messages
node_server -.->|"dispatches"| node_groups
node_server -.->|"dispatches"| node_attachments
node_server -->|"reads and writes"| node_database
node_database -.->|"uses"| node_sqlite
node_named_pipe_client -.->|"communicates"| node_named_pipe_server
node_windows_message -.->|"uses"| node_variant_db

click node_ui "https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/MFCChatDlg.cpp"
click node_auth_ui "https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/CLoginDlg.cpp"
click node_tcp_client "https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/TcpChatClient.cpp"
click node_protocol "https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/ChatProtocol.h"
click node_server "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp"
click node_accounts "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp"
click node_direct_messages "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp"
click node_groups "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp"
click node_attachments "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp"
click node_database "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Database.cpp"
click node_sqlite "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/sqlite3.c"
click node_named_pipe_client "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Week3/MFCChat_NamedPipe/MFCChat/NamedPipeClient.cpp"
click node_named_pipe_server "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Week3/MFCChat_NamedPipe/MFCChat/NamedPipeServer.cpp"
click node_windows_message "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Week3/MFCChat_WindowsMessage/MFCChat/ChatWindowsMessage.cpp"
click node_variant_db "https://github.com/theplaceoftangerine/mfc_chat/blob/main/Week3/MFCChat_WindowsMessage/MFCChat/Database.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_ui,node_auth_ui,node_tcp_client,node_protocol,node_user toneBlue
class node_server,node_accounts,node_direct_messages,node_groups,node_attachments toneAmber
class node_database,node_sqlite toneMint
class node_named_pipe_client,node_named_pipe_server,node_windows_message,node_variant_db toneRose
```

## Components

### Chat client

- [Chat UI](https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/MFCChatDlg.cpp): `MFCChat/MFCChatDlg.cpp`
- [Login and registration](https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/CLoginDlg.cpp): `MFCChat/CLoginDlg.cpp`
- [TCP client](https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/TcpChatClient.cpp): `MFCChat/TcpChatClient.cpp`
- [Chat protocol](https://github.com/theplaceoftangerine/mfc_chat/blob/main/MFCChat/ChatProtocol.h): `MFCChat/ChatProtocol.h`

### Chat server

- [TCP request handling](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp): `Server/Server.cpp`
- [Account operations](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp): `Server/Server.cpp`
- [Direct messages](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp): `Server/Server.cpp`
- [Group messaging](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp): `Server/Server.cpp`
- [Attachments and avatars](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Server.cpp): `Server/Server.cpp`

### Persistence

- [Chat data access](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/Database.cpp): `Server/Database.cpp`
- [SQLite engine](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Server/sqlite3.c): `Server/sqlite3.c`

### IPC variants

- [Named-pipe client](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Week3/MFCChat_NamedPipe/MFCChat/NamedPipeClient.cpp): `Week3/MFCChat_NamedPipe/MFCChat/NamedPipeClient.cpp`
- [Named-pipe server](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Week3/MFCChat_NamedPipe/MFCChat/NamedPipeServer.cpp): `Week3/MFCChat_NamedPipe/MFCChat/NamedPipeServer.cpp`
- [Windows-message chat](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Week3/MFCChat_WindowsMessage/MFCChat/ChatWindowsMessage.cpp): `Week3/MFCChat_WindowsMessage/MFCChat/ChatWindowsMessage.cpp`
- [Variant database](https://github.com/theplaceoftangerine/mfc_chat/blob/main/Week3/MFCChat_WindowsMessage/MFCChat/Database.cpp): `Week3/MFCChat_WindowsMessage/MFCChat/Database.cpp`

### Other components

- **Chat user**

## Connections

- Chat user → Chat UI: uses
- Chat UI → TCP client: calls (evidence: `MFCChat/MFCChatDlg.cpp`)
- Login and registration → TCP client: uses
- TCP client → Chat protocol: uses (evidence: `MFCChat/TcpChatClient.cpp`)
- TCP client → TCP request handling: sends requests
- TCP request handling → Account operations: dispatches (evidence: `Server/Server.cpp`)
- TCP request handling → Direct messages: dispatches (evidence: `Server/Server.cpp`)
- TCP request handling → Group messaging: dispatches (evidence: `Server/Server.cpp`)
- TCP request handling → Attachments and avatars: dispatches (evidence: `Server/Server.cpp`)
- TCP request handling → Chat data access: reads and writes (evidence: `Server/Server.cpp`)
- Chat data access → SQLite engine: uses
- Named-pipe client → Named-pipe server: communicates
- Windows-message chat → Variant database: uses
