# serkan-kilic/erpprogram architecture

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

- Interactive diagram: https://gitdiagram.com/serkan-kilic/erpprogram
- Repository: https://github.com/serkan-kilic/erpprogram

## Overview

This is a Windows Forms inventory and order-management application backed by PostgreSQL. The user workflow starts at the login screen, proceeds to the home navigation and domain forms, and includes customer/item management, stock handling, order entry, and stock reservations. OrderForm explicitly invokes order services and opens the reservation form; the generic business manager validates and delegates CRUD operations to repositories. The excerpts do not show login behavior or most individual managers, so those internal relationships are omitted; form navigation and service wiring use the source index where noted.

Main entry points: [`UI/Program.cs`](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Program.cs) (Application Startup), [`UI/Forms/OrderForm.cs`](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/OrderForm.cs) (Order Entry), [`DataAccess/Context/AppDbContext.cs`](https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Context/AppDbContext.cs) (Database Context), [`UI/Forms/HomeForm.cs`](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/HomeForm.cs) (Home Navigation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop UI"]
  node_program["Application Startup<br/>[Program.cs]"]
  node_login["Login Screen<br/>[LoginForm.cs]"]
  node_home["Home Navigation<br/>[HomeForm.cs]"]
  node_customers_ui["Customer Management<br/>[CustomerForm.cs]"]
  node_items_ui["Item Management"]
  node_stock_ui["Stock Management<br/>[StockForm.cs]"]
  node_orders_ui["Order Entry<br/>[OrderForm.cs]"]
  node_reservation_ui["Stock Reservations<br/>[OrderStockForm.cs]"]
end

subgraph group_business["Business Services"]
  node_customer_service["Customer Services<br/>[CustomerManager.cs]"]
  node_item_service["Item Services<br/>[ItemManager.cs]"]
  node_stock_service["Stock Services"]
  node_order_service["Order Services<br/>[OrderManager.cs]"]
  node_line_service["Order Line Services"]
  node_generic_manager["Generic CRUD<br/>[GenericManager.cs]"]
end

subgraph group_data["Persistence"]
  node_customer_repo["Customer Repository"]
  node_item_repo["Item Repository"]
  node_generic_repo["EF CRUD Repository"]
  node_db_context["Database Context<br/>[AppDbContext.cs]"]
end

subgraph group_domain["Domain Data"]
  node_entities["Business Entities"]
end

node_user(("User"))
node_database[("PostgreSQL Database")]

node_user -->|"starts"| node_program
node_program -->|"launches"| node_login
node_home -->|"opens"| node_customers_ui
node_home -->|"opens"| node_items_ui
node_home -->|"opens"| node_stock_ui
node_home -->|"opens"| node_orders_ui
node_orders_ui -->|"calls"| node_order_service
node_orders_ui -->|"calls"| node_customer_service
node_orders_ui -->|"calls"| node_item_service
node_orders_ui -->|"calls"| node_line_service
node_orders_ui -->|"calls"| node_stock_service
node_orders_ui -->|"opens"| node_reservation_ui
node_reservation_ui -->|"uses"| node_stock_service
node_reservation_ui -->|"uses"| node_line_service
node_reservation_ui -->|"uses"| node_item_service
node_program -->|"registers"| node_db_context
node_program -->|"registers"| node_customer_service
node_program -->|"registers"| node_item_service
node_program -->|"registers"| node_stock_service
node_program -->|"registers"| node_order_service
node_program -->|"registers"| node_line_service
node_customer_service -->|"delegates"| node_customer_repo
node_item_service -->|"delegates"| node_item_repo
node_order_service -->|"inherits"| node_generic_manager
node_line_service -->|"inherits"| node_generic_manager
node_generic_manager -->|"delegates"| node_generic_repo
node_customer_repo -->|"queries"| node_db_context
node_item_repo -->|"queries"| node_db_context
node_generic_repo -->|"reads and writes"| node_db_context
node_db_context -->|"maps"| node_entities
node_db_context -->|"connects"| node_database

click node_program "https://github.com/serkan-kilic/erpprogram/blob/main/UI/Program.cs"
click node_login "https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/LoginForm.cs"
click node_home "https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/HomeForm.cs"
click node_customers_ui "https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/CustomerForm.cs"
click node_items_ui "https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/ItemManagementForm.cs"
click node_stock_ui "https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/StockForm.cs"
click node_orders_ui "https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/OrderForm.cs"
click node_reservation_ui "https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/OrderStockForm.cs"
click node_customer_service "https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/CustomerManager.cs"
click node_item_service "https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/ItemManager.cs"
click node_stock_service "https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/StockOnHandManager.cs"
click node_order_service "https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/OrderManager.cs"
click node_line_service "https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/OrderLineManager.cs"
click node_generic_manager "https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/GenericManager.cs"
click node_customer_repo "https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Concrete/EfCustomerRepository.cs"
click node_item_repo "https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Concrete/EfItemRepository.cs"
click node_generic_repo "https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Concrete/EfGenericRepository.cs"
click node_db_context "https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Context/AppDbContext.cs"
click node_entities "https://github.com/serkan-kilic/erpprogram/tree/main/Entities/Concrete"

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_program,node_login,node_home,node_customers_ui,node_items_ui,node_stock_ui,node_orders_ui,node_reservation_ui,node_user toneBlue
class node_customer_service,node_item_service,node_stock_service,node_order_service,node_line_service,node_generic_manager,node_database toneAmber
class node_customer_repo,node_item_repo,node_generic_repo,node_db_context toneMint
class node_entities toneRose
```

## Components

### Desktop UI

- [Application Startup](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Program.cs): `UI/Program.cs`
- [Login Screen](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/LoginForm.cs): `UI/Forms/LoginForm.cs`
- [Home Navigation](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/HomeForm.cs): `UI/Forms/HomeForm.cs`
- [Customer Management](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/CustomerForm.cs): `UI/Forms/CustomerForm.cs`
- [Item Management](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/ItemManagementForm.cs): `UI/Forms/ItemManagementForm.cs`
- [Stock Management](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/StockForm.cs): `UI/Forms/StockForm.cs`
- [Order Entry](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/OrderForm.cs): `UI/Forms/OrderForm.cs`
- [Stock Reservations](https://github.com/serkan-kilic/erpprogram/blob/main/UI/Forms/OrderStockForm.cs): `UI/Forms/OrderStockForm.cs`

### Business Services

- [Customer Services](https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/CustomerManager.cs): `Business/Concrete/CustomerManager.cs`
- [Item Services](https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/ItemManager.cs): `Business/Concrete/ItemManager.cs`
- [Stock Services](https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/StockOnHandManager.cs): `Business/Concrete/StockOnHandManager.cs`
- [Order Services](https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/OrderManager.cs): `Business/Concrete/OrderManager.cs`
- [Order Line Services](https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/OrderLineManager.cs): `Business/Concrete/OrderLineManager.cs`
- [Generic CRUD](https://github.com/serkan-kilic/erpprogram/blob/main/Business/Concrete/GenericManager.cs): `Business/Concrete/GenericManager.cs`

### Persistence

- [Customer Repository](https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Concrete/EfCustomerRepository.cs): `DataAccess/Concrete/EfCustomerRepository.cs`
- [Item Repository](https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Concrete/EfItemRepository.cs): `DataAccess/Concrete/EfItemRepository.cs`
- [EF CRUD Repository](https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Concrete/EfGenericRepository.cs): `DataAccess/Concrete/EfGenericRepository.cs`
- [Database Context](https://github.com/serkan-kilic/erpprogram/blob/main/DataAccess/Context/AppDbContext.cs): `DataAccess/Context/AppDbContext.cs`

### Domain Data

- [Business Entities](https://github.com/serkan-kilic/erpprogram/tree/main/Entities/Concrete): `Entities/Concrete`

### Other components

- **User**
- **PostgreSQL Database**

## Connections

- User → Application Startup: starts (evidence: `UI/Program.cs`)
- Application Startup → Login Screen: launches (evidence: `UI/Program.cs`)
- Home Navigation → Customer Management: opens (evidence: `UI/Forms/HomeForm.cs`)
- Home Navigation → Item Management: opens (evidence: `UI/Forms/HomeForm.cs`)
- Home Navigation → Stock Management: opens (evidence: `UI/Forms/HomeForm.cs`)
- Home Navigation → Order Entry: opens (evidence: `UI/Forms/HomeForm.cs`)
- Order Entry → Order Services: calls (evidence: `UI/Forms/OrderForm.cs`)
- Order Entry → Customer Services: calls (evidence: `UI/Forms/OrderForm.cs`)
- Order Entry → Item Services: calls (evidence: `UI/Forms/OrderForm.cs`)
- Order Entry → Order Line Services: calls (evidence: `UI/Forms/OrderForm.cs`)
- Order Entry → Stock Services: calls (evidence: `UI/Forms/OrderForm.cs`)
- Order Entry → Stock Reservations: opens (evidence: `UI/Forms/OrderForm.cs`)
- Stock Reservations → Stock Services: uses (evidence: `UI/Forms/OrderStockForm.cs`)
- Stock Reservations → Order Line Services: uses (evidence: `UI/Forms/OrderStockForm.cs`)
- Stock Reservations → Item Services: uses (evidence: `UI/Forms/OrderStockForm.cs`)
- Application Startup → Database Context: registers (evidence: `UI/Program.cs`)
- Application Startup → Customer Services: registers (evidence: `UI/Program.cs`)
- Application Startup → Item Services: registers (evidence: `UI/Program.cs`)
- Application Startup → Stock Services: registers (evidence: `UI/Program.cs`)
- Application Startup → Order Services: registers (evidence: `UI/Program.cs`)
- Application Startup → Order Line Services: registers (evidence: `UI/Program.cs`)
- Customer Services → Customer Repository: delegates (evidence: `Business/Concrete/CustomerManager.cs`)
- Item Services → Item Repository: delegates (evidence: `Business/Concrete/ItemManager.cs`)
- Order Services → Generic CRUD: inherits (evidence: `Business/Concrete/OrderManager.cs`)
- Order Line Services → Generic CRUD: inherits (evidence: `Business/Concrete/OrderLineManager.cs`)
- Generic CRUD → EF CRUD Repository: delegates (evidence: `Business/Concrete/GenericManager.cs`)
- Customer Repository → Database Context: queries (evidence: `DataAccess/Concrete/EfCustomerRepository.cs`)
- Item Repository → Database Context: queries (evidence: `DataAccess/Concrete/EfItemRepository.cs`)
- EF CRUD Repository → Database Context: reads and writes (evidence: `DataAccess/Concrete/EfGenericRepository.cs`)
- Database Context → Business Entities: maps (evidence: `DataAccess/Context/AppDbContext.cs`)
- Database Context → PostgreSQL Database: connects (evidence: `DataAccess/Context/AppDbContext.cs`)
