# saimahmt03/buyingtool architecture

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

- Interactive diagram: https://gitdiagram.com/saimahmt03/buyingtool
- Repository: https://github.com/saimahmt03/buyingtool

## Overview

BuyingTool is an ASP.NET buying-planning application backed by configurable database providers and stored procedures. Its visible API workflow serves user-specific filter data through controllers, a service-layer cache, and the repository; the service also exposes planning, calculation, summary, store-breakdown, size-curve, and export operations. The view tree documents those product areas, but the available excerpts do not show how most views invoke the service or how each feature is routed, so those links are omitted. The README is empty.

Main entry points: [`BuyingTool/Repository/DBContext.cs`](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Repository/DBContext.cs) (Database repository), [`BuyingTool/Services/Service.cs`](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Services/Service.cs) (Application service), [`BuyingTool/Data/DatabaseConnection.cs`](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Data/DatabaseConnection.cs) (Connection factory), [`BuyingTool/Logs/LogHelper.cs`](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Logs/LogHelper.cs) (Log helper)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_filters_api["Filter APIs"]
  node_organization_api["Organization API"]
  node_required_api["Required API"]
  node_filter_views["Filter interface"]
end

subgraph group_features["Buying workflows"]
  node_plan_view["Plan periods"]
  node_gallery_view["Option gallery"]
  node_main_view["Buying workspace<br/>[Main.cshtml]"]
  node_summary_view["Review summary"]
  node_site_view["Site details"]
  node_size_view["Size curve<br/>[SizeCurve.cshtml]"]
  node_export_view["Export<br/>[Export.cshtml]"]
  node_monitor_view["Alloc monitoring<br/>[Monitoring.cshtml]"]
  node_service["Application service<br/>[Service.cs]"]
  node_service_helper["Table and export helpers<br/>[ServiceHelper.cs]"]
end

subgraph group_data["Data access"]
  node_repository["Database repository<br/>[DBContext.cs]"]
  node_database[("Configured database")]
  node_connection["Connection factory"]
  node_provider["Provider selection"]
  node_parameters["SQL parameters"]
  node_procedures["Stored procedures"]
end

subgraph group_support["Shared support"]
  node_app_settings["Application settings<br/>[AppSettings.cs]"]
  node_logging["Database logging<br/>[Log.cs]"]
  node_errors["Error messages<br/>[ErrorMessage.cs]"]
  node_log_helper["Log helper<br/>[LogHelper.cs]"]
end

node_user(("User"))

node_user -->|"requests filters"| node_filters_api
node_filters_api -->|"gets attributes"| node_service
node_organization_api -->|"gets organizations"| node_service
node_required_api -->|"gets requirements"| node_service
node_service -->|"queries data"| node_repository
node_service -->|"formats tables"| node_service_helper
node_repository -->|"opens connections"| node_connection
node_connection -->|"selects provider"| node_provider
node_repository -->|"creates parameters"| node_parameters
node_repository -->|"executes procedures"| node_procedures
node_repository -->|"queries database"| node_database
node_connection -->|"reads configuration"| node_app_settings
node_repository -->|"records activity"| node_logging
node_repository -->|"uses error labels"| node_errors
node_log_helper -->|"reads configuration"| node_app_settings
node_log_helper -->|"uses log models"| node_logging

click node_filters_api "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Controllers/AttributeFiltersController.cs"
click node_organization_api "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Controllers/OrganizationFiltersController.cs"
click node_required_api "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Controllers/RequiredFiltersController.cs"
click node_filter_views "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/SetFiltersWindow.cshtml"
click node_plan_view "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/SetFiltersWindow.cshtml"
click node_gallery_view "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/SetFiltersWindow.cshtml"
click node_main_view "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/Main.cshtml"
click node_summary_view "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/ReviewSummary.cshtml"
click node_site_view "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/ReviewSiteDetails.cshtml"
click node_size_view "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/SizeCurve.cshtml"
click node_export_view "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/Export.cshtml"
click node_monitor_view "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/Monitoring.cshtml"
click node_service "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Services/Service.cs"
click node_service_helper "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Services/ServiceHelper.cs"
click node_repository "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Repository/DBContext.cs"
click node_connection "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Data/DatabaseConnection.cs"
click node_provider "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Data/DatabaseProviderFactory.cs"
click node_parameters "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Data/DatabaseParameterHelper.cs"
click node_procedures "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Shared/StoredProcedures.cs"
click node_app_settings "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Shared/AppSettings.cs"
click node_logging "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Shared/Log.cs"
click node_errors "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Logs/ErrorMessage.cs"
click node_log_helper "https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Logs/LogHelper.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_filters_api,node_organization_api,node_required_api,node_filter_views,node_user toneBlue
class node_plan_view,node_gallery_view,node_main_view,node_summary_view,node_site_view,node_size_view,node_export_view,node_monitor_view,node_service,node_service_helper toneAmber
class node_repository,node_database,node_connection,node_provider,node_parameters,node_procedures toneMint
class node_app_settings,node_logging,node_errors,node_log_helper toneRose
```

## Components

### Web interface

- [Filter APIs](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Controllers/AttributeFiltersController.cs): `BuyingTool/Controllers/AttributeFiltersController.cs`
- [Organization API](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Controllers/OrganizationFiltersController.cs): `BuyingTool/Controllers/OrganizationFiltersController.cs`
- [Required API](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Controllers/RequiredFiltersController.cs): `BuyingTool/Controllers/RequiredFiltersController.cs`
- [Filter interface](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/SetFiltersWindow.cshtml): `BuyingTool/Pages/Component/SetFiltersWindow.cshtml`

### Buying workflows

- [Plan periods](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/SetFiltersWindow.cshtml): `BuyingTool/Pages/Component/SetFiltersWindow.cshtml`
- [Option gallery](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/SetFiltersWindow.cshtml): `BuyingTool/Pages/Component/SetFiltersWindow.cshtml`
- [Buying workspace](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/Main.cshtml): `BuyingTool/Pages/Component/Main.cshtml`
- [Review summary](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/ReviewSummary.cshtml): `BuyingTool/Pages/Component/ReviewSummary.cshtml`
- [Site details](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/ReviewSiteDetails.cshtml): `BuyingTool/Pages/Component/ReviewSiteDetails.cshtml`
- [Size curve](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/SizeCurve.cshtml): `BuyingTool/Pages/Component/SizeCurve.cshtml`
- [Export](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/Export.cshtml): `BuyingTool/Pages/Component/Export.cshtml`
- [Alloc monitoring](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Pages/Component/Monitoring.cshtml): `BuyingTool/Pages/Component/Monitoring.cshtml`
- [Application service](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Services/Service.cs): `BuyingTool/Services/Service.cs`
- [Table and export helpers](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Services/ServiceHelper.cs): `BuyingTool/Services/ServiceHelper.cs`

### Data access

- [Database repository](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Repository/DBContext.cs): `BuyingTool/Repository/DBContext.cs`
- **Configured database**
- [Connection factory](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Data/DatabaseConnection.cs): `BuyingTool/Data/DatabaseConnection.cs`
- [Provider selection](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Data/DatabaseProviderFactory.cs): `BuyingTool/Data/DatabaseProviderFactory.cs`
- [SQL parameters](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Data/DatabaseParameterHelper.cs): `BuyingTool/Data/DatabaseParameterHelper.cs`
- [Stored procedures](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Shared/StoredProcedures.cs): `BuyingTool/Shared/StoredProcedures.cs`

### Shared support

- [Application settings](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Shared/AppSettings.cs): `BuyingTool/Shared/AppSettings.cs`
- [Database logging](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Shared/Log.cs): `BuyingTool/Shared/Log.cs`
- [Error messages](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Logs/ErrorMessage.cs): `BuyingTool/Logs/ErrorMessage.cs`
- [Log helper](https://github.com/saimahmt03/buyingtool/blob/main/BuyingTool/Logs/LogHelper.cs): `BuyingTool/Logs/LogHelper.cs`

### Other components

- **User**

## Connections

- User → Filter APIs: requests filters (evidence: `BuyingTool/Controllers/AttributeFiltersController.cs`)
- Filter APIs → Application service: gets attributes (evidence: `BuyingTool/Controllers/AttributeFiltersController.cs`)
- Organization API → Application service: gets organizations (evidence: `BuyingTool/Controllers/OrganizationFiltersController.cs`)
- Required API → Application service: gets requirements (evidence: `BuyingTool/Controllers/RequiredFiltersController.cs`)
- Application service → Database repository: queries data (evidence: `BuyingTool/Services/Service.cs`)
- Application service → Table and export helpers: formats tables (evidence: `BuyingTool/Services/Service.cs`)
- Database repository → Connection factory: opens connections (evidence: `BuyingTool/Repository/DBContext.cs`)
- Connection factory → Provider selection: selects provider (evidence: `BuyingTool/Data/DatabaseConnection.cs`)
- Database repository → SQL parameters: creates parameters (evidence: `BuyingTool/Repository/DBContext.cs`)
- Database repository → Stored procedures: executes procedures (evidence: `BuyingTool/Repository/DBContext.cs`)
- Database repository → Configured database: queries database (evidence: `BuyingTool/Repository/DBContext.cs`)
- Connection factory → Application settings: reads configuration (evidence: `BuyingTool/Data/DatabaseConnection.cs`)
- Database repository → Database logging: records activity (evidence: `BuyingTool/Repository/DBContext.cs`)
- Database repository → Error messages: uses error labels (evidence: `BuyingTool/Repository/DBContext.cs`)
- Log helper → Application settings: reads configuration (evidence: `BuyingTool/Logs/LogHelper.cs`)
- Log helper → Database logging: uses log models (evidence: `BuyingTool/Logs/LogHelper.cs`)
