# emanuelmath/csharpconsoleprojects architecture

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

- Interactive diagram: https://gitdiagram.com/emanuelmath/csharpconsoleprojects
- Repository: https://github.com/emanuelmath/csharpconsoleprojects

## Overview

This repository is a portfolio of independent .NET console exercises, not one product with a shared runtime workflow. Users select and run an individual program; each then performs its own exercise, such as maze solving, file processing, task management, or finance tracking. The README describes the five broad project categories, and sampled source confirms a PostgreSQL-backed finance application with console, service, model, and persistence layers. Other projects are represented as standalone programs; their internal flows are omitted where excerpts do not establish them.

Main entry points: [`src/04_DataPersistence/HomeFinanceManager/Program.cs`](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Program.cs) (Finance console app), [`src/04_DataPersistence/HomeFinanceManager/Connection/AppDbContext.cs`](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Connection/AppDbContext.cs) (EF database context), [`src/04_DataPersistence/HomeFinanceManager/Services/CategoryService.cs`](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Services/CategoryService.cs) (Category service), [`src/04_DataPersistence/HomeFinanceManager/Services/ExpenseService.cs`](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Services/ExpenseService.cs) (Expense service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_logic["Logic and Algorithms"]
  node_async_maze["Async maze solver<br/>[Program.cs]"]
  node_maze_scorer["Dynamic maze scorer<br/>[Program.cs]"]
  node_transposer["Array transposer<br/>[Program.cs]"]
end

subgraph group_memory["Collections and Memory"]
  node_student_memory["In-memory student system<br/>[Program.cs]"]
end

subgraph group_files["File Processing"]
  node_book_reading["Book reading exercise<br/>[Program.cs]"]
  node_gas_stations["Gas station positions<br/>[Program.cs]"]
  node_steganography["Steganography tool<br/>[Program.cs]"]
  node_enrollment["Enrollment validator<br/>[Program.cs]"]
end

subgraph group_finance["Finance Manager"]
  node_finance_app["Finance console app<br/>[Program.cs]"]
  node_category_service["Category service<br/>[CategoryService.cs]"]
  node_category_interface["Category service contract"]
  node_expense_service["Expense service<br/>[ExpenseService.cs]"]
  node_expense_interface["Expense service contract<br/>[IExpenseService.cs]"]
  node_db_context["EF database context<br/>[AppDbContext.cs]"]
  node_category_model["Category model<br/>[Category.cs]"]
  node_expense_model["Expense model<br/>[Expense.cs]"]
end

subgraph group_challenges["Coding Challenges"]
  node_bank_queue["Bank queue challenge<br/>[Program.cs]"]
  node_employee_system["Employee management<br/>[Program.cs]"]
  node_json_tasks["JSON task manager<br/>[Program.cs]"]
  node_rpg_battle["RPG battle simulator<br/>[Program.cs]"]
  node_password_validator["Password validator<br/>[Program.cs]"]
  node_log_analyzer["Server log analyzer<br/>[Program.cs]"]
end

node_user(("Console user"))
node_postgres[("PostgreSQL database")]

node_user -->|"runs project"| node_async_maze
node_user -->|"runs project"| node_maze_scorer
node_user -->|"runs project"| node_transposer
node_user -->|"runs project"| node_student_memory
node_user -->|"runs project"| node_book_reading
node_user -->|"runs project"| node_gas_stations
node_user -->|"runs project"| node_steganography
node_user -->|"runs project"| node_enrollment
node_user -->|"runs project"| node_finance_app
node_user -->|"runs project"| node_bank_queue
node_user -->|"runs project"| node_employee_system
node_user -->|"runs project"| node_json_tasks
node_user -->|"runs project"| node_rpg_battle
node_user -->|"runs project"| node_password_validator
node_user -->|"runs project"| node_log_analyzer
node_finance_app -->|"calls"| node_category_service
node_finance_app -->|"uses contract"| node_category_interface
node_finance_app -->|"calls"| node_expense_service
node_finance_app -->|"uses contract"| node_expense_interface
node_category_service -->|"implements"| node_category_interface
node_category_service -->|"queries and saves"| node_db_context
node_category_service -->|"handles"| node_category_model
node_expense_service -->|"implements"| node_expense_interface
node_expense_service -->|"queries and saves"| node_db_context
node_expense_service -->|"handles"| node_expense_model
node_db_context -->|"maps entity"| node_category_model
node_db_context -->|"maps entity"| node_expense_model
node_db_context -->|"configures provider"| node_postgres
node_category_model -->|"relates expenses"| node_expense_model

click node_async_maze "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/01_LogicAndAlgorithms/AsyncMazeSolver/Program.cs"
click node_maze_scorer "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/01_LogicAndAlgorithms/DynamicMazeScorer/Program.cs"
click node_transposer "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/01_LogicAndAlgorithms/MultidimensionalArrayTransposer/Program.cs"
click node_student_memory "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/02_CollectionsAndMemory/StudentSystemStruct/Program.cs"
click node_book_reading "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/03_FileProcessing/BookReading/Program.cs"
click node_gas_stations "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/03_FileProcessing/GasStationsPosition/Program.cs"
click node_steganography "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/03_FileProcessing/SteganographyTool/Program.cs"
click node_enrollment "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/03_FileProcessing/StudentEnrollmentValidator/Program.cs"
click node_finance_app "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Program.cs"
click node_category_service "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Services/CategoryService.cs"
click node_category_interface "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Interfaces/ICategoryService.cs"
click node_expense_service "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Services/ExpenseService.cs"
click node_expense_interface "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Interfaces/IExpenseService.cs"
click node_db_context "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Connection/AppDbContext.cs"
click node_category_model "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Models/Category.cs"
click node_expense_model "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Models/Expense.cs"
click node_bank_queue "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/BankQueueController/Program.cs"
click node_employee_system "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/EmployeeManagementSystem/Program.cs"
click node_json_tasks "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/JsonTaskManager/Program.cs"
click node_rpg_battle "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/RpgBattleSimulator/Program.cs"
click node_password_validator "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/SecurePasswordValidator/Program.cs"
click node_log_analyzer "https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/ServerLogAnalyzer/Program.cs"

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_async_maze,node_maze_scorer,node_transposer,node_user toneBlue
class node_student_memory,node_postgres toneAmber
class node_book_reading,node_gas_stations,node_steganography,node_enrollment toneMint
class node_finance_app,node_category_service,node_category_interface,node_expense_service,node_expense_interface,node_db_context,node_category_model,node_expense_model toneRose
class node_bank_queue,node_employee_system,node_json_tasks,node_rpg_battle,node_password_validator,node_log_analyzer toneIndigo
```

## Components

### Logic and Algorithms

- [Async maze solver](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/01_LogicAndAlgorithms/AsyncMazeSolver/Program.cs): `src/01_LogicAndAlgorithms/AsyncMazeSolver/Program.cs`
- [Dynamic maze scorer](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/01_LogicAndAlgorithms/DynamicMazeScorer/Program.cs): `src/01_LogicAndAlgorithms/DynamicMazeScorer/Program.cs`
- [Array transposer](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/01_LogicAndAlgorithms/MultidimensionalArrayTransposer/Program.cs): `src/01_LogicAndAlgorithms/MultidimensionalArrayTransposer/Program.cs`

### Collections and Memory

- [In-memory student system](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/02_CollectionsAndMemory/StudentSystemStruct/Program.cs): `src/02_CollectionsAndMemory/StudentSystemStruct/Program.cs`

### File Processing

- [Book reading exercise](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/03_FileProcessing/BookReading/Program.cs): `src/03_FileProcessing/BookReading/Program.cs`
- [Gas station positions](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/03_FileProcessing/GasStationsPosition/Program.cs): `src/03_FileProcessing/GasStationsPosition/Program.cs`
- [Steganography tool](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/03_FileProcessing/SteganographyTool/Program.cs): `src/03_FileProcessing/SteganographyTool/Program.cs`
- [Enrollment validator](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/03_FileProcessing/StudentEnrollmentValidator/Program.cs): `src/03_FileProcessing/StudentEnrollmentValidator/Program.cs`

### Finance Manager

- [Finance console app](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Program.cs): `src/04_DataPersistence/HomeFinanceManager/Program.cs`
- [Category service](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Services/CategoryService.cs): `src/04_DataPersistence/HomeFinanceManager/Services/CategoryService.cs`
- [Category service contract](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Interfaces/ICategoryService.cs): `src/04_DataPersistence/HomeFinanceManager/Interfaces/ICategoryService.cs`
- [Expense service](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Services/ExpenseService.cs): `src/04_DataPersistence/HomeFinanceManager/Services/ExpenseService.cs`
- [Expense service contract](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Interfaces/IExpenseService.cs): `src/04_DataPersistence/HomeFinanceManager/Interfaces/IExpenseService.cs`
- [EF database context](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Connection/AppDbContext.cs): `src/04_DataPersistence/HomeFinanceManager/Connection/AppDbContext.cs`
- [Category model](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Models/Category.cs): `src/04_DataPersistence/HomeFinanceManager/Models/Category.cs`
- [Expense model](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/04_DataPersistence/HomeFinanceManager/Models/Expense.cs): `src/04_DataPersistence/HomeFinanceManager/Models/Expense.cs`

### Coding Challenges

- [Bank queue challenge](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/BankQueueController/Program.cs): `src/05_CodingChallenges/CSharpFundamentalsAssessment/BankQueueController/Program.cs`
- [Employee management](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/EmployeeManagementSystem/Program.cs): `src/05_CodingChallenges/CSharpFundamentalsAssessment/EmployeeManagementSystem/Program.cs`
- [JSON task manager](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/JsonTaskManager/Program.cs): `src/05_CodingChallenges/CSharpFundamentalsAssessment/JsonTaskManager/Program.cs`
- [RPG battle simulator](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/RpgBattleSimulator/Program.cs): `src/05_CodingChallenges/CSharpFundamentalsAssessment/RpgBattleSimulator/Program.cs`
- [Password validator](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/SecurePasswordValidator/Program.cs): `src/05_CodingChallenges/CSharpFundamentalsAssessment/SecurePasswordValidator/Program.cs`
- [Server log analyzer](https://github.com/emanuelmath/csharpconsoleprojects/blob/main/src/05_CodingChallenges/CSharpFundamentalsAssessment/ServerLogAnalyzer/Program.cs): `src/05_CodingChallenges/CSharpFundamentalsAssessment/ServerLogAnalyzer/Program.cs`

### Other components

- **Console user**
- **PostgreSQL database**

## Connections

- Console user → Async maze solver: runs project (evidence: `README.md`)
- Console user → Dynamic maze scorer: runs project (evidence: `README.md`)
- Console user → Array transposer: runs project (evidence: `README.md`)
- Console user → In-memory student system: runs project (evidence: `README.md`)
- Console user → Book reading exercise: runs project (evidence: `README.md`)
- Console user → Gas station positions: runs project (evidence: `README.md`)
- Console user → Steganography tool: runs project (evidence: `README.md`)
- Console user → Enrollment validator: runs project (evidence: `README.md`)
- Console user → Finance console app: runs project (evidence: `README.md`)
- Console user → Bank queue challenge: runs project (evidence: `README.md`)
- Console user → Employee management: runs project (evidence: `README.md`)
- Console user → JSON task manager: runs project (evidence: `README.md`)
- Console user → RPG battle simulator: runs project (evidence: `README.md`)
- Console user → Password validator: runs project (evidence: `README.md`)
- Console user → Server log analyzer: runs project (evidence: `README.md`)
- Finance console app → Category service: calls (evidence: `src/04_DataPersistence/HomeFinanceManager/Program.cs`)
- Finance console app → Category service contract: uses contract (evidence: `src/04_DataPersistence/HomeFinanceManager/Program.cs`)
- Finance console app → Expense service: calls (evidence: `src/04_DataPersistence/HomeFinanceManager/Program.cs`)
- Finance console app → Expense service contract: uses contract (evidence: `src/04_DataPersistence/HomeFinanceManager/Program.cs`)
- Category service → Category service contract: implements (evidence: `src/04_DataPersistence/HomeFinanceManager/Services/CategoryService.cs`)
- Category service → EF database context: queries and saves (evidence: `src/04_DataPersistence/HomeFinanceManager/Services/CategoryService.cs`)
- Category service → Category model: handles (evidence: `src/04_DataPersistence/HomeFinanceManager/Services/CategoryService.cs`)
- Expense service → Expense service contract: implements (evidence: `src/04_DataPersistence/HomeFinanceManager/Services/ExpenseService.cs`)
- Expense service → EF database context: queries and saves (evidence: `src/04_DataPersistence/HomeFinanceManager/Services/ExpenseService.cs`)
- Expense service → Expense model: handles (evidence: `src/04_DataPersistence/HomeFinanceManager/Services/ExpenseService.cs`)
- EF database context → Category model: maps entity (evidence: `src/04_DataPersistence/HomeFinanceManager/Connection/AppDbContext.cs`)
- EF database context → Expense model: maps entity (evidence: `src/04_DataPersistence/HomeFinanceManager/Connection/AppDbContext.cs`)
- EF database context → PostgreSQL database: configures provider (evidence: `src/04_DataPersistence/HomeFinanceManager/Connection/AppDbContext.cs`)
- Category model → Expense model: relates expenses (evidence: `src/04_DataPersistence/HomeFinanceManager/Models/Category.cs`)
