# sunn4es/bsuir architecture

> Architecture diagram of the GitHub repository sunn4es/bsuir, 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/sunn4es/bsuir
- Repository: https://github.com/sunn4es/bsuir

## Overview

This is a collection of independent university coursework projects, not one integrated application. The sampled code supports several distinct workflows: file operations over HTTP, bank transactions, task management, proxy forwarding, and compiler exercises. The tree also contains many algorithm and desktop assignments, but the excerpts do not establish a shared runtime or wiring between them. Some bank dependencies are visible only as imports/calls, so their source paths are left null; other unsampled subsystem links are omitted.

Main entry points: [`7 semester/PISm/Project/backend/src/controllers/bankController.js`](https://github.com/sunn4es/bsuir/blob/main/7%20semester/PISm/Project/backend/src/controllers/bankController.js) (Bank controller), [`7 semester/SPP/lab2_3/server/server.js`](https://github.com/sunn4es/bsuir/blob/main/7%20semester/SPP/lab2_3/server/server.js) (Task API), [`4 semester/Coputer Systems and Networks/ProxyServer/ProxyServer/Program.cs`](https://github.com/sunn4es/bsuir/blob/main/4%20semester/Coputer%20Systems%20and%20Networks/ProxyServer/ProxyServer/Program.cs) (HTTP proxy), [`3 semester/Compiler Technologies/Lab1/Project/main.c`](https://github.com/sunn4es/bsuir/blob/main/3%20semester/Compiler%20Technologies/Lab1/Project/main.c) (Literal checker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_files["File Services"]
  node_rest["REST routes<br/>[Program.cs]"]
  node_file_storage["File operations<br/>[FileStorage.cs]"]
  node_filesystem[("Local filesystem")]
end

subgraph group_banking["Bank Backend"]
  node_bank_controller["Bank controller<br/>[bankController.js]"]
  node_db_pool[("Database pool")]
  node_ledger["Ledger service"]
  node_credit_schedule["Credit schedule"]
  node_bank_db[("Bank database")]
end

subgraph group_tasks["Task Service"]
  node_task_server["Task API<br/>[server.js]"]
  node_task_auth["Auth middleware<br/>[server.js]"]
  node_task_data[("In-memory tasks/users<br/>[server.js]")]
  node_web_client["Static client"]
end

subgraph group_network["Network Tools"]
  node_proxy["HTTP proxy<br/>[Program.cs]"]
end

subgraph group_compiler["Compiler Exercises"]
  node_literal_tool["Literal checker<br/>[main.c]"]
  node_source_text["Text input"]
  node_parser["Token parser<br/>[main.c]"]
  node_token_file["Token file"]
end

node_client(("API client"))
node_bank_user(("Bank operator"))
node_web_user(("Web user"))
node_proxy_client(("Proxy client"))
node_origin(("Origin server"))
node_compiler_user(("Compiler exercise user"))

node_client -->|"sends requests"| node_rest
node_rest -->|"dispatches operations"| node_file_storage
node_file_storage -->|"reads and writes"| node_filesystem
node_bank_user -->|"requests bank actions"| node_bank_controller
node_bank_controller -->|"queries and transacts"| node_db_pool
node_bank_controller -->|"posts entries"| node_ledger
node_bank_controller -->|"computes schedule"| node_credit_schedule
node_db_pool -->|"accesses"| node_bank_db
node_web_user -->|"uses task API"| node_task_server
node_task_server -->|"guards task routes"| node_task_auth
node_task_server -->|"reads and updates"| node_task_data
node_task_server -->|"serves static files"| node_web_client
node_proxy_client -->|"sends HTTP request"| node_proxy
node_proxy -->|"forwards request"| node_origin
node_origin -->|"returns response"| node_proxy
node_proxy -->|"relays response"| node_proxy_client
node_compiler_user -->|"provides input"| node_literal_tool
node_literal_tool -->|"reads or prompts"| node_source_text
node_literal_tool -->|"prints validation or literals"| node_compiler_user
node_parser -->|"reads tokens"| node_token_file
node_compiler_user -->|"runs parser"| node_parser
node_parser -->|"prints accept or reject"| node_compiler_user

click node_rest "https://github.com/sunn4es/bsuir/blob/main/4%20semester/Coputer%20Systems%20and%20Networks/REST_API/REST_API/Program.cs"
click node_file_storage "https://github.com/sunn4es/bsuir/blob/main/4%20semester/Coputer%20Systems%20and%20Networks/REST_API/REST_API/FileStorage/FileStorage.cs"
click node_bank_controller "https://github.com/sunn4es/bsuir/blob/main/7%20semester/PISm/Project/backend/src/controllers/bankController.js"
click node_task_server "https://github.com/sunn4es/bsuir/blob/main/7%20semester/SPP/lab2_3/server/server.js"
click node_task_auth "https://github.com/sunn4es/bsuir/blob/main/7%20semester/SPP/lab2_3/server/server.js"
click node_task_data "https://github.com/sunn4es/bsuir/blob/main/7%20semester/SPP/lab2_3/server/server.js"
click node_proxy "https://github.com/sunn4es/bsuir/blob/main/4%20semester/Coputer%20Systems%20and%20Networks/ProxyServer/ProxyServer/Program.cs"
click node_literal_tool "https://github.com/sunn4es/bsuir/blob/main/3%20semester/Compiler%20Technologies/Lab1/Project/main.c"
click node_parser "https://github.com/sunn4es/bsuir/blob/main/3%20semester/Compiler%20Technologies/Lab3/main.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_rest,node_file_storage,node_filesystem,node_client,node_web_user,node_proxy_client,node_compiler_user toneBlue
class node_bank_controller,node_db_pool,node_ledger,node_credit_schedule,node_bank_db toneAmber
class node_task_server,node_task_auth,node_task_data,node_web_client,node_origin toneMint
class node_proxy toneRose
class node_literal_tool,node_source_text,node_parser,node_token_file,node_bank_user toneIndigo
```

## Components

### File Services

- [REST routes](https://github.com/sunn4es/bsuir/blob/main/4%20semester/Coputer%20Systems%20and%20Networks/REST_API/REST_API/Program.cs): `4 semester/Coputer Systems and Networks/REST_API/REST_API/Program.cs`
- [File operations](https://github.com/sunn4es/bsuir/blob/main/4%20semester/Coputer%20Systems%20and%20Networks/REST_API/REST_API/FileStorage/FileStorage.cs): `4 semester/Coputer Systems and Networks/REST_API/REST_API/FileStorage/FileStorage.cs`
- **Local filesystem**

### Bank Backend

- [Bank controller](https://github.com/sunn4es/bsuir/blob/main/7%20semester/PISm/Project/backend/src/controllers/bankController.js): `7 semester/PISm/Project/backend/src/controllers/bankController.js`
- **Database pool**
- **Ledger service**
- **Credit schedule**
- **Bank database**

### Task Service

- [Task API](https://github.com/sunn4es/bsuir/blob/main/7%20semester/SPP/lab2_3/server/server.js): `7 semester/SPP/lab2_3/server/server.js`
- [Auth middleware](https://github.com/sunn4es/bsuir/blob/main/7%20semester/SPP/lab2_3/server/server.js): `7 semester/SPP/lab2_3/server/server.js`
- [In-memory tasks/users](https://github.com/sunn4es/bsuir/blob/main/7%20semester/SPP/lab2_3/server/server.js): `7 semester/SPP/lab2_3/server/server.js`
- **Static client**

### Network Tools

- [HTTP proxy](https://github.com/sunn4es/bsuir/blob/main/4%20semester/Coputer%20Systems%20and%20Networks/ProxyServer/ProxyServer/Program.cs): `4 semester/Coputer Systems and Networks/ProxyServer/ProxyServer/Program.cs`

### Compiler Exercises

- [Literal checker](https://github.com/sunn4es/bsuir/blob/main/3%20semester/Compiler%20Technologies/Lab1/Project/main.c): `3 semester/Compiler Technologies/Lab1/Project/main.c`
- **Text input**
- [Token parser](https://github.com/sunn4es/bsuir/blob/main/3%20semester/Compiler%20Technologies/Lab3/main.c): `3 semester/Compiler Technologies/Lab3/main.c`
- **Token file**

### Other components

- **API client**
- **Bank operator**
- **Web user**
- **Proxy client**
- **Origin server**
- **Compiler exercise user**

## Connections

- API client → REST routes: sends requests
- REST routes → File operations: dispatches operations
- File operations → Local filesystem: reads and writes
- Bank operator → Bank controller: requests bank actions
- Bank controller → Database pool: queries and transacts
- Bank controller → Ledger service: posts entries
- Bank controller → Credit schedule: computes schedule
- Database pool → Bank database: accesses
- Web user → Task API: uses task API
- Task API → Auth middleware: guards task routes
- Task API → In-memory tasks/users: reads and updates
- Task API → Static client: serves static files
- Proxy client → HTTP proxy: sends HTTP request
- HTTP proxy → Origin server: forwards request
- Origin server → HTTP proxy: returns response
- HTTP proxy → Proxy client: relays response
- Compiler exercise user → Literal checker: provides input
- Literal checker → Text input: reads or prompts
- Literal checker → Compiler exercise user: prints validation or literals
- Token parser → Token file: reads tokens
- Compiler exercise user → Token parser: runs parser
- Token parser → Compiler exercise user: prints accept or reject
