# a1doru/systems-exercises architecture

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

- Interactive diagram: https://gitdiagram.com/a1doru/systems-exercises
- Repository: https://github.com/a1doru/systems-exercises

## Overview

This repository is a collection of independent C exercises and small utilities, not a single integrated product. The sampled command-line programs accept text or filenames and emit transformed text; separate modules expose data-structure and domain APIs. The graph highlights those workflows and representative libraries. No README was provided, and most listed source files were not sampled, so their internal wiring and behavior are not inferred.

Main entry points: [`expand/expand.c`](https://github.com/a1doru/systems-exercises/blob/main/expand/expand.c) (Rule Expander), [`imagenames/imagenames.c`](https://github.com/a1doru/systems-exercises/blob/main/imagenames/imagenames.c) (Image Names), [`alpha/alpha.c`](https://github.com/a1doru/systems-exercises/blob/main/alpha/alpha.c) (Alpha Codec), [`tencode/tencode.c`](https://github.com/a1doru/systems-exercises/blob/main/tencode/tencode.c) (Word Encoder)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Text Utilities"]
  node_alpha["Alpha Codec<br/>[alpha.c]"]
  node_expander["Rule Expander<br/>[expand.c]"]
  node_image_names["Image Names<br/>[imagenames.c]"]
  node_word_encoder["Word Encoder<br/>[tencode.c]"]
  node_word_decoder["Word Decoder<br/>[tdecode.c]"]
  node_char_counter["Character Counter<br/>[countchars.c]"]
  node_line_length["Line Length<br/>[linelen.c]"]
  node_delimiter_tool["Delimiter Tool<br/>[openclose.c]"]
end

subgraph group_libs["Reusable Modules"]
  node_iterator["Text Iterator<br/>[iterator.c]"]
  node_record_io["Record Parser<br/>[rec_io.c]"]
  node_string_stack["String Stack<br/>[strstack.c]"]
  node_string_queue["String Queue<br/>[strqueue.c]"]
  node_string_list["String List<br/>[solved.c]"]
end

subgraph group_domain["Domain Modules"]
  node_process_search["Process Search<br/>[processes.c]"]
  node_process_cli["Process Example<br/>[main.c]"]
  node_rowing["Rowing Club<br/>[rowing.c]"]
  node_videos["Video Platform<br/>[videos.c]"]
end

node_user(("User"))
node_output(("Standard Output"))
node_rule_files["Rule Files"]
node_extension_file["Extension File"]
node_process_file["Process File"]

node_user -->|"provides input"| node_alpha
node_alpha -->|"writes encoded or decoded data"| node_output
node_user -->|"provides text"| node_expander
node_rule_files -->|"loads rules"| node_expander
node_expander -->|"writes expanded text"| node_output
node_user -->|"provides filenames"| node_image_names
node_extension_file -.->|"loads extensions"| node_image_names
node_image_names -->|"writes image names"| node_output
node_user -->|"provides text"| node_word_encoder
node_word_encoder -->|"writes encoded text"| node_output
node_user -->|"provides encoded text"| node_word_decoder
node_word_decoder -->|"writes decoded text"| node_output
node_user -->|"provides input"| node_char_counter
node_char_counter -->|"writes counts"| node_output
node_user -->|"provides input"| node_line_length
node_line_length -->|"writes measurements"| node_output
node_user -->|"provides input"| node_delimiter_tool
node_delimiter_tool -->|"writes transformed text"| node_output
node_process_cli -->|"queries processes"| node_process_search
node_process_file -->|"loads process data"| node_process_cli

click node_alpha "https://github.com/a1doru/systems-exercises/blob/main/alpha/alpha.c"
click node_expander "https://github.com/a1doru/systems-exercises/blob/main/expand/expand.c"
click node_image_names "https://github.com/a1doru/systems-exercises/blob/main/imagenames/imagenames.c"
click node_word_encoder "https://github.com/a1doru/systems-exercises/blob/main/tencode/tencode.c"
click node_word_decoder "https://github.com/a1doru/systems-exercises/blob/main/tdecode/tdecode.c"
click node_char_counter "https://github.com/a1doru/systems-exercises/blob/main/countchars/countchars.c"
click node_line_length "https://github.com/a1doru/systems-exercises/blob/main/linelen/linelen.c"
click node_delimiter_tool "https://github.com/a1doru/systems-exercises/blob/main/openclose/openclose.c"
click node_iterator "https://github.com/a1doru/systems-exercises/blob/main/iterator/iterator.c"
click node_record_io "https://github.com/a1doru/systems-exercises/blob/main/rec_io/rec_io.c"
click node_string_stack "https://github.com/a1doru/systems-exercises/blob/main/strstack/strstack.c"
click node_string_queue "https://github.com/a1doru/systems-exercises/blob/main/strqueue/strqueue.c"
click node_string_list "https://github.com/a1doru/systems-exercises/blob/main/icorsi/solved.c"
click node_process_search "https://github.com/a1doru/systems-exercises/blob/main/processes/processes.c"
click node_process_cli "https://github.com/a1doru/systems-exercises/blob/main/processes/main.c"
click node_rowing "https://github.com/a1doru/systems-exercises/blob/main/rowing/rowing.c"
click node_videos "https://github.com/a1doru/systems-exercises/blob/main/videos/videos.c"

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_alpha,node_expander,node_image_names,node_word_encoder,node_word_decoder,node_char_counter,node_line_length,node_delimiter_tool,node_user toneBlue
class node_iterator,node_record_io,node_string_stack,node_string_queue,node_string_list toneAmber
class node_process_search,node_process_cli,node_rowing,node_videos toneMint
class node_output,node_rule_files,node_extension_file,node_process_file toneIndigo
```

## Components

### Text Utilities

- [Alpha Codec](https://github.com/a1doru/systems-exercises/blob/main/alpha/alpha.c): `alpha/alpha.c`
- [Rule Expander](https://github.com/a1doru/systems-exercises/blob/main/expand/expand.c): `expand/expand.c`
- [Image Names](https://github.com/a1doru/systems-exercises/blob/main/imagenames/imagenames.c): `imagenames/imagenames.c`
- [Word Encoder](https://github.com/a1doru/systems-exercises/blob/main/tencode/tencode.c): `tencode/tencode.c`
- [Word Decoder](https://github.com/a1doru/systems-exercises/blob/main/tdecode/tdecode.c): `tdecode/tdecode.c`
- [Character Counter](https://github.com/a1doru/systems-exercises/blob/main/countchars/countchars.c): `countchars/countchars.c`
- [Line Length](https://github.com/a1doru/systems-exercises/blob/main/linelen/linelen.c): `linelen/linelen.c`
- [Delimiter Tool](https://github.com/a1doru/systems-exercises/blob/main/openclose/openclose.c): `openclose/openclose.c`

### Reusable Modules

- [Text Iterator](https://github.com/a1doru/systems-exercises/blob/main/iterator/iterator.c): `iterator/iterator.c`
- [Record Parser](https://github.com/a1doru/systems-exercises/blob/main/rec_io/rec_io.c): `rec_io/rec_io.c`
- [String Stack](https://github.com/a1doru/systems-exercises/blob/main/strstack/strstack.c): `strstack/strstack.c`
- [String Queue](https://github.com/a1doru/systems-exercises/blob/main/strqueue/strqueue.c): `strqueue/strqueue.c`
- [String List](https://github.com/a1doru/systems-exercises/blob/main/icorsi/solved.c): `icorsi/solved.c`

### Domain Modules

- [Process Search](https://github.com/a1doru/systems-exercises/blob/main/processes/processes.c): `processes/processes.c`
- [Process Example](https://github.com/a1doru/systems-exercises/blob/main/processes/main.c): `processes/main.c`
- [Rowing Club](https://github.com/a1doru/systems-exercises/blob/main/rowing/rowing.c): `rowing/rowing.c`
- [Video Platform](https://github.com/a1doru/systems-exercises/blob/main/videos/videos.c): `videos/videos.c`

### Other components

- **User**
- **Standard Output**
- **Rule Files**
- **Extension File**
- **Process File**

## Connections

- User → Alpha Codec: provides input
- Alpha Codec → Standard Output: writes encoded or decoded data
- User → Rule Expander: provides text
- Rule Files → Rule Expander: loads rules
- Rule Expander → Standard Output: writes expanded text
- User → Image Names: provides filenames
- Extension File → Image Names: loads extensions
- Image Names → Standard Output: writes image names
- User → Word Encoder: provides text
- Word Encoder → Standard Output: writes encoded text
- User → Word Decoder: provides encoded text
- Word Decoder → Standard Output: writes decoded text
- User → Character Counter: provides input
- Character Counter → Standard Output: writes counts
- User → Line Length: provides input
- Line Length → Standard Output: writes measurements
- User → Delimiter Tool: provides input
- Delimiter Tool → Standard Output: writes transformed text
- Process Example → Process Search: queries processes
- Process File → Process Example: loads process data
