# 27044-sanjeevi/csharp-assignments-jul-2026 architecture

> Architecture diagram of the GitHub repository 27044-sanjeevi/csharp-assignments-jul-2026, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/27044-sanjeevi/csharp-assignments-jul-2026
- Repository: https://github.com/27044-sanjeevi/csharp-assignments-jul-2026

## Overview

#### Purpose and Topology
This is a C# starter repository containing three independent console-assignment applications: contact management, OOP demonstrations, and inventory management. The root solution, `CSharp_Assignments.sln`, is the primary development entry point; each assignment also has its own executable project and `Program.cs`.

#### Runtime Entry and Application Bootstrap
Each application starts in its project entry point, then delegates to an application runner/controller flow:
- `src/BasicContactManagerAssignment1/Program.cs`
- `src/Assignment2BasicsOfOOPs/Program.cs`
- `src/Assignment3InventoryManagement/Program.cs`

`ApplicationRunner.cs` exists in assignments 2 and 3 as a likely composition/bootstrap boundary:
- `src/Assignment2BasicsOfOOPs/ApplicationRunner.cs`
- `src/Assignment3InventoryManagement/ApplicationRunner.cs`

The material runtime is .NET/C# console applications; no web runtime, database, or remote service is represented in the tree.

#### Console Presentation and Control Flow
All assignments follow an interactive console architecture: console I/O and views collect/display user-facing data, controllers coordinate commands and navigation, and services perform domain operations.
- `src/Assignment3InventoryManagement/View/ConsoleView.cs`
- `src/Assignment3InventoryManagement/Controller/MainController.cs`
- `src/Assignment3InventoryManagement/IO/IConsoleIO.cs`

The control boundary is deliberately explicit: UI-facing classes should not own persistence or domain rules, while controllers/services mediate those interactions.

#### Contact Management Domain
Assignment 1 implements a basic contact-management flow. The controller coordinates the console UI, validation, manager service, and repository around `ContactInfo`.
- `src/BasicContactManagerAssignment1/Controller/ContactController.cs`
- `src/BasicContactManagerAssignment1/Services/ContactManager.cs`
- `src/BasicContactManagerAssignment1/Models/ContactInfo.cs`

Persistence is abstracted as a repository implementation, creating a separate storage boundary even though no external database provider is visible:
- `src/BasicContactManagerAssignment1/Persistence/Repository.cs`
- `src/BasicContactManagerAssignment1/Validation/ContactValidator.cs`

#### OOP Demonstration Domain
Assignment 2 groups three domains—bank accounts, employees, and shapes—under a main controller and separate domain controllers/services. It is structured to exercise inheritance/polymorphism and domain-specific validation.
- `src/Assignment2BasicsOfOOPs/Controller/MainController.cs`
- `src/Assignment2BasicsOfOOPs/Services/BankService.cs`
- `src/Assignment2BasicsOfOOPs/Models/BankAccount.cs`

Representative subtype hierarchies include account types, employee roles, and shapes:
- `src/Assignment2BasicsOfOOPs/Models/CheckingAccount.cs`
- `src/Assignment2BasicsOfOOPs/Models/Developer.cs`
- `src/Assignment2BasicsOfOOPs/Models/Shape.cs`

#### Inventory Management Pipeline
Assignment 3 is the most explicitly layered application. `MainController` drives user operations; `InventoryService` exposes inventory behavior through an interface; `Repository` supplies storage through `IRepository`; validation gates product input.
- `src/Assignment3InventoryManagement/Controller/MainController.cs`
- `src/Assignment3InventoryManagement/Services/IInventoryService.cs`
- `src/Assignment3InventoryManagement/Persistence/IRepository.cs`

Primary flow: console input → controller → validation/service → repository → `Product` results → console view. Sorting is modeled as a domain-level option:
- `src/Assignment3InventoryManagement/Models/Product.cs`
- `src/Assignment3InventoryManagement/Validation/IProductValidation.cs`
- `src/Assignment3InventoryManagement/Models/Enum/SortField.cs`

#### Quality and Delivery Infrastructure
GitHub Actions provides build/test/coverage automation:
- `.github/workflows/BuildTestCoverage.yml`

The repository reserves separated acceptance and unit-test roots, while contributor workflow emphasizes project-per-assignment development and pull requests:
- `tests/acceptance/Directory.Build.props`
- `tests/unit/Directory.Build.props`
- `README.md`

Main entry points: [`src/Assignment2BasicsOfOOPs/Controller/MainController.cs`](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Controller/MainController.cs) (OOP Main Controller), [`src/Assignment3InventoryManagement/Controller/MainController.cs`](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Controller/MainController.cs) (Inventory Main Controller), [`CSharp_Assignments.sln`](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/CSharp_Assignments.sln) (C# Assignments Solution), [`src/Assignment3InventoryManagement/View/ConsoleView.cs`](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/View/ConsoleView.cs) (Console View)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_a1["Assignment 1 · Contacts"]
  node_a1_program["Contact App Entry<br/>console entry<br/>[Program.cs]"]
  node_a1_controller["Contact Controller"]
  node_a1_validator["Contact Validator<br/>validation"]
  node_a1_service["Contact Manager<br/>[ContactManager.cs]"]
  node_a1_repo[("Contact Repository<br/>[Repository.cs]")]
  node_a1_contact["Contact Info<br/>domain model<br/>[ContactInfo.cs]"]
end

subgraph group_a2["Assignment 2 · OOP"]
  node_a2_program["OOP App Entry<br/>console entry<br/>[Program.cs]"]
  node_a2_runner["Application Runner<br/>bootstrap"]
  node_a2_controller["OOP Main Controller<br/>[MainController.cs]"]
  node_a2_bank_service["Bank Service<br/>domain service<br/>[BankService.cs]"]
  node_a2_account["Bank Account Hierarchy<br/>domain model<br/>[BankAccount.cs]"]
  node_a2_checking["Checking Account<br/>account subtype<br/>[CheckingAccount.cs]"]
  node_a2_developer["Developer Role<br/>employee subtype<br/>[Developer.cs]"]
  node_a2_shape["Shape Hierarchy<br/>polymorphic model<br/>[Shape.cs]"]
end

subgraph group_a3["Assignment 3 · Inventory"]
  node_a3_program["Inventory App Entry<br/>console entry<br/>[Program.cs]"]
  node_a3_runner["Application Runner<br/>bootstrap"]
  node_a3_view["Console View<br/>presentation<br/>[ConsoleView.cs]"]
  node_a3_io["Console I/O Contract<br/>I/O interface<br/>[IConsoleIO.cs]"]
  node_a3_controller["Inventory Main Controller<br/>[MainController.cs]"]
  node_a3_validation["Product Validation Contract<br/>validation interface"]
  node_a3_service["Inventory Service Contract<br/>service interface"]
  node_a3_repo[("Repository Contract<br/>repository interface<br/>[IRepository.cs]")]
  node_a3_product["Product<br/>domain model<br/>[Product.cs]"]
  node_a3_sort["Sort Field<br/>domain enum<br/>[SortField.cs]"]
end

subgraph group_delivery["Delivery"]
  node_ci["Build, Test &amp; Coverage<br/>GitHub Actions workflow"]
end

node_solution["C&#35; Assignments Solution"]

node_solution -->|"includes"| node_a1_program
node_solution -->|"includes"| node_a2_program
node_solution -->|"includes"| node_a3_program
node_a1_program -->|"starts"| node_a1_controller
node_a1_controller -->|"validates input"| node_a1_validator
node_a1_controller -->|"coordinates"| node_a1_service
node_a1_service -->|"persists contacts"| node_a1_repo
node_a1_service -->|"manages"| node_a1_contact
node_a2_program -->|"starts"| node_a2_runner
node_a2_runner -->|"composes"| node_a2_controller
node_a2_controller -->|"dispatches bank operations"| node_a2_bank_service
node_a2_bank_service -->|"operates on"| node_a2_account
node_a2_checking -.->|"inherits"| node_a2_account
node_a2_controller -->|"demonstrates roles"| node_a2_developer
node_a2_controller -->|"demonstrates polymorphism"| node_a2_shape
node_a3_program -->|"starts"| node_a3_runner
node_a3_runner -->|"composes"| node_a3_view
node_a3_view -->|"uses"| node_a3_io
node_a3_view -->|"sends commands"| node_a3_controller
node_a3_controller -->|"validates input"| node_a3_validation
node_a3_controller -->|"invokes"| node_a3_service
node_a3_service -->|"loads and saves"| node_a3_repo
node_a3_service -->|"manages"| node_a3_product
node_a3_controller -->|"selects sorting"| node_a3_sort
node_a3_product -->|"results displayed"| node_a3_view
node_ci -->|"builds and tests"| node_solution

click node_solution "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/CSharp_Assignments.sln"
click node_a1_program "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Program.cs"
click node_a1_controller "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Controller/ContactController.cs"
click node_a1_validator "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Validation/ContactValidator.cs"
click node_a1_service "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Services/ContactManager.cs"
click node_a1_repo "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Persistence/Repository.cs"
click node_a1_contact "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Models/ContactInfo.cs"
click node_a2_program "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Program.cs"
click node_a2_runner "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/ApplicationRunner.cs"
click node_a2_controller "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Controller/MainController.cs"
click node_a2_bank_service "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Services/BankService.cs"
click node_a2_account "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Models/BankAccount.cs"
click node_a2_checking "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Models/CheckingAccount.cs"
click node_a2_developer "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Models/Developer.cs"
click node_a2_shape "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Models/Shape.cs"
click node_a3_program "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Program.cs"
click node_a3_runner "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/ApplicationRunner.cs"
click node_a3_view "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/View/ConsoleView.cs"
click node_a3_io "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/IO/IConsoleIO.cs"
click node_a3_controller "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Controller/MainController.cs"
click node_a3_validation "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Validation/IProductValidation.cs"
click node_a3_service "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Services/IInventoryService.cs"
click node_a3_repo "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Persistence/IRepository.cs"
click node_a3_product "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Models/Product.cs"
click node_a3_sort "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Models/Enum/SortField.cs"
click node_ci "https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/.github/workflows/BuildTestCoverage.yml"

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_a1_program,node_a1_controller,node_a1_validator,node_a1_service,node_a1_repo,node_a1_contact toneBlue
class node_a2_program,node_a2_runner,node_a2_controller,node_a2_bank_service,node_a2_account,node_a2_checking,node_a2_developer,node_a2_shape toneAmber
class node_a3_program,node_a3_runner,node_a3_view,node_a3_io,node_a3_controller,node_a3_validation,node_a3_service,node_a3_repo,node_a3_product,node_a3_sort toneMint
class node_ci toneRose
class node_solution toneNeutral
```

## Components

### Assignment 1 · Contacts

- [Contact App Entry](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Program.cs): console entry · `src/BasicContactManagerAssignment1/Program.cs`
- [Contact Controller](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Controller/ContactController.cs): controller · `src/BasicContactManagerAssignment1/Controller/ContactController.cs`
- [Contact Validator](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Validation/ContactValidator.cs): validation · `src/BasicContactManagerAssignment1/Validation/ContactValidator.cs`
- [Contact Manager](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Services/ContactManager.cs): service · `src/BasicContactManagerAssignment1/Services/ContactManager.cs`
- [Contact Repository](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Persistence/Repository.cs): repository · Storage boundary without an external provider. · `src/BasicContactManagerAssignment1/Persistence/Repository.cs`
- [Contact Info](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/BasicContactManagerAssignment1/Models/ContactInfo.cs): domain model · `src/BasicContactManagerAssignment1/Models/ContactInfo.cs`

### Assignment 2 · OOP

- [OOP App Entry](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Program.cs): console entry · `src/Assignment2BasicsOfOOPs/Program.cs`
- [Application Runner](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/ApplicationRunner.cs): bootstrap · `src/Assignment2BasicsOfOOPs/ApplicationRunner.cs`
- [OOP Main Controller](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Controller/MainController.cs): controller · Coordinates bank, employee, and shape demonstrations. · `src/Assignment2BasicsOfOOPs/Controller/MainController.cs`
- [Bank Service](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Services/BankService.cs): domain service · `src/Assignment2BasicsOfOOPs/Services/BankService.cs`
- [Bank Account Hierarchy](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Models/BankAccount.cs): domain model · Base account with specialized account types. · `src/Assignment2BasicsOfOOPs/Models/BankAccount.cs`
- [Checking Account](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Models/CheckingAccount.cs): account subtype · `src/Assignment2BasicsOfOOPs/Models/CheckingAccount.cs`
- [Developer Role](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Models/Developer.cs): employee subtype · `src/Assignment2BasicsOfOOPs/Models/Developer.cs`
- [Shape Hierarchy](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment2BasicsOfOOPs/Models/Shape.cs): polymorphic model · `src/Assignment2BasicsOfOOPs/Models/Shape.cs`

### Assignment 3 · Inventory

- [Inventory App Entry](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Program.cs): console entry · `src/Assignment3InventoryManagement/Program.cs`
- [Application Runner](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/ApplicationRunner.cs): bootstrap · `src/Assignment3InventoryManagement/ApplicationRunner.cs`
- [Console View](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/View/ConsoleView.cs): presentation · `src/Assignment3InventoryManagement/View/ConsoleView.cs`
- [Console I/O Contract](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/IO/IConsoleIO.cs): I/O interface · `src/Assignment3InventoryManagement/IO/IConsoleIO.cs`
- [Inventory Main Controller](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Controller/MainController.cs): controller · `src/Assignment3InventoryManagement/Controller/MainController.cs`
- [Product Validation Contract](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Validation/IProductValidation.cs): validation interface · `src/Assignment3InventoryManagement/Validation/IProductValidation.cs`
- [Inventory Service Contract](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Services/IInventoryService.cs): service interface · `src/Assignment3InventoryManagement/Services/IInventoryService.cs`
- [Repository Contract](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Persistence/IRepository.cs): repository interface · `src/Assignment3InventoryManagement/Persistence/IRepository.cs`
- [Product](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Models/Product.cs): domain model · `src/Assignment3InventoryManagement/Models/Product.cs`
- [Sort Field](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/src/Assignment3InventoryManagement/Models/Enum/SortField.cs): domain enum · `src/Assignment3InventoryManagement/Models/Enum/SortField.cs`

### Delivery

- [Build, Test & Coverage](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/.github/workflows/BuildTestCoverage.yml): GitHub Actions workflow · `.github/workflows/BuildTestCoverage.yml`

### Other components

- [C# Assignments Solution](https://github.com/27044-sanjeevi/csharp-assignments-jul-2026/blob/main/CSharp_Assignments.sln): solution · Primary development entry point. · `CSharp_Assignments.sln`

## Connections

- C# Assignments Solution → Contact App Entry: includes
- C# Assignments Solution → OOP App Entry: includes
- C# Assignments Solution → Inventory App Entry: includes
- Contact App Entry → Contact Controller: starts
- Contact Controller → Contact Validator: validates input
- Contact Controller → Contact Manager: coordinates
- Contact Manager → Contact Repository: persists contacts
- Contact Manager → Contact Info: manages
- OOP App Entry → Application Runner: starts
- Application Runner → OOP Main Controller: composes
- OOP Main Controller → Bank Service: dispatches bank operations
- Bank Service → Bank Account Hierarchy: operates on
- Checking Account → Bank Account Hierarchy: inherits
- OOP Main Controller → Developer Role: demonstrates roles
- OOP Main Controller → Shape Hierarchy: demonstrates polymorphism
- Inventory App Entry → Application Runner: starts
- Application Runner → Console View: composes
- Console View → Console I/O Contract: uses
- Console View → Inventory Main Controller: sends commands
- Inventory Main Controller → Product Validation Contract: validates input
- Inventory Main Controller → Inventory Service Contract: invokes
- Inventory Service Contract → Repository Contract: loads and saves
- Inventory Service Contract → Product: manages
- Inventory Main Controller → Sort Field: selects sorting
- Product → Console View: results displayed
- Build, Test & Coverage → C# Assignments Solution: builds and tests
