# bvdberg/code architecture

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

- Interactive diagram: https://gitdiagram.com/bvdberg/code
- Repository: https://github.com/bvdberg/code

## Overview

This repository is a collection of independent systems-programming examples, not one integrated application; no README was provided to identify a central product or workflow. The sampled programs cover networking, file-format inspection, compression, and interactive/concurrency demonstrations. Paths and links below reflect the tree and sampled source; unsampled implementations and wiring are omitted.

Main entry points: [`unzip/main.c`](https://github.com/bvdberg/code/blob/master/unzip/main.c) (Gzip extractor), [`websocket-server/WebSocketServer.cpp`](https://github.com/bvdberg/code/blob/master/websocket-server/WebSocketServer.cpp) (WebSocket server), [`linux/io_uring_server/main.c`](https://github.com/bvdberg/code/blob/master/linux/io_uring_server/main.c) (io_uring echo server), [`elf_format/main.c`](https://github.com/bvdberg/code/blob/master/elf_format/main.c) (ELF inspector)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_network["Network servers"]
  node_ws_entry["WebSocket example<br/>[main.cpp]"]
  node_ws_server["WebSocket server"]
  node_uring_server["io_uring echo server<br/>[main.c]"]
end

subgraph group_filetools["File utilities"]
  node_elf_tool["ELF inspector<br/>[main.c]"]
  node_mb_tool["Multiboot inspector<br/>[main.c]"]
  node_ubi_tool["UBI image tool<br/>[main.c]"]
  node_gzip_tool["Gzip extractor<br/>[main.c]"]
  node_tinfl["miniz inflater<br/>[miniz_tinfl.c]"]
  node_zlib_example["zlib example<br/>[main.c]"]
  node_checksum_tool["MD5 checksum tool<br/>[main.c]"]
end

subgraph group_interactive["Interactive demos"]
  node_completion["Word completion<br/>[main.cpp]"]
  node_snake["Snake puzzle solver<br/>[main.c]"]
end

subgraph group_concurrency["Concurrency demo"]
  node_thread_manager["Thread manager<br/>[Manager.cpp]"]
  node_worker_threads["Worker threads<br/>[Manager.cpp]"]
end

node_web_user(("WebSocket peer"))
node_tcp_client(("TCP client"))
node_file_user(("File-tool user"))
node_output_file["Output file"]
node_terminal_user(("Terminal user"))
node_thread_user(("Program caller"))

node_web_user -->|"connects"| node_ws_server
node_ws_entry -->|"steps server"| node_ws_server
node_ws_server -->|"sends frames"| node_web_user
node_tcp_client -->|"sends data"| node_uring_server
node_uring_server -->|"echoes data"| node_tcp_client
node_file_user -->|"selects file"| node_elf_tool
node_elf_tool -->|"prints ELF details"| node_file_user
node_file_user -->|"selects file"| node_mb_tool
node_mb_tool -->|"prints tag details"| node_file_user
node_file_user -->|"selects image"| node_ubi_tool
node_ubi_tool -->|"shows or flashes"| node_file_user
node_file_user -->|"selects archive"| node_gzip_tool
node_gzip_tool -->|"decompresses payload"| node_tinfl
node_gzip_tool -->|"writes extracted data"| node_output_file
node_file_user -->|"runs example"| node_zlib_example
node_file_user -->|"selects file"| node_checksum_tool
node_checksum_tool -->|"prints digest"| node_file_user
node_terminal_user -->|"types input"| node_completion
node_completion -->|"shows matches"| node_terminal_user
node_terminal_user -->|"starts solver"| node_snake
node_snake -->|"prints solutions"| node_terminal_user
node_thread_user -->|"starts or stops"| node_thread_manager
node_thread_manager -->|"creates and joins"| node_worker_threads

click node_ws_entry "https://github.com/bvdberg/code/blob/master/websocket-server/main.cpp"
click node_ws_server "https://github.com/bvdberg/code/blob/master/websocket-server/WebSocketServer.cpp"
click node_uring_server "https://github.com/bvdberg/code/blob/master/linux/io_uring_server/main.c"
click node_elf_tool "https://github.com/bvdberg/code/blob/master/elf_format/main.c"
click node_mb_tool "https://github.com/bvdberg/code/blob/master/multiboot/main.c"
click node_ubi_tool "https://github.com/bvdberg/code/blob/master/linux/ubi_parser/main.c"
click node_gzip_tool "https://github.com/bvdberg/code/blob/master/unzip/main.c"
click node_tinfl "https://github.com/bvdberg/code/blob/master/unzip/miniz/miniz_tinfl.c"
click node_zlib_example "https://github.com/bvdberg/code/blob/master/zlib/main.c"
click node_checksum_tool "https://github.com/bvdberg/code/blob/master/linux/md5sum/main.c"
click node_completion "https://github.com/bvdberg/code/blob/master/auto_completion/main.cpp"
click node_snake "https://github.com/bvdberg/code/blob/master/snake_game/main.c"
click node_thread_manager "https://github.com/bvdberg/code/blob/master/linux/pthread-cleanup/Manager.cpp"
click node_worker_threads "https://github.com/bvdberg/code/blob/master/linux/pthread-cleanup/Manager.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_ws_entry,node_ws_server,node_uring_server,node_tcp_client,node_file_user,node_terminal_user toneBlue
class node_elf_tool,node_mb_tool,node_ubi_tool,node_gzip_tool,node_tinfl,node_zlib_example,node_checksum_tool toneAmber
class node_completion,node_snake toneMint
class node_thread_manager,node_worker_threads toneRose
class node_web_user,node_output_file,node_thread_user toneIndigo
```

## Components

### Network servers

- [WebSocket example](https://github.com/bvdberg/code/blob/master/websocket-server/main.cpp): `websocket-server/main.cpp`
- [WebSocket server](https://github.com/bvdberg/code/blob/master/websocket-server/WebSocketServer.cpp): `websocket-server/WebSocketServer.cpp`
- [io_uring echo server](https://github.com/bvdberg/code/blob/master/linux/io_uring_server/main.c): `linux/io_uring_server/main.c`

### File utilities

- [ELF inspector](https://github.com/bvdberg/code/blob/master/elf_format/main.c): `elf_format/main.c`
- [Multiboot inspector](https://github.com/bvdberg/code/blob/master/multiboot/main.c): `multiboot/main.c`
- [UBI image tool](https://github.com/bvdberg/code/blob/master/linux/ubi_parser/main.c): `linux/ubi_parser/main.c`
- [Gzip extractor](https://github.com/bvdberg/code/blob/master/unzip/main.c): `unzip/main.c`
- [miniz inflater](https://github.com/bvdberg/code/blob/master/unzip/miniz/miniz_tinfl.c): `unzip/miniz/miniz_tinfl.c`
- [zlib example](https://github.com/bvdberg/code/blob/master/zlib/main.c): `zlib/main.c`
- [MD5 checksum tool](https://github.com/bvdberg/code/blob/master/linux/md5sum/main.c): `linux/md5sum/main.c`

### Interactive demos

- [Word completion](https://github.com/bvdberg/code/blob/master/auto_completion/main.cpp): `auto_completion/main.cpp`
- [Snake puzzle solver](https://github.com/bvdberg/code/blob/master/snake_game/main.c): `snake_game/main.c`

### Concurrency demo

- [Thread manager](https://github.com/bvdberg/code/blob/master/linux/pthread-cleanup/Manager.cpp): `linux/pthread-cleanup/Manager.cpp`
- [Worker threads](https://github.com/bvdberg/code/blob/master/linux/pthread-cleanup/Manager.cpp): `linux/pthread-cleanup/Manager.cpp`

### Other components

- **WebSocket peer**
- **TCP client**
- **File-tool user**
- **Output file**
- **Terminal user**
- **Program caller**

## Connections

- WebSocket peer → WebSocket server: connects
- WebSocket example → WebSocket server: steps server
- WebSocket server → WebSocket peer: sends frames
- TCP client → io_uring echo server: sends data
- io_uring echo server → TCP client: echoes data
- File-tool user → ELF inspector: selects file
- ELF inspector → File-tool user: prints ELF details
- File-tool user → Multiboot inspector: selects file
- Multiboot inspector → File-tool user: prints tag details
- File-tool user → UBI image tool: selects image
- UBI image tool → File-tool user: shows or flashes
- File-tool user → Gzip extractor: selects archive
- Gzip extractor → miniz inflater: decompresses payload
- Gzip extractor → Output file: writes extracted data
- File-tool user → zlib example: runs example
- File-tool user → MD5 checksum tool: selects file
- MD5 checksum tool → File-tool user: prints digest
- Terminal user → Word completion: types input
- Word completion → Terminal user: shows matches
- Terminal user → Snake puzzle solver: starts solver
- Snake puzzle solver → Terminal user: prints solutions
- Program caller → Thread manager: starts or stops
- Thread manager → Worker threads: creates and joins
